Skip to main content
Every error from the Ralph Studio API returns a consistent JSON body and a standard HTTP status code. Understanding the error structure lets you build integrations that handle failures gracefully instead of crashing.

Error response format

All errors follow this shape:
Some errors include extra fields:
There is no numeric error code, the HTTP status code is the primary signal. The detail string is for logging and debugging, not programmatic branching.

HTTP status codes

400: Bad Request

You sent something the node could not parse or validate.
Common causes:
  • Malformed address: Alephium addresses are base58 encoded, not hex
  • Invalid timestamp: fromTs and toTs must be millisecond Unix timestamps
  • Missing required field: check the parameters reference for the endpoint
  • Amount too small: outputs below the dust limit (~0.001 ALPH) are rejected
400 errors will not succeed on retry. Fix the request first.

401: Unauthorized

Your API key is missing or wrong. Check:
  • The Authorization header is present and formatted as Bearer API_KEY
  • The key belongs to the correct workspace
  • The key has not been revoked in the Ralph Studio dashboard
401 errors will not succeed on retry with the same key.

404: Not Found

The resource you requested does not exist. For transactions and blocks this usually means:
  • The transaction has not been confirmed yet, check the mempool first
  • The block hash is on a fork that was reorganised away
  • You are querying a different network (mainnet vs testnet)
For wallet endpoints a 404 means the wallet name does not exist on this node.

500: Internal Server Error

Something failed inside the node. This is safe to retry with exponential backoff. If it persists across retries check the node logs or the Ralph Studio status page.

503: Service Unavailable

The node is still syncing with the network. Balance and transaction data will be incomplete until sync finishes. Check sync status before making data queries:
Only proceed when isSynced is true. 503 errors are safe to retry, back off and wait for the node to catch up.

504: Gateway Timeout

The node did not respond in time. This happens during heavy network load or when querying large time ranges. Safe to retry with a smaller time window or after a short delay.

Retry logic

Not all errors should be retried. Use this decision tree: A simple retry implementation with exponential backoff:

Validating addresses before sending

A malformed address causes a 400 before the node even processes your request. A quick sanity check before building a transaction:
If this returns 400 the address is invalid. If it returns a group between 0 and 3 the address is well-formed and exists on the correct network.

Checking transaction status before assuming failure

A submitted transaction that returns 404 on the status endpoint is not necessarily lost. It may still be in the mempool:
Wait for "type": "Confirmed" before treating a transaction as complete. Only treat a transaction as failed if it returns "type": "TxNotFound" and enough time has passed for it to have been included in a block (~16 seconds per block).

Rate limit errors

If you exceed your plan’s rate limit you will receive a 429 response:
The response includes headers telling you when to retry:
X-RateLimit-Reset is a Unix timestamp in seconds. Wait until that time before retrying. See the rate limits guide for per-plan limits and strategies for staying within them.

Next steps

Rate limits

Per-plan limits and strategies for staying within them

Submitting a transaction

Build, sign, and broadcast a transfer