Zum Hauptinhalt springen

Job

A batch of renders. Every key is always there.

idstringrequired

The job id: job_ and 32 hexadecimal digits.

Example: job_5f0c3b0a9d2e4c1b8a7f6e5d4c3b2a19
typestringrequired

batch for POST /renders/batch; single for the job a render with its own webhook_url gets, which a job.* event never names.

Possible values: [single, batch]

statusstringrequired

completed when every item succeeded, partially_failed when some failed, failed when all did. job.completed is sent for the first two, job.failed for the last.

Possible values: [queued, processing, completed, partially_failed, failed]

totalintegerrequired

Number of items.

succeededintegerrequired

Items that succeeded so far.

failedintegerrequired

Items that failed so far.

zip_urlstring<uri>nullablerequired

Link to the zip of the succeeded outputs, made like a download_url, once a batch with zip: true has finished; null before and without zip.

zip_expires_atstring<date-time>nullablerequired

When zip_url stops working, like a render's expires_at. The zip itself expires with the first of the outputs it packed.

storage objectnullablerequired

The zip's copy in the workspace's own bucket; each item carries its own.

statusstring

Possible values: [pending, delivered, failed]

bucketstring
Example: fennlor-docs
keystring
Example: formfeed/2026/09/rnd_7da09ab6cd9946b798c187c2a9350852/invoice.pdf
urlstringnullable

The object below the connection's public_base_url; null without one.

reasonstringnullable

Why a delivery failed: the credentials or bucket (permanent), the object (rejected), retries used up (exhausted), the output expired first (source_gone), the connection was paused after failures (connection_paused) or deleted (connection_deleted), the plan lost bring your own storage (plan), or the workspace was deleted (workspace_deleted).

Possible values: [permanent, rejected, exhausted, source_gone, connection_deleted, connection_paused, plan, workspace_deleted]

error objectnullable

The provider's answer, reduced: its code, the HTTP status and the first line of its message.

codestring
Example: AccessDenied
http_statusintegernullable
Example: 403
messagestring
Example: Access Denied
items object[]required

Every item as a render, in the order of the request.

  • Array [
  • idstringrequired

    The render id: rnd_ and 32 hexadecimal digits.

    Example: rnd_7da09ab6cd9946b798c187c2a9350852
    statusRenderStatusrequired

    queued (waiting for a render slot), rendering, then succeeded or failed.

    Possible values: [queued, rendering, succeeded, failed]

    outputOutputFormatrequired

    PDF and image templates, ad-hoc HTML and URLs produce pdf, png, jpg or webp; a docx template produces docx or pdf, a pptx template pptx or pdf.

    Possible values: [pdf, png, jpg, webp, docx, pptx]

    download_urlstring<uri>nullablerequired

    Link to the file. A PDF or office file is served as a download (Content-Disposition: attachment), an image inline under its name; download=1 on the link makes an image a download too. A signed link works for seven days at most (expires_at); a public output has a plain URL that works until the output expires. Null while queued, for a failed render, and once the output was deleted or has expired. Read the render again for a fresh signed link.

    expires_atstring<date-time>nullablerequired

    When download_url stops working: for a signed link the earlier of seven days and the end of the retention, for a public link the end of the retention. Null without a link, and for a public output that never expires.

    bytesintegernullablerequired

    Size of the file in bytes.

    page_countintegernullablerequired

    Pages of a PDF; null for other outputs and while queued.

    unitsnumberrequired

    Units this render cost: a PDF one per started five pages, an image or a Word or PowerPoint file one, a PDF tool step 0.5, plus 0.5 per post step and 1 for an e-invoice. 0 for test keys and for an answer from the dedup cache.

    Example: 1
    regionRegionrequired

    Where a workspace renders and stores. Every workspace is in eu (Frankfurt) today.

    Possible values: [eu, us, apac]

    environmentstringrequired

    test when a test key made it: free, kept a day at most, marked on the Free plan.

    Possible values: [live, test]

    template objectnullablerequired

    The template and version that rendered; null for HTML, URL and PDF tool renders and for an answer from the dedup cache.

    idstringrequired

    The id of the template as GET /templates returns it. A render request takes it as template.

    Example: tpl_3c9a0e5b7d1f4a2c8e6b0d4f2a7c9e1b
    slugstringrequired
    Example: invoice-de
    versionintegerrequired

    The version number that rendered.

    channelstringnullablerequired

    The release channel the version came from (published by default); null when the request named a version number or latest.

    canarybooleanrequired

    True when the channel's canary share picked this version.

    engine_versionstringnullablerequired

    Null until the render has succeeded. What produced the file, for reproducibility: the Chromium version and the template language (none for plain HTML and URLs); the office converter for Word and PowerPoint templates and conversions; the PDF library and the step for the PDF tools (pdf-lib; pdf merge).

    Example: chromium 140.0.7339.16; engine jinja2
    template_checksumstringnullablerequired

    Checksum of the template version that rendered; null for HTML, URL and PDF tool renders. Two renders with the same checksum used the same template content.

    output_sha256stringnullablerequired

    SHA-256 of the output file, as hexadecimal.

    deduplicatedbooleanrequired

    true when the answer came from the dedup cache; see dedupe.

    storage objectnullablerequired

    The output's copy in the workspace's own bucket; null when none applies (no connection, storage: false, a test render the connection does not take, a plan without bring your own storage). While the connection is paused after failures, the copy is recorded as failed with reason connection_paused and can be delivered again once the connection passes its test. A synchronous response reports pending: the copy is made in the background, and storage.delivered or storage.failed follow as webhook events.

    statusstring

    Possible values: [pending, delivered, failed]

    bucketstring
    Example: fennlor-docs
    keystring
    Example: formfeed/2026/09/rnd_7da09ab6cd9946b798c187c2a9350852/invoice.pdf
    urlstringnullable

    The object below the connection's public_base_url; null without one.

    reasonstringnullable

    Why a delivery failed: the credentials or bucket (permanent), the object (rejected), retries used up (exhausted), the output expired first (source_gone), the connection was paused after failures (connection_paused) or deleted (connection_deleted), the plan lost bring your own storage (plan), or the workspace was deleted (workspace_deleted).

    Possible values: [permanent, rejected, exhausted, source_gone, connection_deleted, connection_paused, plan, workspace_deleted]

    error objectnullable

    The provider's answer, reduced: its code, the HTTP status and the first line of its message.

    codestring
    Example: AccessDenied
    http_statusintegernullable
    Example: 403
    messagestring
    Example: Access Denied
    einvoice objectnullablerequired

    The e-invoice of this render: what was made, what the validator said and whether the PDF shows what the XML states. Null for a render that made none. A failed render keeps it too, which is where it says why.

    profilestring

    Possible values: [basic, en16931]

    flavourstring

    Possible values: [factur-x, zugferd]

    spec_versionstring

    The release of the specification the file was written and validated for, under the name of flavour: Factur-X 1.09 is ZUGFeRD 2.5.

    Example: 1.09
    xml_urlstring<uri>nullable

    A link to the XML, made like the render's download_url (signed, or the plain URL of a public output), when the render asked for xml: both and the file is still stored. The XML is inside the PDF either way.

    validation objectnullable

    What the validator said about the file. Null only when the render failed before it ran.

    validboolean

    No finding of severity error. A render succeeds only with a valid file.

    schematronstring

    The rule set the XML was held to, as it names itself, and the validator that ran it.

    Example: Factur-X 1.09.2 (Mustang 2.26.0)
    pdfastringnullable

    The PDF/A flavour the file was checked against; null when validation ended at the XML.

    Example: PDF/A-3b
    messages object[]

    At most 50, errors first.

  • Array [
  • partstring

    Whether the finding is about the invoice XML or about the PDF/A file.

    Possible values: [xml, pdf]

    severitystring

    Possible values: [error, warning]

    rulestringnullable

    The rule: of EN 16931 (BR-…), of the syntax binding (CII-SR-…), a code of the XML schema (cvc-…), or the clause of PDF/A (6.2.11.4.1-1). Null where the validator names none.

    Example: BR-CO-25
    messagestring
    locationstringnullable

    Where: an XPath into the XML (a line item always carries its index), a line and column for a finding of the XML schema, or the object of the PDF.

  • ]
  • truncatedboolean

    Present and true when there were more findings than messages holds.

    idstring<uuid>

    The validator's own id for this report. Quote it when you ask about a render; renders before 9 October 2026 have none.

    Example: 6f2c7e9a-1d4b-4c3e-8a5f-2b7d9e0c1a34
    versions object

    The versions of the validator's parts that judged the file. The pinned versions are listed in the documentation.

    property name*string
    xml_sha256string

    SHA-256 of the XML that was judged: the XML inside the PDF, and the file xml_url links.

    Example: 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b
    pdf_sha256stringnullable

    SHA-256 of the PDF that was judged. For a render that succeeded it is the delivered file and equals the render's output_sha256; null where the validator refused the XML before there was a converted file.

    Example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
    display objectnullable

    The display check: the values of the XML that were looked for in the text of the PDF, by their business term in EN 16931.

    checkedstring[]
    Example: ["BT-1","BT-109","BT-110","BT-112"]
    missingstring[]

    The terms the PDF does not show. Zero amounts are not looked for.

    Example: []
    accessibility objectnullablerequired

    What the validator said about the file as PDF/UA-1. Null unless the render set settings.pdf.ua. A strict render that failed keeps it too, which is where it names the rules.

    standardstring

    Possible values: [PDF/UA-1]

    checkstring

    Possible values: [strict, report]

    conformantboolean

    The file passed every rule the validator checks. Only then does it carry the PDF/UA identifier.

    validatorstring

    The validator and its version. Its rule set moves between releases.

    Example: veraPDF 1.30.2
    rules object
    passedinteger
    Example: 106
    failedinteger
    Example: 0
    failures object[]

    The rules the file failed, at most 20.

  • Array [
  • rulestring

    Clause and test number of the rule in veraPDF's PDF/UA-1 profile.

    Example: 7.4.2-1
    codestring

    What in the template the rule is about, where the template check found it. Absent for a rule it has no finding for.

    Possible values: [document-title, image-alt, figure-name, heading-order, table-rows, table-cell-empty, masked-text]

    countinteger

    How many checks of the rule failed.

    messagestring

    What to change in the template, else the validator's own description of the rule.

    Example: This h3 follows an h1, so a heading level is skipped. Make it an h2 and size it with CSS.
    elementsstring[]

    The start tags of the elements concerned, at most five.

    Example: ["<h3>"]
  • ]
  • warnings object[]

    What a reader will stumble over although no rule fails for it.

  • Array [
  • codestring

    Possible values: [filtered-text, document-language, table-headers, link-name, generated-text, fixed-text, running-text]

    countinteger
    elementsstring[]

    Start tags, or the text itself for running-text and generated-text; at most five.

  • ]
  • truncatedboolean

    Present and true when more rules failed than failures holds.

    timings objectnullablerequired

    Milliseconds per phase of a render that succeeded; null while it is queued or rendering and when it failed. A synchronous answer also sends them as Server-Timing.

    queue_msinteger

    Waiting for a render slot; only in the answer of a synchronous request, where it is 0.

    compile_msinteger

    Filling the template.

    render_msinteger

    In the browser.

    post_msinteger

    Post-processing, the e-invoice and the PDF/UA check included.

    upload_msinteger

    Storing the file.

    total_msinteger

    From start to finish; 0 for an answer from the dedup cache, which has no other phase.

    error objectnullablerequired

    Why a failed render failed, as the render stored it. Null unless status is failed; GET /renders/{id}/result answers the same failure as a full problem.

    codestringrequired

    The code of the problem the failure answers with. worker_exhausted is a render that failed every attempt of the queue; its message is the last attempt's.

    Possible values: [template_syntax_error, template_runtime_error, navigation_failed, render_timeout, page_limit_exceeded, output_too_large, invalid_request, source_not_found, source_invalid, source_encrypted, tool_failed, file_type_unsupported, office_document_invalid, office_document_too_large, office_conversion_failed, office_unavailable, unsupported_in_office, test_output_unavailable, einvoice_data_invalid, einvoice_display_mismatch, pdfa_conversion_failed, conformance_unavailable, pdfua_validation_failed, worker_exhausted]

    messagestringrequired

    What went wrong, in English.

    lineinteger

    Template errors of an HTML template: the line, from 1.

    columninteger

    And the column, from 1.

    engineEngine

    Template errors: the template language.

    Possible values: [jinja2, liquid, handlebars]

    partstring

    Word and PowerPoint templates: the part of the file.

    Example: word/document.xml
    paragraphinteger

    Word and PowerPoint templates: the paragraph within the part, from 1.

    diagnostics object[]

    Word and PowerPoint templates: every finding about the tags of the file.

  • Array [
  • severitystring

    error: a render (or, for data, validate_data) would fail; warning and info are advice.

    Possible values: [error, warning, info]

    messagestring

    The finding in English.

    codestring

    A stable name for the kind of finding.

    location object

    Where in the template source, line and column from 1.

    lineinteger
    columninteger
    pathstring

    Data errors only: where in the data, e.g. data.invoice.lines[0].qty.

    partstring

    Word and PowerPoint templates only: the file part the tag is in, e.g. word/document.xml or ppt/slides/slide2.xml.

    paragraphinteger

    Word and PowerPoint templates only: the 1-based paragraph in part, as the template page lists it.

  • ]
  • page_countinteger

    page_limit_exceeded: the pages the document has.

    reasonstring

    What the converter or validator said (office_conversion_failed, source_invalid, pdfa_conversion_failed, tool_failed).

    entrystring

    The part of an office file the error is about.

    limitinteger

    office_document_too_large: the limit in bytes.

    errors object[]

    einvoice_data_invalid: every field of the _invoice block that is missing or breaks a rule.

  • Array [
  • pathstringnullable
    messagestring
    rulestring
    Example: BR-CO-15
  • ]
  • attemptsinteger

    worker_exhausted: how often the queue tried.

    retry_afterinteger

    office_unavailable, conformance_unavailable: the seconds the busy service asked for.

    property name*anynullable

    Why a failed render failed, as the render stored it. Null unless status is failed; GET /renders/{id}/result answers the same failure as a full problem.

    meta objectrequired

    The meta of the request, unchanged.

    property name*any

    The meta of the request, unchanged.

    created_atstring<date-time>required
    completed_atstring<date-time>nullablerequired

    When the render succeeded or failed; null while queued or rendering.

  • ]
  • meta objectrequired

    The meta of the batch, unchanged.

    property name*any

    The meta of the batch, unchanged.

    created_atstring<date-time>required
    completed_atstring<date-time>nullablerequired
    Job
    {
    "id": "job_5f0c3b0a9d2e4c1b8a7f6e5d4c3b2a19",
    "type": "single",
    "status": "queued",
    "total": 0,
    "succeeded": 0,
    "failed": 0,
    "zip_url": "string",
    "zip_expires_at": "2024-07-29T15:51:28.071Z",
    "storage": {
    "status": "pending",
    "bucket": "fennlor-docs",
    "key": "formfeed/2026/09/rnd_7da09ab6cd9946b798c187c2a9350852/invoice.pdf",
    "url": "string",
    "reason": "permanent",
    "error": {
    "code": "AccessDenied",
    "http_status": 403,
    "message": "Access Denied"
    }
    },
    "items": [
    {
    "id": "rnd_7da09ab6cd9946b798c187c2a9350852",
    "status": "queued",
    "output": "pdf",
    "download_url": "string",
    "expires_at": "2024-07-29T15:51:28.071Z",
    "bytes": 0,
    "page_count": 0,
    "units": 1,
    "region": "eu",
    "environment": "live",
    "template": {
    "id": "tpl_3c9a0e5b7d1f4a2c8e6b0d4f2a7c9e1b",
    "slug": "invoice-de",
    "version": 0,
    "channel": "string",
    "canary": true
    },
    "engine_version": "chromium 140.0.7339.16; engine jinja2",
    "template_checksum": "string",
    "output_sha256": "string",
    "deduplicated": true,
    "storage": {
    "status": "pending",
    "bucket": "fennlor-docs",
    "key": "formfeed/2026/09/rnd_7da09ab6cd9946b798c187c2a9350852/invoice.pdf",
    "url": "string",
    "reason": "permanent",
    "error": {
    "code": "AccessDenied",
    "http_status": 403,
    "message": "Access Denied"
    }
    },
    "einvoice": {
    "profile": "basic",
    "flavour": "factur-x",
    "spec_version": "1.09",
    "xml_url": "string",
    "validation": {
    "valid": true,
    "schematron": "Factur-X 1.09.2 (Mustang 2.26.0)",
    "pdfa": "PDF/A-3b",
    "messages": [
    {
    "part": "xml",
    "severity": "error",
    "rule": "BR-CO-25",
    "message": "string",
    "location": "string"
    }
    ],
    "truncated": true,
    "id": "6f2c7e9a-1d4b-4c3e-8a5f-2b7d9e0c1a34",
    "versions": {
    "mustang": "2.26.0",
    "verapdf": "1.30.2",
    "pdfbox": "3.0.8"
    },
    "xml_sha256": "3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b",
    "pdf_sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
    },
    "display": {
    "checked": [
    "BT-1",
    "BT-109",
    "BT-110",
    "BT-112"
    ],
    "missing": []
    }
    },
    "accessibility": {
    "standard": "PDF/UA-1",
    "check": "strict",
    "conformant": true,
    "validator": "veraPDF 1.30.2",
    "rules": {
    "passed": 106,
    "failed": 0
    },
    "failures": [
    {
    "rule": "7.4.2-1",
    "code": "document-title",
    "count": 0,
    "message": "This h3 follows an h1, so a heading level is skipped. Make it an h2 and size it with CSS.",
    "elements": [
    "<h3>"
    ]
    }
    ],
    "warnings": [
    {
    "code": "filtered-text",
    "count": 0,
    "elements": [
    "string"
    ]
    }
    ],
    "truncated": true
    },
    "timings": {
    "queue_ms": 0,
    "compile_ms": 0,
    "render_ms": 0,
    "post_ms": 0,
    "upload_ms": 0,
    "total_ms": 0
    },
    "error": {
    "code": "template_syntax_error",
    "message": "string",
    "line": 0,
    "column": 0,
    "engine": "jinja2",
    "part": "word/document.xml",
    "paragraph": 0,
    "diagnostics": [
    {
    "severity": "error",
    "message": "string",
    "code": "string",
    "location": {
    "line": 0,
    "column": 0
    },
    "path": "string",
    "part": "string",
    "paragraph": 0
    }
    ],
    "page_count": 0,
    "reason": "string",
    "entry": "string",
    "limit": 0,
    "errors": [
    {
    "path": "string",
    "message": "string",
    "rule": "BR-CO-15"
    }
    ],
    "attempts": 0,
    "retry_after": 0
    },
    "meta": {},
    "created_at": "2024-07-29T15:51:28.071Z",
    "completed_at": "2024-07-29T15:51:28.071Z"
    }
    ],
    "meta": {},
    "created_at": "2024-07-29T15:51:28.071Z",
    "completed_at": "2024-07-29T15:51:28.071Z"
    }