curl --request GET \
--url https://api.myhamlet.com/v1/meetings/{uuid}/agenda \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.myhamlet.com/v1/meetings/{uuid}/agenda"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.myhamlet.com/v1/meetings/{uuid}/agenda', 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://api.myhamlet.com/v1/meetings/{uuid}/agenda",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.myhamlet.com/v1/meetings/{uuid}/agenda"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.myhamlet.com/v1/meetings/{uuid}/agenda")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myhamlet.com/v1/meetings/{uuid}/agenda")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uuid": "7b44c1e2-...",
"meeting_uuid": "9a1c...",
"created_at": "2026-05-19T18:00:00.000Z",
"updated_at": "2026-05-19T18:00:00.000Z",
"items": [
{
"item_number": "4.a",
"item_title": "Approve minutes of the May 5 meeting",
"item_description": "Staff recommends approval.",
"matched_topics": [
{
"name": "Housing"
}
],
"children": "<array>"
}
]
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}Get a meeting's agenda
Returns the meeting’s agenda as a hierarchical tree of items, nested by parent into children and ordered as published. Not paginated — the full tree is returned in one call. If the meeting has more than one agenda, the most recently updated is returned. Returns 404 if the meeting does not exist, your API key is not entitled to it, or it has no agenda (has_agenda on the meeting list tells you in advance).
curl --request GET \
--url https://api.myhamlet.com/v1/meetings/{uuid}/agenda \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.myhamlet.com/v1/meetings/{uuid}/agenda"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.myhamlet.com/v1/meetings/{uuid}/agenda', 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://api.myhamlet.com/v1/meetings/{uuid}/agenda",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.myhamlet.com/v1/meetings/{uuid}/agenda"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.myhamlet.com/v1/meetings/{uuid}/agenda")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.myhamlet.com/v1/meetings/{uuid}/agenda")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uuid": "7b44c1e2-...",
"meeting_uuid": "9a1c...",
"created_at": "2026-05-19T18:00:00.000Z",
"updated_at": "2026-05-19T18:00:00.000Z",
"items": [
{
"item_number": "4.a",
"item_title": "Approve minutes of the May 5 meeting",
"item_description": "Staff recommends approval.",
"matched_topics": [
{
"name": "Housing"
}
],
"children": "<array>"
}
]
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}{
"error": {
"code": "not_found",
"message": "The requested resource was not found."
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The meeting's public uuid.
"9a1c2b3d-4e5f-6071-8293-a4b5c6d7e8f9"
Response
The meeting's agenda as a hierarchical tree.
The agenda's public identifier.
"7b44c1e2-..."
The meeting's public identifier; matches the path.
"9a1c..."
ISO-8601 UTC timestamp.
"2026-05-19T18:00:00.000Z"
ISO-8601 UTC timestamp.
"2026-05-19T18:00:00.000Z"
Top-level items (those with no parent), ordered.
Show child attributes
Show child attributes