Render pages as ONE multi-page file: PDF or self-contained HTML

ASYNC. Pages = ordered presets (inline pages[] or a saved document_id). 2 credits include the first 20 final pages; add 1 credit for each additional begun 20-page block, plus the existing full-raster compute surcharge above the standard-page floor. The quote uses the final prepared page count. Charged once up front; failed jobs refund automatically. Up to 20 authored pages and 200 final pages, including table continuations. Account pending document limits refuse with 429 document_queue_full before charge. The caller decides how content splits into pages. Text stays searchable vector; layers outside the document profile (shadows, blurs, blend modes) are rasterized and reported in the job warnings.

post/render/document

Request

  • Base URL: https://rendry.io/api/v1
  • URL: https://rendry.io/api/v1/render/document
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer
    • HTTP bearer

Headers

X-Rendry-Accountstring

Browser/OAuth current member account selector. API keys/embed credentials are bound to their persisted account and reject another account. Omitting this header selects the browser actor personal account.

Request body

document_idstring

Saved template from GET /documents. Either this or pages

pagesDocumentPage[] (unresolved $ref)
dynamic_dataobject

Shared substitutions for pages without their own

rowsobject

Rows for every page's top-level tables bound to rows_key. A page's own rows win; an absent key retains sample rows, while an explicit empty array clears them. With row_height > 0, body rows paginate in order and the header repeats. Row/cell limits apply to each final page for supplied document rows. At most 20 authored pages and 200 final pages; dry_run quotes the exact row_ranges and cost before submission.

dry_runboolean

Count, do not draw: page count, price and the layers that will be rasterized. No job, no file, no credits spent

format'pdf' | 'html' | 'html_embed'

pdf (default) | html — one self-contained HTML file, pages stacked with print page breaks. html_embed is the same format under its older name

webhook_urlstring

POST-ed {job_id,status,result_url} once the document is done; the outcome of that call is reported as webhook on GET /render/status/{id}. Must be an http or https address on the public internet: an unparseable address, another scheme, an internal host name or a literal private, loopback or link-local IP is refused with 400 invalid_webhook_url before anything is priced, queued or charged.

rows_refsRowsReferences

Request-only UTF-8 source names, 1..128 bytes. Across all scopes at most 40 declarations; all declarations including overridden validate before reads. Effective visible table sources fetch once per URL+format under SafeHTTP, 4194304 aggregate bytes and 25 seconds. JSON array objects must have only string values; CSV preserves exact quoted newlines and strings. At most 8000 rows/source and 200 fields/row. Errors never echo URLs or data. Stdio has a separate local path normalization budget; HTTP paths refuse.

Response

dry_run: true — the quote. status is dry_run; cost, page_count, warnings and losses say what the render would charge and what would be rasterized. No job, no file, nothing charged.

formatstring

Document output format.

job_idstring
statusstring
status_urlstring
messagestring
pages_usedstring[]

preset_id of every page queued — determinism between calls.

pagesinteger

Output page count for document quotes and submissions.

cost_creditsnumber

Displayed credits for the document. A dry run does not charge.

credits_chargednumber

What this call actually took, in credits, at the moment it was queued. Distinct from cost_credits, which a dry run reports for work that is NOT charged.

warningsstring[]

dry_run: the same warnings the finished job would carry.

text_searchableboolean

dry_run: true when every page's text comes out of the file as the words it was typed as, false when a line stays text and stops being WORDS (letter_spacing past size/20). ABSENT when the document carries no text at all, so a client promises nothing about a sheet of scans.

errorstring

On a refusal: the machine code (see Refusal); message is its sentence. On 402 it is the credit failure: see balance, required, packages_url.

balancenumber

402 only: credits the account has.

requirednumber

402 only: credits this render needs.

packages_urlstring

402 only: where to top up.

Changes

No recorded changes to this operation across all 1 revision of this API.