Render

The API integrations use to ask Jazui for a bot's page.

Markdown

You don't usually call it yourself: your integration does. Knowing it helps you debug, build your own integration or check what a bot gets from a specific page. Each call counts as a served request in your plan, and if the page wasn't cached, also as a render.

Request

GET https://api.jazui.com/Render

Parameter or headerRequiredDescription
urlYes*Full page address, encoded. *If you can't put it in the query, send it in the X-Jazui-Url header.
botAgentNoThe bot's user agent. If missing, the request's User-Agent is used.
AuthorizationYesBearer with the account or site token.
X-Jazui-Client-IPNoThe bot's IP. If a comma-separated list arrives, the first one is used. Used for metrics and to verify search engines.
If-None-MatchNoThe bot's ETag, to get a 304 if it hasn't changed.
Terminal
curl -i "https://api.jazui.com/Render?url=https%3A%2F%2Fmisitio.com%2Fprecios&botAgent=integration-test" \
  -H "Authorization: Bearer $JAZUI_TOKEN" \
  -H "X-Jazui-Client-IP: 66.249.66.1"

Response

The page's HTML with its real status code: 200, 404 if your page is a 404, or the redirect (301, 302…) with its Location and no body.

Successful response
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
X-Jazui: true
X-Jazui-Cache: HIT
ETag: "4812-638976215370000000"
Last-Modified: Mon, 02 Nov 2026 18:22:17 GMT

<!DOCTYPE html><html lang="es"><head><title>Precios | Mi sitio</title>…

Other codes

CodeHeaderReason
400—url is missing or invalid, or a rule excludes that address from rendering.
401—No token or token no longer valid.
403—Token from another site, or the site isn't verified.
403X-Jazui-Blocked: ai-botYou blocked that AI bot in the site settings.
403X-Jazui-Blocked: ruleA rule blocks that bot.
429X-Jazui-Limit: planThe free plan has used up its renders or requests for the month.
429X-Jazui-Limit: rendersNo renders left this month for a new page, or the required badge is missing past the grace period.
429X-Jazui-Limit: pagesThe cached page limit has been reached.
429—More than 120 requests per minute.
502Retry-After: 30Your website answered with a server error while rendering.
503Retry-After: 30Rendering didn't finish in time.

Conditional requests

Each page has an ETag. If you send the one you have in If-None-Match and the page hasn't changed, you get 304 Not Modified with no body (also with X-Jazui: true). That way bots that store pages don't download them again.

Terminal
curl -i "https://api.jazui.com/Render?url=https%3A%2F%2Fmisitio.com%2F&botAgent=integration-test" \
  -H "Authorization: Bearer $JAZUI_TOKEN" \
  -H 'If-None-Match: "4812-638976215370000000"'
# HTTP/1.1 304 Not Modified (sin cuerpo)

Reporting an unknown bot

Code-based integrations report with POST /Render/Seen when they see a bot-like user agent that isn't on the list. It always answers 204; each agent counts once a day, up to 500 different ones per account per day. If you build your own integration, you can use it the same way.

Terminal
curl -X POST https://api.jazui.com/Render/Seen \
  -H "Authorization: Bearer $JAZUI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"userAgent":"NuevoBot/1.0 (+https://nuevobot.ai)","url":"https://misitio.com/"}'
# 204 No Content

Your own integration

If your platform isn't listed, you can build one following the contract in Integrations: decide whether it's a bot with the /v2/bots list, call /Render with a maximum wait (20 s), pass the response on only if it has X-Jazui or is a 403 with X-Jazui-Blocked, and serve your website in any other case. Don't forward the bot's cookies or other headers.