Quickstart
Three calls take you from an API key to a confirmed booking: offerings_list finds what to book, availability_get returns open slots with what's left of each, and bookings_create books one. Each is a REST call with your key in the Authorization header, and the same operation is an MCP tool.
Get a key
Create an API key in Dashboard → Developers. Send it with every request:
Auth
Authorization: Bearer daybag_live_…1Find an offering
MCP tool · offerings_list
curl
curl "https://daybag.io/api/v1/offerings" \
-H "Authorization: Bearer daybag_live_…"200response
{
"data": [
{
"id": "8f1c2e4a-0b7d-4c55-9a7e-3f2d1c0b9a88",
"kind": "rental",
"name": "Touring kayak",
"duration_minutes": 1440,
"capacity": 10,
"max_per_booking": 4,
"price_cents": 3500,
"active": true
}
]
}2Pick a slot
MCP tool · availability_get
curl
curl "https://daybag.io/api/v1/offerings/8f1c2e4a-0b7d-4c55-9a7e-3f2d1c0b9a88/availability?from=2026-12-05&to=2026-12-05" \
-H "Authorization: Bearer daybag_live_…"200response
{
"timezone": "America/Denver",
"data": [
{
"starts_at": "2026-12-05T15:00:00.000Z",
"ends_at": "2026-12-06T15:00:00.000Z",
"capacity": 10,
"remaining": 8
}
]
}from and to are local dates in your org's time zone; the default is the next 14 days.
3Book it
MCP tool · bookings_create
curl
curl -X POST https://daybag.io/api/v1/bookings \
-H "Authorization: Bearer daybag_live_…" \
-H "Content-Type: application/json" \
-d '{
"offering_id": "8f1c2e4a-0b7d-4c55-9a7e-3f2d1c0b9a88",
"starts_at": "2026-12-05T15:00:00Z",
"quantity": 2,
"customer": { "email": "pat@example.com", "name": "Pat" }
}'201response
{
"id": "1e2d3c4b-5a69-4788-9a6b-5c4d3e2f1a0b",
"reference": "0GWYRZ2V",
"status": "confirmed",
"starts_at": "2026-12-05T15:00:00+00:00",
"ends_at": "2026-12-06T15:00:00+00:00",
"quantity": 2,
"total_cents": 7000,
"offering": {
"id": "8f1c2e4a-0b7d-4c55-9a7e-3f2d1c0b9a88",
"name": "Touring kayak",
"kind": "rental",
"location": "North dock",
"duration_minutes": 1440
},
"customer": {
"id": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"name": "Pat",
"email": "pat@example.com",
"phone": ""
}
}Classes: pass the slot's session_id instead of starts_at. Add idempotency_key so a retry never books twice.