Skip to content

Errors & Rate Limits

Error response format

All error responses return a JSON object with a single error field describing what went wrong:

json
{
  "error": "description of the error"
}

HTTP status codes

StatusMeaningCommon causes
400Bad RequestMissing required field, invalid field type, malformed JSON
401UnauthorizedMissing Authorization header, invalid or expired API key
403ForbiddenPlan deployment limit reached
404Not FoundDeployment does not exist or is not owned by the authenticated user
429Too Many RequestsRate limit exceeded

400 Bad Request

Returned when the request body is missing required fields or contains invalid data.

bash
# Missing html field
curl -X POST https://api.invoker.page/deploy \
  -H "Authorization: Bearer inv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{}'
json
{ "error": "html is required" }

401 Unauthorized

Returned when the request is missing an API key or the key is invalid.

bash
# No Authorization header
curl https://api.invoker.page/deploy/d_abc123
json
{ "error": "Unauthorized" }

403 Forbidden

Returned when the authenticated user has reached their plan's deployment limit.

bash
# 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>"}'
json
{ "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.

json
{ "error": "Deployment not found" }

429 Too Many Requests

Returned when the request exceeds the applicable rate limit.

json
{ "error": "Rate limit exceeded" }

Rate limits

Rate limits are applied per IP address or per deployment, depending on the endpoint.

EndpointLimitWindow
POST /submit/:deployId10 requests1 minute (per deployment)
POST /auth/session5 requests1 minute
POST /auth/otp3 requests1 minute
POST /auth/verify10 requests1 minute
GET /auth/login30 requests1 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.

Deploy forms and sites from AI conversations.