Errors and limits
Errors are JSON with a message, a type and, for some, a code:
json
{ "error": { "message": "No GPU matching this job is free right now. Nothing was charged; retry later.", "type": "capacity_error", "code": "no_capacity" } }Status codes
| Status | type / code | Meaning | What to do |
|---|---|---|---|
| 400 | invalid_request_error | A field is missing or out of range. The message names it. | Fix the request. |
| 400 | invalid_request_error / gpu_unavailable | No GPU on the network has the memory you asked for. | Lower gpu.min_vram_gb, or check GET /v1/gpus. |
| 401 | authentication_error | Missing, wrong or revoked API key. | Check the Authorization: Bearer mk_live_… header. |
| 402 | insufficient_quota | Your credit does not cover max_hours at the current rate. | Lower max_hours or gpu.count, or add credit. |
| 503 | capacity_error / no_capacity | No matching GPU is free right now. | Retry with backoff. Nothing was charged. |
Limits
| Limit | Value |
|---|---|
| Request body | 256 KB |
| GPUs per job | 8 |
max_hours | 0.1 to 72 |
env | 64 variables, 4,096 characters each |
command | 64 arguments |
There are no per-key rate limits during early access. Throughput is bounded by the GPUs online and by your credit.
CORS
/v1 allows requests from any origin, so you can prototype from a browser. Never ship an API key in client-side code; anyone can read it there and spend your credit.
