Developers
Errors
Every error code the API can return.
Errors use standard HTTP status codes and a stable machine-readable code.
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 12 seconds."
},
"requestId": "req_8f3a2c91d4e6b07f"
}Error codes
| Status | Code | Retry | Description |
|---|---|---|---|
| 400 | INVALID_REQUEST | No | A parameter is missing, malformed or out of range. The message names the parameter. |
| 401 | MISSING_API_KEY | No | The endpoint requires an API key and no X-API-Key header was sent. |
| 401 | INVALID_API_KEY | No | The key is malformed, unknown or revoked. |
| 403 | INSUFFICIENT_SCOPE | No | The key does not carry the scope this endpoint requires. |
| 404 | NOT_FOUND | No | The resource does not exist or does not belong to the key owner. Both cases look identical. |
| 414 | URI_TOO_LONG | No | The request URL exceeds 2,048 characters. |
| 401 | INVALID_SIGNATURE | No | The wallet signature does not match the authorization message and the key owner’s wallet. |
| 409 | SELL_IN_PROGRESS | Yes | A sell of this token is already executing. Wait for it to finish. |
| 409 | AUTHORIZATION_EXPIRED | No | The sell authorization expired before it was signed. Create a new one. |
| 409 | AUTHORIZATION_CLOSED | No | The sell authorization was already used, cancelled or failed. |
| 409 | QUOTE_BELOW_AUTHORIZED_MINIMUM | No | At authorization, Jupiter’s current quote was below the minimum you signed. Nothing was sold. error.details carries quotedOutputLamports and signedMinimumOutputLamports. Create a new authorization. |
| 409 | POSITION_NOT_OPEN | No | The position closed before the sell could start. Nothing was sold. |
| 422 | AMOUNT_TOO_SMALL | No | The sell is too small to execute safely. |
| 422 | NO_ROUTE | No | No swap route exists for this pair and amount. |
| 422 | INSUFFICIENT_BALANCE | No | The sell amount exceeds what Privy holds for you in this token. |
| 422 | ABOVE_MAXIMUM | No | The buy exceeds the per-trade maximum. |
| 429 | RATE_LIMITED | Yes | Your key or IP exceeded its per-minute limit. Wait for Retry-After seconds. |
| 500 | INTERNAL_ERROR | Yes | Privy failed unexpectedly. Include the requestId when contacting support. |
| 502 | UPSTREAM_UNAVAILABLE | Yes | A market data provider failed. Retry with backoff. |
| 503 | UPSTREAM_RATE_LIMITED | Yes | A market data provider is throttling Privy. Wait for Retry-After seconds. |
| 503 | SERVICE_UNAVAILABLE | Yes | Privy is temporarily unavailable. |
