Skip to content

Docs

›

Content API

Errors, caching and limits

Status codes, rate limits and how fresh Content API responses are.

Updated November 8, 2026

Status codes

400: the token or organization is missing from the URL.

403: the token is invalid or expired, belongs to another organization, lacks the permission for this collection and action (Permission denied), or the plan does not include public API access ("code": "FEATURE_NOT_AVAILABLE").

404: unknown collection or entry.

422: validation failed on a write.

429: rate limit reached, or a plan limit reached.

Rate limits

Each token has its own limit in requests per minute (set when creating the token; 60 by default). Over the limit, the API answers 429 with a Retry-After header in seconds. Requests also count toward your plan's monthly public API allowance, which you can follow under Usage.

async function get(url) { const res = await fetch(url); if (res.status === 429) { const wait = Number(res.headers.get("Retry-After") || 1); await new Promise(r => setTimeout(r, wait * 1000)); return get(url); } if (!res.ok) throw new Error((await res.json()).message); return res.json(); }

Caching

Responses are cached by Praisma and cleared when the content changes, so edits normally show up right away. In the worst case a change appears within about two minutes. Whether an entry is published or scheduled is checked on every request.

Cross-origin requests

The API allows requests from any origin without cookies, so it works from browser code, static sites and mobile apps.

Questions about building on Praisma Hub? We're happy to help.

Contact us