Skip to content
Hardcount
Run it locally
Pre-1.0 · one maintainer · Stripe and cards only · no SDKs (client libraries) yet · no production users yet. Docs describe v0.9.1 (29 Oct 2026) · What’s new →

Get recipe

GET
/v1/recipes/{key}
curl --request GET \
--url http://localhost:8080/v1/recipes/example \
--header 'Authorization: Bearer <token>'

Registry only — no DB read, no install state.

key
required
string

Recipe template with creates summary

Media typeapplication/json
object
key
required
string
version
required
string
name
required
string
summary
required
string
description
string
overridable
required
Array<object>

One override key declared in a recipe’s overridable list. Drives validation at instantiate time and the override form in the dashboard’s preview dialog.

object
key
required
string
type
required
string
Allowed values: string int
default
required

Default value applied when the override is not supplied.

enum
Array<string>
max_length
integer
pattern
string
meters
required
Array<object>
object
event_name
required
string
name
required
string
unit
required
string
aggregation
required
string
plans
required
Array<object>
object
code
required
string
name
required
string
currency
required
string
billing_interval
required
string
Allowed values: monthly yearly
base_amount_cents
required
integer format: int64
base_bill_timing

Optional when the base fee is 0; the plan is then in_arrears (ADR-031).

string
Allowed values: in_advance in_arrears
prices
required

The plan’s usage prices. Each takes the plan’s currency.

Array

One usage price of a recipe plan. It takes the plan’s currency.

object
meter
required

The event_name of the recipe meter the price is on.

string
dimension_match
required
object
key
additional properties
string
mode
required

per_unit bills quantity × unit_amount_cents. graduated bills each tier’s part of the quantity at that tier’s rate. package bills ceil(quantity ÷ package_size) × package_amount_cents: a part package bills as a whole one.

string
Allowed values: per_unit graduated package
unit_amount_cents
required

Price per unit in cents, as a decimal string (e.g. “0.0003” = $3.00 per 1,000,000 units). Used when mode is per_unit. 0 or more, under 10^18, at most 12 decimal places (trailing zeros do not count), and at most 100 characters. A JSON number is also read. A value outside them is refused with 422 and param naming the field. Invoice line amounts round to whole cents.

string
tiers
required

Used when mode is graduated. Each up_to is a whole number above the one before. The last tier has up_to: null (no upper bound), and only the last. Otherwise 422 with param tiers. A tier’s rate takes the limits of unit_amount_cents; a refusal names tiers[i].unit_amount_cents (i counts from 0).

Array<object>
object
up_to
required

The tier’s upper bound in whole units: the tier prices the quantity above the previous tier’s bound, up to this one. null on the last tier, which has no upper bound. Only the last tier is null, and it must be.

integer format: int64
nullable
unit_amount_cents
required

Price per unit in cents in this tier, as a decimal string.

string
package_size
required

Used when mode is package. Must be above 0.

integer format: int64
package_amount_cents
required

Price of one package in cents, as a decimal string (e.g. “0.2” with package_size 1000 = $0.002 per 1,000 units), with the limits of unit_amount_cents. Used when mode is package.

string
creates
required

Per-role count of objects a recipe will produce when instantiated. Recipes create no product entity — there is no products count.

object
meters
required
integer
plans
required
integer
prices
required

The prices the install puts on its plans.

integer

Example

{
"overridable": [
{
"type": "string"
}
],
"plans": [
{
"billing_interval": "monthly",
"base_bill_timing": "in_advance",
"prices": [
{
"mode": "per_unit"
}
]
}
]
}

Unknown recipe key