Error Handling and Recovery

HTTP Status Codes

Code
Meaning

400

Invalid request parameters

403

Invalid or missing api-key

404

Resource not found

429

Rate limit exceeded

500

Internal server error

Error Response Format

All errors return a JSON object with an error field containing a message:

{
  "error": {
    "message": "description of the error"
  }
}

For application-level errors (e.g. PusherError), the response also includes a code field:

{
  "error": {
    "code": "NOT_SMART_ACCOUNT",
    "message": "Address has no deployed code — not a smart account"
  }
}

Recovery Endpoints

When a cross-chain transaction gets stuck, these endpoints help resolve the situation.

POST /tx/create/emergency

Build a transaction to return funds to the sender when delivery is stuck (destination.emergency is true).

Field
Type
Description

requestId

string

The request ID from the ComplexOpProcessed event

signature

string

EIP-191 signature from the original sender (see below)

Generating the signature:

The server expects an EIP-191 personal sign over the keccak256 hash of the requestId string. The signer must be the original sender address.

Full example:

POST /tx/create/retry

Retry a failed delivery. Uses the same signature format as the emergency endpoint.

Field
Type
Description

requestId

string

The request ID from the ComplexOpProcessed event

signature

string

EIP-191 signature from the original sender

POST /tx/create/resumeBr

Resume a paused bridge relay.

POST /tx/create/cancelBr

Cancel a pending bridge relay.

Last updated