Fermentables

Query your brewery's fermentable inventory via the Brewgenix REST API.

Get Fermentable

Returns a single fermentable by its ID.

GET /api/v1/{account}/fermentables/{id}

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe fermentable UUID.

Authentication

Requires a valid API key passed as a Bearer token. See Authentication.

Example Request

curl "https://app.brewgenix.com/api/v1/my-brewery/fermentables/b2c3d4e5-f6a7-..." \
  -H "Authorization: Bearer bgx_<your-key>"

Example Response

{
  "id": "b2c3d4e5-...",
  "name": "Pale Malt (2 Row)",
  "type": "grain",
  "origin": "US",
  "supplier": "Briess",
  "color_lovibond": 1.8,
  "potential_ppg": 37.0,
  "yield_pct": 79.0,
  "created_at": "2025-01-15T10:00:00Z",
  "updated_at": "2025-01-15T10:00:00Z"
}

Error Responses

StatusDescription
401Missing or invalid API key.
404Fermentable not found.
500Internal server error.

List Fermentables

Returns a paginated list of fermentables in your brewery account.

GET /api/v1/{account}/fermentables

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-based).
limitinteger20Number of results per page. Maximum 100.
qstring-Search query. Filters by name, origin, or supplier.
typestring-Filter by fermentable type (e.g. grain, adjunct, extract).

Authentication

Requires a valid API key passed as a Bearer token. See Authentication.

Example Request

curl "https://app.brewgenix.com/api/v1/my-brewery/fermentables?page=1&limit=20&type=grain" \
  -H "Authorization: Bearer bgx_<your-key>"

Example Response

{
  "data": [
    {
      "id": "b2c3d4e5-...",
      "name": "Pale Malt (2 Row)",
      "type": "grain",
      "origin": "US",
      "supplier": "Briess",
      "color_lovibond": 1.8,
      "potential_sg": 1.037,
      "max_in_batch_pct": 100.0,
      "moisture_pct": 4.0,
      "protein_pct": 11.7,
      "notes": "Base malt for most American ale styles.",
      "created_at": "2025-01-15T10:00:00Z",
      "updated_at": "2025-01-15T10:00:00Z"
    }
  ],
  "count": 1,
  "page": 1,
  "pageSize": 20,
  "pageCount": 1
}

Response Fields

Top-level

FieldTypeDescription
dataarrayArray of fermentable objects.
countintegerTotal number of fermentables matching the query.
pageintegerCurrent page number.
pageSizeintegerNumber of results returned on this page.
pageCountintegerTotal number of pages.

Fermentable Object

FieldTypeDescription
idstringUnique identifier (UUID).
namestringFermentable name.
typestringType: grain, adjunct, extract, sugar, or fruit.
originstringCountry of origin.
supplierstringMaltster or supplier name.
color_lovibondnumberColour in degrees Lovibond (°L).
potential_sgnumberMaximum potential specific gravity contribution.
max_in_batch_pctnumberMaximum recommended percentage in a batch.
moisture_pctnumberMoisture content percentage.
protein_pctnumberProtein content percentage.
notesstringAdditional notes or usage guidance.
created_atstringISO 8601 timestamp when the fermentable was created.
updated_atstringISO 8601 timestamp of the last update.

Error Responses

StatusDescription
401Missing or invalid API key.
400Invalid query parameters (e.g. limit exceeds 100).
500Internal server error.

Create Fermentable

Creates a new fermentable in your brewery account.

POST /api/v1/{account}/fermentables

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).

Authentication

Requires a valid API key passed as a Bearer token. See Authentication.

Request Body

Send a JSON object with the following fields:

FieldTypeRequiredDescription
namestringYesFermentable name.
typestringYesType: grain, sugar, liquid_extract, dry_extract, adjunct, or other.
originstringNoCountry of origin.
supplierstringNoMaltster or supplier name.
descriptionstringNoDescription or usage notes.
color_lovibondnumberNoColour in degrees Lovibond (°L). Must be ≥ 0.
potential_ppgnumberNoPotential points per pound per gallon. Must be ≥ 0.
yield_pctnumberNoYield percentage (0–100).
exclude_from_totalbooleanNoWhether to exclude from total grain bill. Defaults to false.
not_fermentablebooleanNoWhether the fermentable is non-fermentable. Defaults to false.
categorystringNoGrain category: base_6row, base_maris_otter, base_munich, base_pilsner, base_wheat, base_vienna, crystal_caramel, roasted, or acidulated.
max_in_batch_pctnumberNoMaximum recommended percentage in a batch (0–100).
moisture_pctnumberNoMoisture content percentage (0–100).
protein_pctnumberNoProtein content percentage (0–100).
diastatic_powernumberNoDiastatic power in Lintner. Must be ≥ 0.
notesstringNoAdditional notes.

Example Request

curl -X POST "https://app.brewgenix.com/api/v1/my-brewery/fermentables" \
  -H "Authorization: Bearer bgx_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Pale Malt (2 Row)",
    "type": "grain",
    "origin": "US",
    "supplier": "Briess",
    "color_lovibond": 1.8,
    "potential_ppg": 37.0,
    "yield_pct": 79.0
  }'

Example Response

{
  "id": "b2c3d4e5-...",
  "name": "Pale Malt (2 Row)",
  "type": "grain",
  "origin": "US",
  "supplier": "Briess",
  "color_lovibond": 1.8,
  "potential_ppg": 37.0,
  "yield_pct": 79.0,
  "exclude_from_total": false,
  "not_fermentable": false,
  "created_at": "2026-02-24T10:00:00Z",
  "updated_at": "2026-02-24T10:00:00Z"
}

Error Responses

StatusDescription
401Missing or invalid API key.
400Request body is not valid JSON.
422Validation failed (e.g. missing required field, invalid type value).
500Internal server error.

Update Fermentable

Updates an existing fermentable. Only the fields provided in the request body are updated (PATCH semantics).

PATCH /api/v1/{account}/fermentables/{id}

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe fermentable UUID.

Authentication

Requires a valid API key passed as a Bearer token. See Authentication.

Request Body

All fields are optional. Provide only the fields you want to update.

FieldTypeDescription
namestringFermentable name.
typestringType: grain, sugar, liquid_extract, dry_extract, adjunct, or other.
originstringCountry of origin.
supplierstringMaltster or supplier name.
descriptionstringDescription or usage notes.
color_lovibondnumberColour in degrees Lovibond (°L). Must be ≥ 0.
potential_ppgnumberPotential points per pound per gallon. Must be ≥ 0.
yield_pctnumberYield percentage (0–100).
exclude_from_totalbooleanWhether to exclude from total grain bill.
not_fermentablebooleanWhether the fermentable is non-fermentable.
categorystringGrain category (e.g. base_pilsner, crystal_caramel, roasted).
max_in_batch_pctnumberMaximum recommended percentage in a batch (0–100).
moisture_pctnumberMoisture content percentage (0–100).
protein_pctnumberProtein content percentage (0–100).
diastatic_powernumberDiastatic power in Lintner. Must be ≥ 0.
notesstringAdditional notes.

Example Request

curl -X PATCH "https://app.brewgenix.com/api/v1/my-brewery/fermentables/b2c3d4e5-..." \
  -H "Authorization: Bearer bgx_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "color_lovibond": 2.0,
    "notes": "Updated usage notes"
  }'

Example Response

{
  "id": "b2c3d4e5-...",
  "name": "Pale Malt (2 Row)",
  "type": "grain",
  "color_lovibond": 2.0,
  "notes": "Updated usage notes",
  "updated_at": "2026-02-24T11:00:00Z"
}

Error Responses

StatusDescription
401Missing or invalid API key.
400Request body is not valid JSON.
404Fermentable not found.
422Validation failed (e.g. invalid type value).
500Internal server error.

Delete Fermentable

Soft-deletes a fermentable. The record is marked as deleted and will no longer appear in list or get requests.

DELETE /api/v1/{account}/fermentables/{id}

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe fermentable UUID.

Authentication

Requires a valid API key passed as a Bearer token. See Authentication.

Example Request

curl -X DELETE "https://app.brewgenix.com/api/v1/my-brewery/fermentables/b2c3d4e5-..." \
  -H "Authorization: Bearer bgx_<your-key>"

Response

Returns 204 No Content on success with an empty body.

Error Responses

StatusDescription
401Missing or invalid API key.
404Fermentable not found.
500Internal server error.