Documentation Index
Fetch the complete documentation index at: https://api.docs.onlydrams.app/llms.txt
Use this file to discover all available pages before exploring further.
Endpoints
Nested:producers → brands → product_lines → variants.
| Action | Who |
|---|---|
GET | Any ODIS user |
POST / PATCH / DELETE | Admin or editor |
Request body
Body key:variant.
Fields
producer_id— optional; defaults toproducer_idin the path when not setdisplay_name,batch_name,vintage_year,released_at,sku,proofmetadata— object (merged for variant)- Sizes — one of:
size_ids: array of size UUIDs, orsize_assignments: array of per-size rows (for create or when updating with assignments)
size_assignments, existing variant size rows for that variant are replaced with the new list. If you send size_ids instead, the variant is assigned those sizes (legacy path).
size_assignments row shape
Each element can include (commonly used fields):
| Field | Type | Notes |
|---|---|---|
size_id | UUID | Required for each non-skipped row |
upc | string, optional | If present, must be 8, 12, 13, or 14 decimal digits (GTIN-style length) |
bottle_price, bottle_secondary_lower_bound, bottle_secondary_upper_bound | number | |
msrp | number | |
auction_secondary_lower_bound, auction_secondary_upper_bound | number | |
rarity | string | |
optionals | array | |
sb_attributes | object |
upc or leave it blank to clear it for that size row, subject to model rules.
Response (detail)
Includesid, product_line_id, producer_id, display_name, effective_name, batch_name, vintage_year, released_at, sku, proof, metadata, effective_metadata, size_ids, and size_assignments (array with size_id, milliliters, display, and the per-row fields above).
released_at is serialized in ISO 8601 when present.
Example (create with assignments)
See also
- Product lines —
formandaggregatefor editing many variants at once. - Spirits catalog overview — authentication, issuer
odis, and errormessageformat.

