Errors & Rate Limits
Error response format
All error responses return a JSON object with a single error field describing what went wrong:
{
"error": "description of the error"
}HTTP status codes
| Status | Meaning | Common causes |
|---|---|---|
| 400 | Bad Request | Missing required field, invalid field type, malformed JSON |
| 401 | Unauthorized | Missing Authorization header, invalid or expired API key |
| 403 | Forbidden | Plan deployment limit reached |
| 404 | Not Found | Deployment does not exist or is not owned by the authenticated user |
| 429 | Too Many Requests | Rate limit exceeded |
400 Bad Request
Returned when the request body is missing required fields or contains invalid data.
# Missing html field
curl -X POST https://api.invoker.page/deploy \
-H "Authorization: Bearer inv_your_api_key" \
-H "Content-Type: application/json" \
-d '{}'{ "error": "html is required" }401 Unauthorized
Returned when the request is missing an API key or the key is invalid.
# No Authorization header
curl https://api.invoker.page/deploy/d_abc123{ "error": "Unauthorized" }403 Forbidden
Returned when the authenticated user has reached their plan's deployment limit.
# Free plan: already at 5 active deployments
curl -X POST https://api.invoker.page/deploy \
-H "Authorization: Bearer inv_your_api_key" \
-H "Content-Type: application/json" \
-d '{"html": "<h1>Another page</h1>"}'{ "error": "Deployment limit reached. Delete an existing deployment or upgrade your plan." }404 Not Found
Returned when the requested resource does not exist or belongs to a different user.
{ "error": "Deployment not found" }429 Too Many Requests
Returned when the request exceeds the applicable rate limit.
{ "error": "Rate limit exceeded" }Rate limits
Rate limits are applied per IP address or per deployment, depending on the endpoint.
| Endpoint | Limit | Window |
|---|---|---|
POST /submit/:deployId | 10 requests | 1 minute (per deployment) |
POST /auth/session | 5 requests | 1 minute |
POST /auth/otp | 3 requests | 1 minute |
POST /auth/verify | 10 requests | 1 minute |
GET /auth/login | 30 requests | 1 minute |
When a rate limit is exceeded, the API returns a 429 status. Wait for the window to reset before retrying.
Rate limits apply to all plans
Rate limits are not affected by plan tier. Free and Pro users share the same rate limits.