# Export Label Artifact

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

Generate (or return cached) label artifact(s) for one serving.

On the first request for a given (recipe version, serving, format,
resolution) combination the label HTML is assembled, rendered by the
label-renderer Lambda, and the result is permanently cached in S3.
Subsequent requests return the cached artifact without re-rendering.

Concurrent first-download requests are safe — only one PUT lands;
all others receive a pre-signed URL for the same artifact.

Organizations in their trial period or on the Free plan always receive a
DRAFT-watermarked artifact, whatever the ``draft_watermark`` parameter
says, and so do organizations whose billing status cannot currently be
confirmed.
Organizations on a paid plan receive the final, watermark-free artifact
unless they pass ``draft_watermark=true``.

Each file carries a proof footer unless ``proof_footer`` is false.  Each artifact reports ``download_url``
(saves the file under ``file_name``), ``rendered_at`` and the footer state.

Organizations on a non-subscription plan (``past_due``/``expired``/
``cancelled``) may still re-fetch an already-cached artifact, but a
request that would require a fresh render (bm-be#2296) is denied with a
402.

When label readiness is on, a mandatory nutrient that no ingredient's source
reports prints as a stated zero, and the maker must confirm each one before
the label is issued. A label with an unconfirmed stated zero is refused with
428 ``label_review_required``, listing each nutrient and the ``fills_hash``
to confirm it with (save the confirmation through the label settings, then
retry). A finding that blocks the label, such as a missing calorie value, is
refused with 422 ``label_not_ready``.

A label can also carry findings nobody has addressed, such as an Added Sugars
determination that is not confirmed; each names its nutrients. Exporting it
needs them acknowledged on every channel: without ``acknowledged_findings_hash``
the export is refused with 428 ``label_acknowledgement_required``, listing the
findings and the ``findings_hash`` to send back. An organization whose policy
is to block refuses the export with 422 ``label_blocked_by_findings`` instead,
and acknowledging does not help.

Available only on API versions declaring the ``recipe_versioning`` capability.
