Skip to main content
All protocol errors are returned as a response envelope with "status": "error" and an error object:
{
  "status": "error",
  "error": {
    "code": "RATE_LIMITED",
    "message": "Sender exceeded 10 requests per minute"
  }
}

Code reference

CodeHTTPMeaning
AUTH_FAILED401Invalid or missing signature, unknown sender key, or missing Bearer token for an authenticated skill
REPLAY_DETECTED401Nonce has already been seen within the 5-minute replay window
SKILL_NOT_FOUND404Skill ID does not exist on this agent
SCHEMA_INVALID400Payload failed input schema validation (missing required field, wrong type, exceeded maxLength, etc.)
INJECTION_DETECTED400Payload flagged by the prompt injection scanner
DELEGATION_EXCEEDED400Delegation token’s scope does not include the called skill, or maxDepth has reached 0
RATE_LIMITED429Sender exceeded the per-sender request rate declared in the agent card
TOKEN_BUDGET_EXCEEDED429Sender exhausted their daily token budget; Retry-After header gives UTC midnight reset time
AGENT_UNAVAILABLE500Agent is overloaded, starting up, or the skill handler threw an unhandled exception

Retry guidance

CodeRetry?
AUTH_FAILEDNo — fix the request (verify key is active, token is valid)
REPLAY_DETECTEDYes — generate a new nonce and timestamp
SKILL_NOT_FOUNDNo — re-fetch the agent card; skill may have been removed
SCHEMA_INVALIDNo — fix the payload
INJECTION_DETECTEDNo — review the payload content
DELEGATION_EXCEEDEDNo — request a new token with appropriate scope/depth
RATE_LIMITEDYes — back off and retry after a moment
TOKEN_BUDGET_EXCEEDEDYes — after the Retry-After header time
AGENT_UNAVAILABLEYes — exponential backoff