Webhooks
Payload Reference
Detailed payload schemas for each webhook event type.
Every webhook delivery wraps the event-specific data in a standard envelope:
json
{
"event": "<event_type>",
"timestamp": "2026-02-11T10:30:00.000Z",
"data": { ... }
}
Below are the full payload schemas for each event type.
delta.verified
The primary webhook event. Fired after each delta is independently verified. Contains the complete proof packet, original delta data, verification results, period summary, and usage information.
json
{
"event": "delta.verified",
"timestamp": "2026-02-11T10:30:12.456Z",
"data": {
"receiptId": "rcpt_a1b2c3d4e5f6",
"deltaIndex": 1042,
"status": "verified",
"verifiedAt": "2026-02-11T10:30:12.000Z",
"verificationId": "ver_x7y8z9",
"delta": {
"customerId": "cust_8xKj2m",
"amount": -42.50,
"reason": "usage_charge",
"referenceId": "inv_20260211_001",
"metadata": {
"plan": "growth",
"region": "us-east-1"
},
"submittedAt": "2026-02-11T10:30:00.000Z"
},
"proof": {
"proofHash": "0x8f3a9b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f",
"contentHash": "0x2d4e7f1a3b5c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
"itemHashes": [
"0x2d4e7f1a3b5c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
"0x9f1a3c5e7b2d4f6a8c0e1b3d5f7a9c2e4b6d8f0a1c3e5b7d9f2a4c6e8b0d1f"
],
"previousProofHash": "0x1c7b2e4a6d8f0b3c5e7a9d1f3b5c7e9a2d4f6b8c0e2a4d6f8b1c3e5a7d9f0b"
},
"verification": {
"verified": true,
"latencyMs": 1204,
"discrepancies": []
},
"period": {
"id": "per_2026_02",
"deltaCount": 1042,
"netDelta": -15780.25
},
"usage": {
"plan": "growth",
"includedDeltas": 10000,
"consumedDeltas": 1042,
"remainingDeltas": 8958,
"overageRate": 0.02
}
}
}
Field Reference
Top-level fields
| Field | Type | Description |
|---|---|---|
receiptId | string | Unique identifier for this verified delta |
deltaIndex | integer | Global sequence number for this delta |
status | string | Verification status — always "verified" for this event |
verifiedAt | string | ISO 8601 timestamp of when verification completed |
verificationId | string | Identifier for the verification transaction |
delta object
| Field | Type | Description |
|---|---|---|
customerId | string | Your customer identifier |
amount | number | The delta amount (positive or negative) |
reason | string | Reason code for the delta |
referenceId | string | Your external reference identifier |
metadata | object | Arbitrary metadata you attached to the delta |
submittedAt | string | ISO 8601 timestamp of when the delta was submitted |
proof object
| Field | Type | Description |
|---|---|---|
proofHash | string | Merkle root of the batch containing this delta |
contentHash | string | Hash of this individual delta's payload |
itemHashes | string[] | All content hashes in the batch |
previousProofHash | string | Proof hash of the preceding delta (forms the chain) |
verification object
| Field | Type | Description |
|---|---|---|
verified | boolean | Whether verification passed |
latencyMs | integer | Time from submission to verification in milliseconds |
discrepancies | array | List of any discrepancies found (empty when verified) |
period object
| Field | Type | Description |
|---|---|---|
id | string | Period identifier |
deltaCount | integer | Total deltas in the current period so far |
netDelta | number | Net sum of all delta amounts in the period |
usage object
| Field | Type | Description |
|---|---|---|
plan | string | Current plan name |
includedDeltas | integer | Total deltas included in the plan |
consumedDeltas | integer | Deltas used so far this period |
remainingDeltas | integer | Deltas remaining before overage |
overageRate | number | Cost per delta beyond the included amount |
delta.stored
Fired when delta hashes have been permanently stored in the verification layer.
json
{
"event": "delta.stored",
"timestamp": "2026-02-11T10:30:15.789Z",
"data": {
"batchId": "bat_m4n5o6p7",
"itemCount": 12,
"proofHash": "0x8f3a9b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f",
"storedAt": "2026-02-11T10:30:15.000Z",
"verificationId": "ver_x7y8z9",
"itemHashes": [
"0x2d4e7f...",
"0x9f1a3c..."
]
}
}
| Field | Type | Description |
|---|---|---|
batchId | string | Unique batch identifier |
itemCount | integer | Number of items stored in this batch |
proofHash | string | Merkle root of the stored batch |
storedAt | string | ISO 8601 timestamp of storage confirmation |
verificationId | string | Verification transaction identifier |
itemHashes | string[] | Content hashes of all items in the batch |
checkpoint.verified
Fired at period-end when all deltas are locked into a single verifiable root.
json
{
"event": "checkpoint.verified",
"timestamp": "2026-02-28T23:59:59.999Z",
"data": {
"checkpointId": "chk_q8r9s0t1",
"periodId": "per_2026_02",
"rootHash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"deltaCount": 9847,
"netDelta": -142580.75,
"firstDeltaIndex": 1,
"lastDeltaIndex": 9847,
"verifiedAt": "2026-02-28T23:59:59.000Z",
"verificationId": "ver_u2v3w4"
}
}
| Field | Type | Description |
|---|---|---|
checkpointId | string | Unique checkpoint identifier |
periodId | string | The period this checkpoint covers |
rootHash | string | Single root hash of all deltas in the period |
deltaCount | integer | Total deltas in the period |
netDelta | number | Net sum of all delta amounts |
firstDeltaIndex | integer | Sequence number of the first delta in the period |
lastDeltaIndex | integer | Sequence number of the last delta in the period |
verifiedAt | string | ISO 8601 timestamp of verification |
verificationId | string | Verification transaction identifier |
fact.verified
Fired when a fact has been committed and verified.
json
{
"event": "fact.verified",
"timestamp": "2026-02-11T14:22:33.100Z",
"data": {
"factId": "fct_d5e6f7g8",
"bucketId": "bkt_h9i0j1k2",
"contentHash": "0x3e5a7c9b1d3f5a7c9b1d3f5a7c9b1d3f5a7c9b1d3f5a7c9b1d3f5a7c9b1d3f",
"proofHash": "0xf0e1d2c3b4a5f0e1d2c3b4a5f0e1d2c3b4a5f0e1d2c3b4a5f0e1d2c3b4a5f0e1",
"verifiedAt": "2026-02-11T14:22:33.000Z",
"verificationId": "ver_l3m4n5",
"fact": {
"key": "balance_snapshot",
"value": "98425.50",
"metadata": {
"source": "nightly_reconciliation"
},
"submittedAt": "2026-02-11T14:22:30.000Z"
}
}
}
| Field | Type | Description |
|---|---|---|
factId | string | Unique fact identifier |
bucketId | string | The bucket this fact belongs to |
contentHash | string | Hash of the fact data |
proofHash | string | Proof hash for the verification |
verifiedAt | string | ISO 8601 timestamp of verification |
verificationId | string | Verification transaction identifier |
fact | object | The original fact data (key, value, metadata, submittedAt) |
Next Steps
- Signature Verification — Authenticate webhook payloads
- Autonomous Agent Pattern — Build agents that react to these events
Was this page helpful?
Last updated February 11, 2026