Skip to main content
GET
Retrieve a product

Authorizations

Authorization
string
header
required

A store API key, sent as Authorization: Bearer <key>.

A key looks like tbrn_live_ followed by 48 hex characters, e.g. tbrn_live_4f2a...c91b. Mint one in the Taberna dashboard under Developers → API Keys, tick the scopes the integration needs, and copy it there and then — the full value is shown once and only its hash is stored, so a lost key is replaced rather than recovered.

One key belongs to one store and carries a fixed scope set. Send it from a server, never from a browser: it can create orders and invoices and read every order the store has.

Path Parameters

id
string<uuid>
required

The product to act on. Formatted as a UUID, e.g. 3f1a9c2e-7b04-4d8e-9a6f-2c5b1e0d7a83.

Example:

"3f1a9c2e-7b04-4d8e-9a6f-2c5b1e0d7a83"

Response

The product.

A product in the store's catalogue.

id
string<uuid>
required

The product's id — pass it in an order's items to sell it. Formatted as a UUID, e.g. 3f1a9c2e-7b04-4d8e-9a6f-2c5b1e0d7a83.

Example:

"3f1a9c2e-7b04-4d8e-9a6f-2c5b1e0d7a83"

title
string
required

Product name as shown at checkout.

Example:

"Nitro — 1 Month"

body
string | null
required

Long-form product description. Null when unset.

price
string
required

Price of one unit. Decimal string in the resource's fiat currency, e.g. "49.99" — a string, never a JSON number, so no precision is lost in transit.

Example:

"49.99"

currency
enum<string>
required

The fiat currency every amount on this resource is priced in. Crypto is quoted against it at payment time.

Available options:
usd,
eur
Example:

"usd"

productType
enum<string>
required

How the product is sold. single-purchase — a one-off purchase, the only mode today.

Available options:
single-purchase
Example:

"single-purchase"

listed
boolean
required

Whether the product is visible on the storefront. Unlisted products can still be bought through an order you create.

Example:

true

image
string | null
required

Absolute URL of the product image, or null when it has none.

Example:

"https://cdn.taberna.io/products/nitro.png"

deliveryType
enum<string> | null
required

How the product is fulfilled once an order completes. text_pool — one line of stock per unit sold (keys, codes, accounts). text_shared — the same text to every buyer. file_shared — the same file, handed over as a short-lived download link. redirect — the buyer is sent to a URL you host. Null when no delivery is configured yet. The contents are never exposed here — only the type and, for pools, the remaining count.

Available options:
text_pool,
text_shared,
file_shared,
redirect
stock
integer | null
required

Units still available for a text_pool delivery. Null when delivery is unlimited (text_shared, file_shared, redirect) or not configured.

Required range: -9007199254740991 <= x <= 9007199254740991
Example:

42

minQuantity
integer
required

Fewest units one order may buy.

Required range: -9007199254740991 <= x <= 9007199254740991
Example:

1

maxQuantity
integer | null
required

Most units one order may buy. Null when uncapped.

Required range: -9007199254740991 <= x <= 9007199254740991
Example:

10

createdAt
string<date-time>
required

When the product was created. UTC timestamp in ISO 8601, e.g. 2026-07-29T14:30:00.000Z.

Example:

"2026-07-29T14:30:00.000Z"

updatedAt
string<date-time> | null
required

When the product was last edited. Null if never. UTC timestamp in ISO 8601, e.g. 2026-07-29T14:30:00.000Z.

Example:

"2026-07-29T14:30:00.000Z"