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.
{
"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\""
}
]
}
}codeis stable: branch on it.messageis for people, and may change.issuesholds one entry per problem, each with apath(a JSON Pointer into your body) and amessagethat says what would be accepted. It’s empty when the body wasn’t the problem.
Codes
| Status | Code | When |
|---|---|---|
| 400 | invalid_intent | The intent isn’t valid. issues lists every problem. |
| 400 | invalid_request | Anything else malformed: a path that isn’t an address, both credentials at once. |
| 401 | unauthorized | No credential, or an unknown one. |
| 403 | api_key_in_browser | An API key sent from a browser. |
| 403 | origin_required | A client ID sent from outside a browser. |
| 403 | origin_not_allowed | A client ID sent from an origin the account doesn’t allow. |
| 404 | not_found | Execute has no intent for the address. |
| 409 | address_conflict | The same calldata was registered with other function signatures. |
| 429 | rate_limited | Over the credential’s rate limit. |
| 503 | unavailable | Execute can’t serve the request right now. Retry with backoff. |
| 500 | internal | Something 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.