Draft

Endpoints

Every v1 endpoint at a glance, with the most common request and response shapes.

The machine-readable contract lives in the repository at packages/openapi/openapi.yaml (OpenAPI 3.1).

Scheduling

MethodPathScopeDescription
GET/slotsslots:readAvailable slots for a service
POST/holdsbookings:writeCreate a 10-minute hold
POST/holds/{id}/confirmbookings:writeConfirm (or pending_payment if a deposit is required)
DELETE/holds/{id}bookings:writeRelease a hold
GET/bookingsbookings:readList (filters: from, to, status, resource_id, customer_id)
POST/bookingsbookings:writeHold + confirm in one call
GET / PATCH/bookings/{id}bookings:read / writeRead, update notes or intake data
POST/bookings/{id}/cancelbookings:writeCancel
POST/bookings/{id}/reschedulebookings:writeMove to a new start
POST/bookings/{id}/check-inbookings:writeMark arrival
POST/bookings/{id}/no-showbookings:writeMark absence

Catalog

MethodPathScope
GET / POST/servicesconfig:read / config:write
GET / POST/resourcesconfig:read / config:write
GET/resource-groupsconfig:read
POST/schedules/{id}/overridesconfig:write

Customers and conversations

MethodPathScope
GET/customerscustomers:read
DELETE/customers/{id}customers:read + owner role (anonymizes, LGPD)
GET/conversationsmessages:read
GET / POST/conversations/{id}/messagesmessages:read / messages:write
POST/conversations/{id}/handoffmessages:write

Platform

MethodPathScope
GET/meany
GET / POST/webhook-endpointswebhooks:manage
GET/eventsbookings:read

Example: slots

GET /v1/slots?service_id=svc_laser&from=2026-10-20T09:00:00-03:00&to=2026-10-20T20:00:00-03:00&around=2026-10-20T18:00:00-03:00
{
  "data": [
    { "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:30:00-03:00", "resource_ids": ["res_ana", "res_laser1", "res_room2"] },
    { "start": "2026-10-20T18:45:00-03:00", "end": "2026-10-20T19:30:00-03:00", "resource_ids": ["res_carla", "res_laser1", "res_room1"] }
  ],
  "unavailable_reason": null
}

Example: booking object

{
  "id": "bkg_7Qx1",
  "status": "confirmed",
  "service_id": "svc_laser",
  "start": "2026-10-20T17:45:00-03:00",
  "end": "2026-10-20T18:30:00-03:00",
  "party_size": 1,
  "customer": { "id": "cus_31", "name": "Marina", "phone": "+5521988887777", "locale": "pt" },
  "allocations": [
    { "resource_id": "res_ana", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00", "units": 1 },
    { "resource_id": "res_laser1", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00", "units": 1 },
    { "resource_id": "res_room2", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00", "units": 1 }
  ],
  "payment": { "status": "paid", "amount_cents": 5000 },
  "source": "whatsapp",
  "created_at": "2026-10-19T11:02:13-03:00"
}

Allocations include the buffer time (here 10 minutes after the service).