Execute API

Errors

How the Execute API says what went wrong, and what it would accept instead.

Shape

Every error has the same shape: a stable code, a message for people, and, when the body was the problem, every issue at once.

400 Bad Request
{
  "error": {
    "code": "invalid_intent",
    "message": "/chainId: expected a JSON integer such as 8453; received the string \"8453\"",
    "issues": [
      {
        "path": "/chainId",
        "message": "expected a JSON integer such as 8453; received the string \"8453\""
      }
    ]
  }
}
  • code is stable: branch on it.
  • message is for people, and may change.
  • issues holds one entry per problem, each with a path (a JSON Pointer into your body) and a message that says what would be accepted. It’s empty when the body wasn’t the problem.

Codes

StatusCodeWhen
400invalid_intentThe intent isn’t valid. issues lists every problem.
400invalid_requestAnything else malformed: a path that isn’t an address, both credentials at once.
401unauthorizedNo credential, or an unknown one.
403api_key_in_browserAn API key sent from a browser.
403origin_requiredA client ID sent from outside a browser.
403origin_not_allowedA client ID sent from an origin the account doesn’t allow.
404not_foundExecute has no intent for the address.
409address_conflictThe same calldata was registered with other function signatures.
429rate_limitedOver the credential’s rate limit.
503unavailableExecute can’t serve the request right now. Retry with backoff.
500internalSomething failed on Execute’s side. Retry with backoff.

Every issue Create an address reports is listed with it.

Request ids

Every response carries an X-Request-Id header. Include it when you ask about a request, and it can be found in Execute’s logs.