Elydora Docs

Operations

Submit, retrieve, and verify signed operation records. Each operation captures one agent action.

Submit Operation

POST
/v1/operations
Submit a signed Elydora Operation Record (EOR).
Auth: org_owner, security_admin, integration_engineer

Request Body (EOR)

FieldTypeRequiredDescription
op_versionstringYesProtocol version, currently "1.0"
operation_idstringYesClient-generated UUIDv7
org_idstringYesOrganization identifier
agent_idstringYesSubmitting agent identifier
issued_atnumberYesUnix timestamp in milliseconds
ttl_msnumberYesTime-to-live in milliseconds (max window for submission)
noncestringYesRandom nonce for replay protection
operation_typestringYesDomain-specific operation type (e.g. loan.approve)
subjectobjectYesJSON object describing the subject of the operation
actionobjectYesJSON object describing the action performed
payloadobject | string | nullYesOperation data: a JSON object, a string, or null
payload_hashstringYesBase64url SHA-256 of the canonical payload
prev_chain_hashstringYesChain hash of the previous operation; the genesis constant for the first
agent_pubkey_kidstringYesKey ID of the agent's signing key
signaturestringYesEd25519 signature over the canonical EOR

Example Request

bash
curl -X POST https://api.elydora.com/v1/operations \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "op_version": "1.0",
    "operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
    "org_id": "org_acme",
    "agent_id": "agent_underwriter",
    "issued_at": 1772287200000,
    "ttl_ms": 30000,
    "nonce": "qL3xV9pZ2mK8wR4t",
    "operation_type": "loan.approve",
    "subject": { "id": "borrower:BRW-2026-0042", "type": "borrower" },
    "action": { "name": "approve", "type": "decision" },
    "payload": {
      "loanId": "LN-2026-001",
      "amount": 50000,
      "currency": "USD"
    },
    "payload_hash": "<base64url SHA-256 of the canonical payload>",
    "prev_chain_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
    "agent_pubkey_kid": "agent_underwriter-key-1",
    "signature": "<base64url Ed25519 signature>"
  }'

Response

Returns an Elydora Acknowledgement Receipt (EAR) confirming the operation was received and sequenced.

json
{
  "receipt": {
    "receipt_version": "1.0",
    "receipt_id": "0195f2c6-9a2b-7c4d-8e1f-3a5b7c9d1e2f",
    "operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
    "org_id": "org_acme",
    "agent_id": "agent_underwriter",
    "server_received_at": 1772287201000,
    "seq_no": 42,
    "chain_hash": "<base64url chain hash>",
    "queue_message_id": "<queue message id>",
    "receipt_hash": "<base64url receipt hash>",
    "elydora_kid": "<Elydora signing key id>",
    "elydora_signature": "<base64url Ed25519 signature>"
  }
}

Get Operation

GET
/v1/operations/:operation_id
Retrieve a full operation record by ID.
Auth: org_owner, security_admin, compliance_auditor, integration_engineer, readonly_investigator

Path Parameters

FieldTypeRequiredDescription
operation_idstringYesUUID of the operation

Response

Returns the stored operation row, the receipt reference, and the payload when it was stored. The subject and action fields are JSON strings.

json
{
  "operation": {
    "operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
    "org_id": "org_acme",
    "agent_id": "agent_underwriter",
    "seq_no": 42,
    "operation_type": "loan.approve",
    "issued_at": 1772287200000,
    "ttl_ms": 30000,
    "nonce": "qL3xV9pZ2mK8wR4t",
    "subject": "{\"id\":\"borrower:BRW-2026-0042\",\"type\":\"borrower\"}",
    "action": "{\"name\":\"approve\",\"type\":\"decision\"}",
    "payload_hash": "<base64url SHA-256 of the canonical payload>",
    "prev_chain_hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
    "chain_hash": "<base64url chain hash>",
    "agent_pubkey_kid": "agent_underwriter-key-1",
    "signature": "<base64url Ed25519 signature>",
    "r2_payload_key": "<object storage key>",
    "created_at": 1772287201000
  },
  "receipt": {
    "receipt_id": "0195f2c6-9a2b-7c4d-8e1f-3a5b7c9d1e2f",
    "operation_id": "0195f2c6-8f4e-7a1b-9c3d-2e4f6a8b0c1d",
    "r2_receipt_key": "<object storage key>",
    "created_at": 1772287201000
  },
  "payload": { "loanId": "LN-2026-001", "amount": 50000, "currency": "USD" }
}

Verify Operation

POST
/v1/operations/:operation_id/verify
Server-side verification of the signature, chain, receipt, and Merkle inclusion.
Auth: org_owner, security_admin, compliance_auditor, integration_engineer, readonly_investigator

Response

checks.merkle is absent until an epoch covers the operation.

json
{
  "valid": true,
  "checks": {
    "signature": true,
    "chain": true,
    "receipt": true,
    "merkle": true
  }
}