All of Jazui's APIs live at https://api.jazui.com, use HTTPS and answer in JSON (except /Render, which returns HTML, and the public site files). There are four groups:
| API | What for | Token |
|---|---|---|
| Render | Used by integrations to ask for pages. | Render (account or site) |
| Cache | Recache or purge pages from your deployment or CMS. | Render (account or site) |
| Blog v2 | Read articles, categories and tags to show them on your website. | Public or render |
| Site files | Sitemap, robots.txt, llms.txt, Markdown for AI and AI visits. | None |
Jazui also notifies you with webhooks when you publish an article or an alert fires.
Tokens
Tokens go in the Authorization header with the Bearer scheme. They don't expire: they keep working until you renew or revoke them.
| Token | Where it is | Used for | Secret |
|---|---|---|---|
| JAZUI Token (account render) | Home › Integration and settings | Render, cache and blog, for all your sites. | Yes |
| Site token | Websites › Site token | Render, cache and blog, only for that site and its subdomains. | Yes |
| PUBLIC Token | Home › Integration and settings | Reading the blog only. Safe to put in the browser. | No |
curl https://api.jazui.com/v2/cache/tasks \
-H "Authorization: Bearer $JAZUI_TOKEN"- When you renew a token from the dashboard, the old one stops working within a minute: update your integrations and deployments with the new one.
- A site token used with another domain gets a
403. - The PUBLIC Token doesn't work for Render or cache: it gets a
403with no body. - If the account is locked or deleted, its tokens stop working.
Rate limits
| What | Limit | Counted per |
|---|---|---|
| Render, cache and blog with a token | 120 requests per minute | Account: all its tokens share the same limit |
| Feeds, site files and bot list (no token) | 120 requests per minute | IP |
Going over it returns a 429 with no body. It's a per-minute limit: wait a few seconds and try again. Integrations treat it as a failure and serve your normal website. Don't confuse this 429 with the plan limits one, which carries the X-Jazui-Limit header.
Errors
| Code | When | Body |
|---|---|---|
400 | Invalid parameters or JSON | {code, message} or ProblemDetails |
401 | No token, or a renewed or revoked token | Empty, with WWW-Authenticate: Bearer |
403 | The token doesn't work for that API or site, unverified site, feature not in your plan, or a block | Empty or {code, message} |
404 | Doesn't exist or isn't published | {code, message} or empty |
429 | Rate, task or plan limit | Empty or {code, message} |
5xx | Jazui error or your website failing to render | ProblemDetails or text, with Retry-After when retrying makes sense |
The cache and blog APIs explain the error with a stable code you can use in your code and a readable message:
{ "code": "plan", "message": "Tu plan no incluye la API de caché." }{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": { "$": ["The JSON value could not be converted."] },
"traceId": "00-6f3c…-01"
}Message language
Error messages and texts returned by the API are in Spanish by default. To get them in English, send Accept-Language: en or add ?culture=en to the address. Codes (code) don't change with the language.
Without a token
Some addresses are public: the bot list used by integrations, the service status, blog feeds and each verified site's files.
# Lista de bots que usan las integraciones (JSON y texto)
curl https://api.jazui.com/v2/bots
curl https://api.jazui.com/v2/bots.txt
# Bloques listos para nginx, IIS y Apache
curl https://api.jazui.com/v2/bots/config
# Estado del servicio
curl https://api.jazui.com/health