Skip to main content
Batch Relay publishes provider-neutral canonical products. The catalog response contains families for browsing and products for ordering. Every product has a stable ID, immutable fulfillment revision, explicit physical output, quantity meaning, options, and prepared-media contract. Fetch the catalog instead of hardcoding a provider SKU, image shape, or product alias:
Submit that revision with prepared media for your chosen product. Batch Relay does not crop or silently alter order artwork. The public API can copy an external source into managed fulfillment storage, and the optional template renderer can create composed artwork before fulfillment.

Start with the catalog

The catalog is the live authority for availability, lifecycle status, revisions, and option values. A family groups related immutable variants. Orders and quotes still use a concrete product ID and revision. If a page and the catalog disagree, use the catalog response.

Prepared assets

Every order item has an assets array. Each asset has a semantic role and exactly one source: an external HTTPS url or an authorized asset_id. Creating a quote copies URL sources into private managed fulfillment storage; an asset_id reuses already-managed bytes without another copy. Immutable dimensions, size, format, and SHA-256 metadata are resolved from the stored bytes rather than trusted from caller hints. Examples of roles include artwork, background, individual, team, logo, front, and back. The catalog is authoritative for which roles are required, each role’s aspect ratio, and rotation_policy. A role appears exactly once. A URL only needs to remain available through successful quote creation; submission and fulfillment use the quote-owned managed snapshot. The product examples below focus on the product-specific portion of an item. An external URL source can be supplied as:
For an existing managed asset, replace url with asset_id. URL-backed quote requests require an Idempotency-Key; retries reuse the same immutable copy. Provider offers are discovery-only. They do not ingest assets or create a submit-ready total.

Orientation and provider placement

Every asset role defaults to rotation_policy: "fixed": prepare the exact orientation and ratio listed on its product page. Batch Relay rejects a wrong canonical role or ratio; it never edits the image to make it fit. Only a role published with rotation_policy: "allowed" accepts the reciprocal ratio. Standard prints, active Memory Mates, the 4 × 5 Magnet, and revision 3 Contemporary Plaques allow rotation. When a template is used, its renderer produces a final ordinary print artifact in the selected output geometry before the fulfillment step. For the current WHCC adapter, native AutoRotate is enabled only for an explicitly allowed role. It is disabled for fixed roles. The adapter preflights placement against the verified provider node and rejects a fit that would require more than a 1.25% center crop. This is provider-side placement reconciliation, not an image transformation.

Prints

Keepsakes

Trader products

Designed output

template_requirement controls whether an order may use prepared artwork directly:
  • optional means the product can use prepared artwork directly or a succeeded Batch Relay render. Standard photographic prints, current Contemporary Plaques, Photo Button, and 4 × 5 Magnet use this policy. Trader Cards accept prepared front/back artwork through the API; storefront offers require a published template producing both sides.
  • required means the product must use the asset_id from a succeeded Batch Relay render and the matching template_render_id. A raw URL or unrelated managed asset is rejected.
  • unsupported means the product has no supported template workflow.
The designed products below all use template_requirement: "required". Their rendered artwork remains attached to the Memory Mate or magazine-cover order record, then fulfills through its pinned standard-print target. See Template renders for the render workflow.

Digital delivery

Digital Download is a live catalog record, but the public print-order API does not create or deliver digital entitlements. Do not put it in a print-order request.

Pricing and availability are explicit

Catalog products identify the canonical product and its fulfillment contract. Provider offers identify what a given provider can supply and its exact cost per ordered quantity:
Match the exact product revision, configuration and provider. Offers may also appear in provider_offers on a product response. Product identity and physical output never supply a price. Offers do not expose provider-native SKUs or adapter mappings. Discovery prices cannot be submitted as an order charge. Create a quote to freeze the selected offers, shipping, tax, the api-access-fee-v1 policy, and total for 15 minutes. The quote’s provider_offer_lines records the exact provider offer, unit cost, quantity, and line subtotal for each requested order line. Catalog support means Batch Relay recognizes and validates the canonical contract. Offer availability and hosted quote availability are separate decisions. Use the offer and quote response for the environment in which you will order; do not infer fulfillment readiness from a product page. An offer with availability: "unknown" and no unit_cost_cents has no verified provider price. Do not display it as free or infer a purchasable quote from catalog visibility. Studio retail prices are configured separately from provider costs. An approved numeric zero is valid. Test unit_cost_cents for presence and a nonnegative integer, not truthiness. Missing amounts remain unknown. Multiply the approved cost by ordered quantity, never by units_per_quantity. For example, quantity 2 of a product with units_per_quantity: 12 produces 24 cards and consumes two packs at the returned cost per pack. Public offers describe the deployment’s pricing environment; they do not replace protected account-specific staff pricing or authorize switching credential lanes.