Skip to content

Error Codes

All INK endpoints MUST return structured error responses:

{
"protocol": "ink/0.1",
"error": true,
"code": "invalid_signature",
"message": "Ed25519 signature verification failed"
}

Error Codes

CodeHTTP StatusDescription
invalid_signature401Signature verification failed
invalid_delegation401agentLink repo commit signature verification failed
expired_message400Timestamp outside acceptable window
duplicate_nonce400Nonce already seen
unknown_did404Could not resolve sender DID
no_agent_link404No agentLink record found for sender
encryption_required400Intent type requires encrypted payload
decryption_failed400Could not decrypt payload
unsupported_version400Protocol version not supported
rate_limited429Too many requests
handshake_budget_exhausted429Per-correlation handshake budget exceeded
sender_rate_limited429Per-sender sliding window rate limit exceeded
transport_scope_violation403Invocation transport not permitted by delegation token
sender_mismatch403Message from field does not match authenticated sender identity
access_denied403Requester is not a party to the referenced message
internal_error500Agent internal error

Witness Service Error Codes

The witness service returns these additional error codes on its authenticated endpoints.

CodeHTTP StatusDescription
missing_authorization401No Authorization header present
invalid_auth_scheme401Authorization header is not INK-Ed25519 scheme
nonce_replay401Nonce has already been used (10-minute window)
duplicate_event_id409An event with this ID has already been recorded
invalid_agent_signature400Event agentSignature does not verify against the agent’s public key
invalid_agent_id_format400Cannot extract a public key from the agentId field
sender_mismatch401Transport auth sender does not match body.from
event_agent_mismatch400event.agentId does not match submission sender
rate_limit_exceeded429Agent has exceeded 30 submissions per minute
forbidden403Requester is not a party to the queried message