78trust / 100

Notarize Batch

by notary.forgemesh.io in AI models & inference

x402 APIPassing, checked 58 min ago

Notarize AI output in bulk: one signed Ed25519 attestation of the model response per record for up to 20 AI inferences in a single call — same content hash, receipt token, and anchor status as single notarization, giving you a cryptographic receipt for inference across an entire audit-trail pipeline.

POST https://notary.forgemesh.io/api/notarize/batch

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
441 ms typical, 551 ms slowest 5%
Last check
58 min ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://notary.forgemesh.io/api/notarize/batch" \
  -H "content-type: application/json" \
  -d '{"records":[{"model_id":"openai/gpt-5","prompt":"What is 2+2?","response":"4"},{"model_id":"claude-fable-5","prompt":"Capital of France?","response":"Paris"}]}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fnotary.forgemesh.io%2Fapi%2Fnotarize%2Fbatch
const res = await pay("https://notary.forgemesh.io/api/notarize/batch", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"records":[{"model_id":"openai/gpt-5","prompt":"What is 2+2?","response":"4"},{"model_id":"claude-fable-5","prompt":"Capital of France?","response":"Paris"}]}),
});
console.log(await res.json());

Example input

{
  "records": [
    {
      "model_id": "openai/gpt-5",
      "prompt": "What is 2+2?",
      "response": "4"
    },
    {
      "model_id": "claude-fable-5",
      "prompt": "Capital of France?",
      "response": "Paris"
    }
  ]
}

Example output

{
  "attestations": [
    {
      "algorithm": "ed25519",
      "anchor": {
        "status": "pending"
      },
      "attestation_id": "att_0123456789abcdef01234567",
      "client_timestamp": "2026-07-03T12:00:00Z",
      "content_hash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "model_id": "openai/gpt-5",
      "notarized_at": "2026-07-03T12:00:01.000Z",
      "payload_stored": false,
      "receipt_token": "private-receipt-token",
      "receipt_url": "https://notary.forgemesh.io/api/receipt/att_0123456789abcdef01234567",
      "signature": "base64-ed25519-signature",
      "signer_pubkey": "base64-ed25519-public-key"
    }
  ],
  "count": 2
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
58 min agoPassed402437 ms$0.005
5 h agoPassed402551 ms$0.005
8 h agoPassed402426 ms$0.005
12 h agoPassed402559 ms$0.005
15 h agoPassed402484 ms$0.005
19 h agoPassed402408 ms$0.005
23 h agoPassed402479 ms$0.005
26 h agoPassed402410 ms$0.005
30 h agoPassed402432 ms$0.005
33 h agoPassed402445 ms$0.005
37 h agoPassed402510 ms$0.005
42 h agoPassed402441 ms$0.005