Brew sessions
Create a brew session
Starts a session against a recipe. Unlike the web app, this does not generate a brew day checklist — add steps yourself.
POST
/
v1
/
sessions
Create a brew session
curl --request POST \
--url https://brewgravity.com/v1/sessions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>"
}
'import requests
url = "https://brewgravity.com/v1/sessions"
payload = {
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipe_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
status: 'planning',
brew_date: '<string>',
notes: '<string>',
actual_og: 123,
actual_fg: 123,
fermenting_since: '<string>',
completed_at: '<string>'
})
};
fetch('https://brewgravity.com/v1/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://brewgravity.com/v1/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recipe_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'status' => 'planning',
'brew_date' => '<string>',
'notes' => '<string>',
'actual_og' => 123,
'actual_fg' => 123,
'fermenting_since' => '<string>',
'completed_at' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://brewgravity.com/v1/sessions"
payload := strings.NewReader("{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://brewgravity.com/v1/sessions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://brewgravity.com/v1/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_id": "<string>",
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"details": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}Authorizations
An API key created from a signed-in session. See Authentication.
Body
application/json
Recipe this session is brewing
Session name, e.g. "Brew: House IPA"
Current status
Available options:
planning, brewing, fermenting, complete Brew date (YYYY-MM-DD)
Session notes
Measured original gravity
Measured final gravity
ISO timestamp when fermentation started
ISO timestamp when the session completed
Response
The created session
Unique identifier
Owning account
Recipe being brewed
Session name
Current status
Available options:
planning, brewing, fermenting, complete Brew date (YYYY-MM-DD)
Session notes
Measured original gravity
Measured final gravity
When fermentation started
When the session completed
ISO 8601 timestamp
ISO 8601 timestamp
⌘I
Create a brew session
curl --request POST \
--url https://brewgravity.com/v1/sessions \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>"
}
'import requests
url = "https://brewgravity.com/v1/sessions"
payload = {
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipe_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
name: '<string>',
status: 'planning',
brew_date: '<string>',
notes: '<string>',
actual_og: 123,
actual_fg: 123,
fermenting_since: '<string>',
completed_at: '<string>'
})
};
fetch('https://brewgravity.com/v1/sessions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://brewgravity.com/v1/sessions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recipe_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'name' => '<string>',
'status' => 'planning',
'brew_date' => '<string>',
'notes' => '<string>',
'actual_og' => 123,
'actual_fg' => 123,
'fermenting_since' => '<string>',
'completed_at' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://brewgravity.com/v1/sessions"
payload := strings.NewReader("{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://brewgravity.com/v1/sessions")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://brewgravity.com/v1/sessions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recipe_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"name\": \"<string>\",\n \"status\": \"planning\",\n \"brew_date\": \"<string>\",\n \"notes\": \"<string>\",\n \"actual_og\": 123,\n \"actual_fg\": 123,\n \"fermenting_since\": \"<string>\",\n \"completed_at\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"user_id": "<string>",
"recipe_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "planning",
"brew_date": "<string>",
"notes": "<string>",
"actual_og": 123,
"actual_fg": 123,
"fermenting_since": "<string>",
"completed_at": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>",
"details": [
{
"code": "<string>",
"path": [
"<string>"
],
"message": "<string>"
}
]
}