Endpoints

The v1 API endpoints grouped by topic, with the scope each one needs, and which areas are dashboard-only.

Updated:

The machine-readable contract lives in the repository, in packages/openapi/openapi.yaml (OpenAPI 3.1). This page summarizes what you can use with an API key. Areas marked "dashboard-only" use the session of a team member (see Authentication).

Schedule: times and bookings

MethodPathScopeDescription
GET/slotsslots:readAvailable times 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
POST/bookingsbookings:writeHold and confirmation in one call
GET/bookingsbookings:readList (from, to, status, resource_id, customer_id)
GET / PATCH/bookings/{id}bookings:read / writeRead, update notes or intake data
POST/bookings/{id}/cancel, /reschedule, /check-in, /no-show, /complete, /failbookings:writeChange the state

Work: tasks and actions

A booking is a task with stages. Tasks without a time (for example deliveries) sit in a group's queue until someone takes them. See Work and actions.

MethodPathScopeDescription
GET/work-itemsbookings:readUnified query: filters by view (inbox, today, upcoming), status, stage, unassigned, priority, tag, origin, q, date range and geographic box
PATCH/work-items/{id}bookings:writeChange priority, tags or due date (with optional expected_version)
POST/bookings/{id}/actions/{key}bookings:writeRun a stage action (take, release, complete, "not home"…) with Idempotency-Key
GET/bookings/{id}/stage-historybookings:readStage history
GET/bookings/{id}/comments, /timelinebookings:readComments and timeline
GET/bookings/{id}/attachments, /location-eventsbookings:readWork evidence
GET/conversations/{id}/work-itemsbookings:readTasks created from a conversation
GET/team/overview, /resources/{id}/statsbookings:readTeam occupancy and statistics

Catalog and stages

MethodPathScope
GET / POST/services, /resources, /resource-groups, /schedulesconfig:read / config:write
GET / PATCH / DELETE/services/{id}, /resources/{id}, /resource-groups/{id}, /schedules/{id}config:read / config:write
POST / DELETE/schedules/{id}/overrides, /schedules/{id}/overrides/{date}config:write
GET/schedule-overridesconfig:read
GET/stage-config, /stage-config/versions, /stage-config/versions/{version}config:read
PUT/stage-configsettings:write
POST/stage-config/versions/{version}/revertsettings:write

Customers

MethodPathScopeDescription
GET/customerscustomers:readList and search (q: name, email, company, tag or phone; phone, tag)
POST/customerscustomers:writeManual creation. The phone is unique: if it exists, 409 customer_exists
GET / PATCH/customers/{id}customers:read / writeRead or edit (includes address with formatted, lat and lng)
GET/customers/{id}/bookings, /summary, /timeline, /commentscustomers:readHistory, live summary, timeline and comments

A customer can have several identities (WhatsApp, Telegram, WebChat) in identities[].

Conversations

MethodPathScope
GET/conversations, /conversations/{id}, /conversations/{id}/messagesmessages:read
POST/conversations/{id}/messagesmessages:write (answers 409 channel_paused if the channel is paused)
POST/conversations/{id}/mode, /read, /resolvemessages:write

Bot and knowledge

MethodPathScope
GET / PUT/botconfig:read / config:write
GET / POST/knowledge, /knowledge/filesconfig:read / config:write
POST/knowledge/searchconfig:read
PATCH / DELETE/knowledge/{id}config:write
GET / POST / PATCH/automations, /automations/{id}config:read / config:write

Outgoing webhooks

MethodPathScope
GET / POST/webhook-endpointswebhooks:manage
GET / PATCH / DELETE/webhook-endpoints/{id}webhooks:manage
POST/webhook-endpoints/{id}/rotate-secret, /ping, /deliveries/{delivery_id}/resendwebhooks:manage
GET/webhook-endpoints/{id}/deliverieswebhooks:manage

Details in Webhooks.

Platform

MethodPathScope
GET/meany

Dashboard-only (they do not accept API keys)

AreaRoutes
Channels and pauses/channels, /channels/whatsapp, /channels/telegram, /channels/service-status, /channels/pauses, /channels/{channel}/pause and /resume; see Pauses and Status
Per-channel bot policy/bot/channel-policies (see WebChat)
Knowledge sources/knowledge/sources (see Knowledge)
Flows/automation-flows (see Flows)
Project AI/ai/usage, /ai/pause, /ai/resume, /ai/spam-guard, /ai/notices
Wagy/assistant/*, the dashboard's setup assistant
Team and account/team/*, /api-keys, /workspaces, /me/telegram, /me/notification-preferences
WebChat/webchat-site (management) and /public/webchat/* (public, with the widget's publishable key)

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",
  "stage": "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" },
    { "resource_id": "res_laser1", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00" },
    { "resource_id": "res_room2", "start": "2026-10-20T17:45:00-03:00", "end": "2026-10-20T18:40:00-03:00" }
  ],
  "priority": "normal",
  "tags": [],
  "source": "whatsapp",
  "created_at": "2026-10-19T11:02:13-03:00"
}

Allocations include the buffer (here, 10 minutes after the service). On queue tasks, start and end are null until someone takes them.

Recent changes

These are the API's new features, all additive. The full history lives in the repository (docs/api/CHANGELOG.md).

  • Customers: manual creation, extended data, address with formatted, lat and lng, and multichannel identities[].
  • Tasks and actions: unified GET /work-items query, action executor with effects (take, release, outcomes) and 409 already_claimed.
  • Messages with location: WhatsApp, Telegram and WebChat store the shared location in the conversation.
  • Pauses: when a channel is paused, sending a message answers 409 channel_paused.
  • Knowledge: site-type sources with max_pages and errors by cause.