Base URL
/v1.Design
Everything is scoped to you
Everything is scoped to you
There is no
user_id parameter anywhere, because there does not need to be
one. Your API key identifies you, and every query is scoped to your account
before it runs. An id belonging to someone else returns 404 — never 403,
which would confirm the row exists.Metric, always
Metric, always
Kilograms, grams, litres, degrees Celsius, minutes. The unit preference in
the app is a display setting and does not affect the API. Gravity readings
are specific gravity, with the unit you entered recorded alongside.
Children are created against their parent
Children are created against their parent
A hop is created at
POST /v1/recipes/{recipeId}/hops, but updated and
deleted at /v1/hops/{id}. Ids are globally unique, so once you have one
you do not need to remember what it belongs to.Stats are computed, never stored
Stats are computed, never stored
GET /v1/recipes/{id}/stats recalculates from the current ingredients every
time. There is no cache to invalidate and no stale number to work around.A first request
Building a recipe end to end
1
Create the recipe
id.2
Add ingredients
3
Check the numbers
4
Brew it
What is not in the REST surface
POST /v1/chat streams a response and is built for the app’s chat panel rather
than for scripting. The threads themselves are ordinary REST resources under
/v1/chats, so listing and reading past conversations works normally.
Next
Authentication
Create an API key and make your first authenticated call.
Errors
Status codes, error shapes, and rate limits.