POST /v1/assets/ingest creates or resolves one opaque managed asset for render
and managed attachment workflows. It requires print_orders:write and an
Idempotency-Key containing 1–200 characters.
The returned asset_id can be used directly in a public print-order asset or a
template image slot. A print-order asset also accepts an external HTTPS url;
Batch Relay copies that source during quote creation and freezes the resulting
managed asset with the quote.
Choose exactly one source
The request must contain exactly one ofurl or asset_id.
Use url to copy an externally routable HTTPS image into Batch Relay’s private
fulfillment storage:
asset_id to resolve a ready, authorized managed asset without copying its
bytes:
invalid_asset_source (422).
Reusing an idempotency key with different request content returns
idempotency_conflict (409). A deployment without its managed registry or
private R2 configuration returns a managed-asset unavailable error (503).
Response
The successful201 response returns the stable asset_id plus immutable
metadata. reused is true when Batch Relay resolved an existing asset_id or
the content-addressed object already existed.
POST /v1/templates/{template_id}/renders or
as the source of a public print-order asset. Each print-order asset contains its
semantic role and exactly one of url or asset_id. Hosted renderer dispatch
is enabled on the staging API. Production availability remains independent and
must be verified before enabling a production workflow.
Retention and reprints
Managed external assets are temporary:- An unattached asset is scheduled for cleanup 28 days after its managed record is created.
- Once attached to an order, retention extends to the later of 28 days after order placement or 14 days after verified shipment.
- An open reprint hold removes the cleanup deadline. Closing the hold applies its explicit future extension and recalculates the latest deadline across all attachments.
fulfillment/api-ingested/sha256/ and
fulfillment/rendered/<job>/<surface>/<sha256>.<format>; it cannot delete a
studio object or enumerate a prefix.
Do not treat asset_id as permanent archival storage. After authorized cleanup,
re-ingest your retained source before a new render or attachment.