Skip to content

Batch attestation

POST /v1/attestations/batch
Authorization: Bearer fmk_...
Content-Type: application/json
{
"items": [
{ "type": "human", "content": "...", "contentType": "text/article" },
{ "type": "ai", "content": "...", "modelId": "claude-sonnet-4-6", "provider": "anthropic" }
]
}
  • Atomic. EAS doesn’t support partial multicall success: if any item fails resolver validation, the whole batch reverts. Validate inputs carefully before submitting.
  • Cap: 100 items per request. Larger batches push gas past Base’s per-tx limit and burn quota on revert.
  • Quota: 1 unit per item. A 50-item batch costs 50 attestations from your monthly on-chain bucket. The whole batch is rejected with 429 QUOTA_EXCEEDED if items.length exceeds your remaining quota.
  • Order preserved. The uids array in the response is in the same order as your input array.
{
"uids": ["0xabc...", "0xdef...", "..."],
"txHash": "0x...",
"verifyUrls": [
"https://verify.fidemark.dev/0xabc...",
"https://verify.fidemark.dev/0xdef...",
"..."
]
}

A batch of N items costs roughly (180k base + N × 200k) × gasPrice. At 100 items and typical Base fees (10 Mwei) that’s ~$0.45 vs ~$0.90 if issued sequentially. The savings grow with batch size.

For very high volume, consider off-chain attestations (SDK → Off-chain): mode: "offchain" per item is unmetered and zero gas, with the option to bring individual envelopes on-chain later.

CodeCause
INVALID_INPUTBody shape wrong, item missing required fields, or count > 100. Error message points at the failing item index.
QUOTA_EXCEEDEDitems.length exceeds remaining monthly quota.
VALIDATION_REJECTEDResolver rejected at least one item: the whole batch reverted on chain.