Skip to content
PacSpace
Talk to us

Payload reference

The exact bodies of record.committed, record.failed, and webhook.test, field by field, as the SDK types them.

Every delivery is one JSON object with three fields. event names the event, timestamp is when the event was created, in ISO 8601 UTC (it stays the same on every retry), and data is the event's payload, described below. On the wire the payloads use the route's names, entityId for your record and seq for the entry's position, counted from 0; the pages and the SDKs count the same entry from 1, so seq: 0 is Entry 1 and the SDKs' entry is seq + 1.

The examples follow one evaluation run. The harness writes each action agent-7 takes in run 4417 to the record eval-run-4417, with the idempotency key eval-run-4417:entry-N for Entry N.

record.committed

Entry 3, agent-7 opening a connection outside the test, is committed:

json
{
  "event": "record.committed",
  "timestamp": "2026-10-05T14:09:59.204Z",
  "data": {
    "receiptId": "anc_01jb4r7w2k9x",
    "status": "committed",
    "verifiedAt": "2026-10-05T14:09:59.204Z",
    "verificationId": "0x3f9c...7a12",
    "itemCount": 1,
    "records": [
      {
        "itemId": "rit_4kQ9xT2mVb7LpR3s",
        "seq": 2,
        "kind": "transition",
        "applied": true,
        "recordType": "machine-action-record",
        "entityId": "eval-run-4417",
        "referenceId": "eval-run-4417:entry-3"
      }
    ],
    "verification": { "verified": true, "latencyMs": 11356, "discrepancies": [] }
  }
}
FieldWhat it is
receiptIdThe id the write's answer returned as receiptId.
statuscommitted.
verifiedAtWhen the entry was committed, ISO 8601 UTC.
verificationIdThe reference the entry was committed under, the one the Shared Record shows as "Committed under". Can be null.
itemCountHow many entries this delivery covers. Entries written close together can commit together, so it can be more than one.
records[].itemIdThe write's intakeId.
records[].seqThe entry's position on the wire, from 0. seq: 2 is Entry 3 on the pages and entry: 3 in the SDKs.
records[].kindtransition, or attempt for a write the lifecycle did not allow.
records[].appliedtrue when the entry moved the record's state; false for an attempt.
records[].recordType, records[].entityIdThe record: its type and your id for it.
records[].referenceIdYour idempotency key for the write.
verification.verifiedtrue.
verification.latencyMsHow long committing took, in milliseconds, when it was measured.
verification.discrepanciesEmpty for a committed entry.

The SDK types every field in records[] except kind as one that can be null. TypeScript: RecordCommittedPayload. Python: a dict with the same keys.

record.failed

An incident report's record, incident-0923, was opened with an entry sent as closed. The write was queued, then failed to commit:

json
{
  "event": "record.failed",
  "timestamp": "2026-10-05T15:22:41.870Z",
  "data": {
    "recordType": "machine-action-record",
    "entityId": "incident-0923",
    "seq": 0,
    "code": "RECORD_GENESIS_MISMATCH",
    "sentence": "A record opens with recorded; amended and closed come after it."
  }
}
FieldWhat it is
recordType, entityIdThe record. Either can be null when the write never reached the point of naming one.
seqThe position the write would have taken, counted from 0 like every seq.
codeThe registry's name for the rule that was not met.
sentenceThe rule, in plain words.

TypeScript: RecordFailedPayload.

webhook.test

json
{
  "event": "webhook.test",
  "timestamp": "2026-10-05T13:58:02.115Z",
  "data": {
    "webhookId": "cmw4m1p7a0003s601d2e9f5tk",
    "message": "A test event from PacSpace."
  }
}

webhookId is the endpoint's id, as the Webhook endpoints routes name it.

Headers on every delivery

HeaderExample
Content-Typeapplication/json
X-Webhook-Eventrecord.committed
X-Event-IDevt_anc_01jb4r7w2k9x. A test event's id starts evt_webhook_test_.
X-PacSpace-Timestamp1791209399204 (Unix time in milliseconds, when this attempt was signed)
X-PacSpace-Signaturev1=5a2f8c... (two values, comma separated, for 24 hours after a secret rotation with overlap)