Skip to main content
The Yativo Crypto API uses standard HTTP status codes and returns structured JSON error responses. All errors follow the same shape:

HTTP Status Codes

400 — Bad Request

The request was malformed or failed validation. Check the details field for which fields are invalid.
How to handle: Fix the request before retrying. Do not retry 400 errors without modifying the request.

401 — Unauthorized

The request is missing authentication credentials, or the provided credentials are invalid or expired.
How to handle:
  • If using a Bearer token, refresh it via POST /apikey/token or GET /authentication/refresh-token
  • If using API key headers, verify your X-API-Key and X-API-Secret are correct

403 — Forbidden

The request is authenticated, but the API key or user does not have permission to perform the requested action.
How to handle: Check which permissions your API key has (GET /apikey/{id}). If needed, update permissions via PUT /apikey/{id}/permissions (requires 2FA).

404 — Not Found

The requested resource does not exist, or is not accessible from your account.
How to handle: Verify the ID is correct. If you just created the resource, allow a moment for propagation and retry.

409 — Conflict

A duplicate operation was attempted. Most commonly seen with idempotency key conflicts.
How to handle: If the details include an existing_transaction_id, that transaction is the canonical result — use it rather than creating a new one. This is the intended idempotency behavior.

422 — Unprocessable Entity

The request is syntactically valid but semantically invalid — for example, trying to send more than your wallet balance.
Common 422 error codes: How to handle: Read the error_code and details to determine the specific issue. These errors require business logic changes (top up wallet, get a fresh quote, etc.) — not just a retry.

429 — Too Many Requests

Your request rate has exceeded the limit for your plan.
How to handle: Wait retry_after seconds before retrying. Implement exponential backoff for sustained high-volume use. See Rate Limits for details.

500 — Internal Server Error

An unexpected error occurred on Yativo’s servers.
How to handle: Retry with exponential backoff. If the error persists, open a support ticket with the request_id value — it allows the Yativo team to trace the exact request in their logs.

Error Handling Pattern


Idempotency

The POST /transactions/send-funds endpoint automatically generates a unique idempotency key for each request. If a network failure causes you to retry a send-funds call, you may receive a 409 Conflict response. This is not an error condition — it means the original transaction was already created. Use the existing_transaction_id from the 409 response body to track that transaction. To override the auto-generated key with your own, include "idempotency_key": "your-unique-key" in the request body. Keys must be unique per operation type.