ReflowPDF API api.reflowpdf.com/v1

    Engine versions

    Every print says which engine made it; a print can be pinned to the one before.

    The engine improves with each release: a law of the spec kept more closely, a layout more like a browser's. A document that depends on how it printed before can keep printing that way while you check it with the new engine.

    Which engine printed it#

    Every print says it: ReflowPDF-Engine: af4ba3e3b beside the file, engine in the JSON (a job's result too); a merge, split or compress says it when a part of it was printed in the same request. GET /v1/engines lists the versions that print now:

    {
      "object": "list",
      "has_more": false,
      "data": [
        {
          "object": "engine",
          "version": "af4ba3e3b",
          "status": "current",
          "available_until": null
        },
        {
          "object": "engine",
          "version": "866470307",
          "status": "previous",
          "superseded_at": "2026-11-01T06:13:22.000Z",
          "available_until": "2026-12-01T06:13:22.000Z"
        }
      ]
    }

    Pin a print#

    curl https://api.reflowpdf.com/v1/pdf \
      -H "Authorization: Bearer $REFLOWPDF_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"html": "<h1>Q3</h1>", "engine": "866470307"}' -o q3.pdf
    • engine goes on any request that prints: HTML, a template, images, the layout, a job, a part of a merge.
    • When a release brings a new engine, the one before keeps printing until three newer engines have shipped, and for 30 days at most: available_until is that latest moment. Engines ship often, sometimes several in a week, so a pinned version can end well before it.
    • A version that prints no more answers 422 engine_unavailable, naming the ones that do. Without engine, the current engine prints.
    • A pinned version is the engine as it was: it gets no fixes. Pin it while you check your documents with the current engine (ReflowPDF-Engine says which printed), then leave engine out.