API
Errors and limits
Errors are plain sentences you can show to a person, with a type your code can switch on.
Errors
Anything that isn't a 2xx answers with the same shape:
Response · 409
{
"error": {
"type": "conflict",
"message": "That offer has already been answered or ran out."
}
}Response · 400
{
"error": {
"type": "invalid_request",
"message": "price: Use a number of dollars, like 185 or 185.50.",
"param": "price"
}
}Types
| Status | Type | What it means |
|---|---|---|
| 400 | invalid_request | Something in the request needs fixing. param names the field when there is one. |
| 401 | unauthorized | No key, or the key isn't valid any more. |
| 403 | forbidden | The key doesn't have the permission this needs. |
| 404 | not_found | Nothing with that id, or it isn't yours. |
| 409 | conflict | It can't happen in the state things are in: the listing already sold, the offer was already answered. |
| 429 | rate_limited | That's this month's requests. |
| 503 | unavailable | A part of the service isn't set up or is down, like the writing agent. |
| 500 | server_error | Something broke on our side. Quote the request id if you tell us. |
Limits
While we're in beta, each person gets 10,000 requests a month across all their keys and agent links, free. The count starts over on the 1st (UTC). Every response with a key says where you are:
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 8760Past the limit, requests answer 429 rate_limited until the month turns. You can see this month's count on the API page in the app.
Request ids
Every response has an X-Request-Id header (req_…). Server errors include it in the message, too. Send it to us and we can find exactly what happened.