Hops

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

Get Hop

Returns a single hop by its ID.

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

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe hop 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/hops/a1b2c3d4-e5f6-..." \
  -H "Authorization: Bearer bgx_<your-key>"

Example Response

{
  "id": "a1b2c3d4-...",
  "name": "Citra",
  "origin": "US",
  "purpose": "aroma",
  "form": "pellet",
  "alpha_acids_min_in_pct": 11.0,
  "alpha_acids_max_in_pct": 13.0,
  "substitutes": [],
  "created_at": "2025-01-15T10:00:00Z",
  "updated_at": "2025-01-15T10:00:00Z"
}

Error Responses

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

List Hops

Returns a paginated list of hops in your brewery account.

GET /api/v1/{account}/hops

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 hops by name.

Authentication

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

Example Request

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

Example Response

{
  "data": [
    {
      "id": "a1b2c3d4-...",
      "name": "Citra",
      "origin": "US",
      "purpose": "Aroma",
      "form": "Pellet",
      "alpha_acids_min_in_pct": 11.0,
      "alpha_acids_max_in_pct": 13.0,
      "beta_acids_min_in_pct": 3.5,
      "beta_acids_max_in_pct": 4.5,
      "notes": "High in myrcene...",
      "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 hop objects.
countintegerTotal number of hops matching the query.
pageintegerCurrent page number.
pageSizeintegerNumber of results returned on this page.
pageCountintegerTotal number of pages.

Hop Object

FieldTypeDescription
idstringUnique identifier (UUID).
namestringHop variety name.
originstringCountry of origin.
purposestringPrimary use: Bittering, Aroma, or Dual.
formstringPhysical form: Pellet, Leaf, or Extract.
alpha_acids_min_in_pctnumberMinimum alpha acid percentage.
alpha_acids_max_in_pctnumberMaximum alpha acid percentage.
beta_acids_min_in_pctnumberMinimum beta acid percentage.
beta_acids_max_in_pctnumberMaximum beta acid percentage.
notesstringAdditional notes or flavour descriptors.
created_atstringISO 8601 timestamp when the hop 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 Hop

Creates a new hop variety in your brewery account.

POST /api/v1/{account}/hops

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
namestringYesHop variety name.
purposestringYesPrimary use: aroma, bittering, or both.
formstringYesPhysical form: pellet, whole, cryo, or co2 extract.
originstringNoCountry of origin.
descriptionstringNoDescription or flavour notes.
alpha_acids_min_in_pctnumberNoMinimum alpha acid percentage (0–100).
alpha_acids_max_in_pctnumberNoMaximum alpha acid percentage (0–100). Must be ≥ min.
beta_acids_min_in_pctnumberNoMinimum beta acid percentage (0–100).
beta_acids_max_in_pctnumberNoMaximum beta acid percentage (0–100). Must be ≥ min.
cohumulone_min_in_pctnumberNoMinimum cohumulone percentage (0–100).
cohumulone_max_in_pctnumberNoMaximum cohumulone percentage (0–100). Must be ≥ min.
myrcene_min_in_pctnumberNoMinimum myrcene percentage (0–100).
myrcene_max_in_pctnumberNoMaximum myrcene percentage (0–100). Must be ≥ min.
aroma_citrusnumberNoCitrus aroma intensity (0–5).
aroma_stone_fruitnumberNoStone fruit aroma intensity (0–5).
aroma_berrynumberNoBerry aroma intensity (0–5).
aroma_floralnumberNoFloral aroma intensity (0–5).
aroma_grassynumberNoGrassy aroma intensity (0–5).
aroma_herbalnumberNoHerbal aroma intensity (0–5).
aroma_spicenumberNoSpice aroma intensity (0–5).
aroma_resin_pinenumberNoResin/pine aroma intensity (0–5).

Example Request

curl -X POST "https://app.brewgenix.com/api/v1/my-brewery/hops" \
  -H "Authorization: Bearer bgx_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Galaxy",
    "origin": "AU",
    "purpose": "aroma",
    "form": "pellet",
    "alpha_acids_min_in_pct": 11.0,
    "alpha_acids_max_in_pct": 16.0,
    "aroma_citrus": 4,
    "aroma_stone_fruit": 3
  }'

Example Response

{
  "id": "c3d4e5f6-...",
  "name": "Galaxy",
  "origin": "AU",
  "purpose": "aroma",
  "form": "pellet",
  "alpha_acids_min_in_pct": 11.0,
  "alpha_acids_max_in_pct": 16.0,
  "aroma_citrus": 4,
  "aroma_stone_fruit": 3,
  "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, min > max for a range field).
500Internal server error.

Update Hop

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

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

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe hop 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
namestringHop variety name.
purposestringPrimary use: aroma, bittering, or both.
formstringPhysical form: pellet, whole, cryo, or co2 extract.
originstringCountry of origin.
descriptionstringDescription or flavour notes.
alpha_acids_min_in_pctnumberMinimum alpha acid percentage (0–100).
alpha_acids_max_in_pctnumberMaximum alpha acid percentage (0–100). Must be ≥ min.
beta_acids_min_in_pctnumberMinimum beta acid percentage (0–100).
beta_acids_max_in_pctnumberMaximum beta acid percentage (0–100). Must be ≥ min.
aroma_citrusnumberCitrus aroma intensity (0–5).
aroma_stone_fruitnumberStone fruit aroma intensity (0–5).
aroma_berrynumberBerry aroma intensity (0–5).
aroma_floralnumberFloral aroma intensity (0–5).
aroma_grassynumberGrassy aroma intensity (0–5).
aroma_herbalnumberHerbal aroma intensity (0–5).
aroma_spicenumberSpice aroma intensity (0–5).
aroma_resin_pinenumberResin/pine aroma intensity (0–5).

Example Request

curl -X PATCH "https://app.brewgenix.com/api/v1/my-brewery/hops/a1b2c3d4-..." \
  -H "Authorization: Bearer bgx_<your-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "alpha_acids_min_in_pct": 12.0,
    "alpha_acids_max_in_pct": 14.0,
    "description": "Updated flavour notes"
  }'

Example Response

{
  "id": "a1b2c3d4-...",
  "name": "Citra",
  "origin": "US",
  "purpose": "aroma",
  "form": "pellet",
  "alpha_acids_min_in_pct": 12.0,
  "alpha_acids_max_in_pct": 14.0,
  "description": "Updated flavour notes",
  "updated_at": "2026-02-24T11:00:00Z"
}

Error Responses

StatusDescription
401Missing or invalid API key.
400Request body is not valid JSON.
404Hop not found.
422Validation failed (e.g. min > max for a range field).
500Internal server error.

Delete Hop

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

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

Path Parameters

ParameterTypeDescription
accountstringYour brewery account slug (visible in the app URL).
idstringThe hop 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/hops/a1b2c3d4-..." \
  -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.
404Hop not found.
500Internal server error.