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.

Plain text

Get a key

Create an API key in Dashboard → Developers. Send it with every request:

AuthAuthorization: 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.