Reference
Errors & credits
The API uses conventional HTTP status codes and a simple monthly credit model. Errors carry a human-readable message you can surface or log.
Status codes
| Status | Meaning |
|---|---|
200 / 201 | Success. 201 on job creation, 200 elsewhere. |
400 | Validation error — a field is missing or malformed. |
401 | Missing, invalid, or revoked API key. |
402 | Monthly credit allowance exhausted. |
404 | The referenced app or job doesn't exist on your account. |
429 | Too many requests — slow down and retry. |
5xx | Something failed on our side. Safe to retry with backoff. |
Error bodies follow a consistent shape:
error
{
"statusCode": 402,
"message": "Monthly credit limit reached (100/month on the free plan). Resets on the 1st (UTC).",
"error": "Payment Required"
}The credit model
Generation is metered in credits. Each key carries a monthly allowance, and operations are charged when the work is accepted:
- Screenshot set — 5 credits per generation job.
- Onboarding an app and polling jobs are free.
Every screenshot response echoes your usage so you can track it without a separate call:
credits in the response
"credits": { "cost": 5, "remaining": 95 }When you run out
Once the monthly allowance is spent, generation returns
402 until it resets on the 1st (UTC). Onboarding and polling keep working. Need a higher limit? Reach out from the Studio.Retries
5xx and 429 responses are safe to retry with exponential backoff. Don't retry 400, 401, or 402 — fix the request, the key, or your credit balance first.