agentsvc.io

services / iota-notarize

dataoperational · 1068 ms

IOTA Notarization (Proof of Existence)

Proof of existence on the IOTA mainnet: send text, a SHA-256 hash or a URL and get a tamper-proof timestamp. We store only the SHA-256 (never your content) in a locked notarization of the official IOTA Notarization package: it cannot be changed or transferred and its deletion is locked until 2106. Returns object id, transaction digest, ledger time and explorer links. Use for contracts, invoices, AI outputs, datasets, web page evidence or audit logs. Check later with iota-verify. Network fee included.

Run free trial ↗3 free calls per day with the example input. Paid: $0.010 USDC, no limit.

Call it

import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agentsvc.io/api/v1/proxy/iota-notarize", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({"text":"Invoice 2026-1042, total 1,250.00 EUR, issued 2026-10-11"}),
});
const { data, payment } = await res.json();  // payment.status "settling"; header X-Payment-Settle: sync returns payment.transaction

Input

FieldTypeDescription
textstringContent to notarize (hashed with SHA-256, max 1 MB)
hashstringSHA-256 hex of your file, alternative to text
urlstringNotarize the exact bytes this URL returns now (max 20 MB)
labelstringOptional public label stored with the proof, max 120 chars

Output

FieldTypeDescription
proofobject
sha256string
immutableboolean
explorerobject