Skip to main content
All API errors return a JSON response with three fields:
{
  "error": "Short error name",
  "message": "Detailed explanation of what went wrong and how to fix it.",
  "status": 400
}

Status codes

StatusErrorWhen it happens
200Request succeeded.
201Page created successfully (duplicate-and-fill).
400Invalid JSONRequest body is not valid JSON. Check for unescaped quotes or syntax errors.
400Invalid sections formatThe sections field is an array instead of an object. Use section_1, section_2 keys.
400Empty sectionsThe sections object has no keys. Send at least one section.
400Validation failedA section key is out of range, or you sent a style/layout field. Details are included.
401Authentication failedMissing, invalid, or revoked API key.
402Payment requiredYour subscription has a payment issue. Update your billing in the dashboard.
403Read-only API keyYou used a read-only key on a write endpoint. Create a key with Full access.
403Page limit reachedYour plan’s page limit is reached. Upgrade to create more pages.
404Page not foundThe page ID does not exist or does not belong to your account.
413Request body too largeThe request body exceeds 512KB. Send less content per request.
429Rate limit exceededToo many requests. Wait and retry. Check the Retry-After header.
500Internal server errorSomething went wrong on our end. Try again or contact support.

Validation errors

When the API rejects specific fields, the response includes a details array with one message per issue:
{
  "error": "Validation failed",
  "message": "Some sections could not be filled. This page has 12 sections (section_1 to section_12).",
  "details": [
    "section_15 is out of range (section_1 to section_12)",
    "section_2 (hero01): style/layout keys not allowed via API: backgroundColor, headingSize"
  ],
  "status": 400
}

Common validation issues

You referenced a section number that does not exist. Call GET /api/v1/pages/{page_id} to see available sections.
"section_15 is out of range (section_1 to section_12)"
You sent a field like backgroundColor or headingSize which is a style field, not content. The API only accepts text, media, and link fields.
"section_2 (hero01): style/layout keys not allowed via API: backgroundColor, headingSize"
Your section key does not follow the section_N format.
"\"hero\" is invalid. Use section_1, section_2, etc."

Rate limit headers

When you hit a rate limit, the response includes these headers:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed in the window.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp when the window resets.
Retry-AfterSeconds to wait before retrying.
{
  "error": "Rate limit exceeded. Try again later.",
  "status": 429
}
If you are building an automation that runs in a loop, add a short delay between requests to stay within the rate limit.