Every error has the same body: a short code, and a detail that says what went wrong when there is more to say.
409 Conflict
{
"error": "leased",
"detail": "phone phone-1 is held by run run_5t1x"
}| Status | Code | Means |
|---|---|---|
| 400 | bad-request | The body or query failed validation, or is over 1 MB. The detail names the field. |
| 401 | unauthorized | The key is missing, unknown or revoked. |
| 402 | payment-required | Your balance does not cover it. Adding phones needs a month of each monthly one, or 24 hours of each charged by the minute, and a phone cannot start while the balance is used up or short of the month it needs. Top up and try again. |
| 403 | forbidden | The key lacks the scope this route needs. |
| 404 | not-found | Nothing with that id in your workspace. |
| 409 | leased | A run or another key holds the phone. |
| 409 | busy | The phone already has two commands in flight. Wait for one to finish. |
| 409 | preempted | Someone took over the phone in the live view. |
| 409 | not_running | The phone is off. |
| 409 | proxy-in-use | A phone still goes out through the proxy you tried to remove. |
| 422 | unprocessable | The request is well formed but cannot apply. |
| 429 | throttled | Too many requests. Wait as long as Retry-After says. |
| 429 | budget | Your runs have used the day's model allowance. |
| 503 | unavailable | Something the request needs is down for a moment. Retry with backoff. |
| 503 | node_offline | The machine the phone runs on cannot be reached. |
| 503 | exits-exhausted | No fresh exit is ready to rotate to. More are being vetted, so try again later. With reason: none-clean, the city you named has none, so pick another. |
| 504 | timeout | The phone did not answer in time. |
An id that belongs to another workspace returns 404, the same as one that does not exist, so ids never reveal what other workspaces hold.