ReflowPDF API api.reflowpdf.com/v1

    Changelog

    Version 1 keeps every endpoint and field. A code or a check that was wrong is corrected, and listed here.

    Follow it in a feed reader: changelog.xml (Atom).

    2026-11-04#

    • POST /v1/jobs/{id}/webhook answers 409 delivery_in_progress while an attempt to deliver the event is under way. It answered idempotency_in_progress, which is the code of an Idempotency-Key.
    • pdf_a: "1b" with pdf_ua: 2 is refused before printing, 400 invalid_request: PDF/A-1 is PDF 1.4 and PDF/UA-2 is PDF 2.0.
    • The type of a 502 render_failed links to its own row of the errors, not to the 422 one.
    • GET /v1/engines: available_until is the latest moment a previous engine prints. It stops sooner once three newer engines have shipped (Engine versions).
    • 404 examples name what each route looks for: job_not_found, file_not_found, a print condition's not_found.
    • The SDKs and @reflowpdf/engine install from https://api.reflowpdf.com/sdk/, and a page loads the engine's files from there, as brotli or gzip (SDKs).

    2026-11-01: v1#

    • POST /v1/pdf, GET /v1/templates, GET /v1/templates/{id}, POST /v1/templates/{id}/pdf: HTML and templates to PDF. options carries every capability of the engine: PDF/UA-1 and PDF/UA-2, PDF/A-3a and PDF/A-1b, PDF/X-4 and PDF/X-1a with GET /v1/output-intents or your own ICC profile, header_footer, watermark, encryption (AES-256), attachments, metadata, compression, object_streams, color_scheme, default_font_size, print_scale, shrink_to_fit, base_css, base_url, input_format, allow_remote, max_pages.
    • url in place of html: a public page, fetched and printed.
    • options.javascript: the document's scripts run before it prints; what they could not do is in scripts (JavaScript).
    • POST /v1/images and /v1/layout (and those of a template): pages as PNG or WebP, and where everything lands.
    • POST /v1/pdf/merge, /v1/pdf/split, /v1/pdf/compress (Merge, split, compress).
    • Jobs (POST /v1/jobs, GET /v1/jobs, GET /v1/jobs/{id}, POST /v1/jobs/{id}/webhook) with output, signed webhooks and upload, a PUT of the file to your own storage; GET /v1/webhook-secret, POST /v1/webhook-secret/rotate.
    • engine on every print and GET /v1/engines: a print pinned to an engine version (Engine versions).
    • Files by link (GET, DELETE /v1/files/{id}), Idempotency-Key, GET /v1/usage, RateLimit-* on every response, problem details (RFC 9457).
    • API keys with scopes (print, templates, account, assistant) and the addresses a key may be used from (Authentication).
    • What a print went without: missing_variables, skipped_resources, missing_glyphs, missing_fonts, in the JSON and as ReflowPDF-* headers beside the file.
    • GET /v1/status and the Status page: each part checked every minute.
    • SDKs for JavaScript/TypeScript and Python. @reflowpdf/engine, the engine in WebAssembly, with GET /v1/engine/license for its license's token and GET /v1/fonts/{family}, GET /v1/fonts/files/{id} for the catalogue's faces.