Errors and limits
Error responses, rate limits and what to do about them.
Errors
A failed request returns a 4xx or 5xx status and:
json
{ "error": { "code": "pair_not_open", "message": "`DOGE` isn't a pair you can launch on. GET /api/v1/pairs lists them." } }The message is written so you can show it to a user as it is.
| Status | code | Meaning |
|---|---|---|
| 400 | missing_field, bad_field, bad_json, bad_image | Something in the request is missing or wrong |
| 401 | missing_key, invalid_key | No key, or a key that was rotated |
| 404 | not_found | No coin at that address |
| 422 | rejected | The launch or trade can't go through as asked: not enough SOL, a slippage limit, a curve that's closed |
| 422 | pair_not_open, not_curve, expired | The pair isn't open; the coin isn't on the woopcurve; the transaction expired before it was sent |
| 429 | rate_limited | Too many requests. Wait a moment |
| 500 | server_error | Our side. Try again |
Limits
| Limit | Per key |
|---|---|
| Requests | 600 a minute |
Launches have no limit of their own: each one is a request like any other.
Every response carries x-ratelimit-remaining: the requests left this minute.
Transactions expire
A built transaction is valid for about a minute (until lastValidBlockHeight). If it expires, build it again.
