receptionist and your workspace business, as in GET /receptionist. GET /agents lists the workspace’s agents. /receptionist and /rules act on the default agent, and each call and message names the agent that took it in agent_id.
A rule’s channel keeps it to voice, sms, web_chat or instagram, and null applies it on every channel. voice_instructions, sms_instructions and chat_instructions on /receptionist and /agents are deprecated. They read the agent’s first active rule for that channel, and writing one changes that rule or adds it. chat_instructions writes the website chat and Instagram rules. Sending null deletes the channel’s rule.
Add it to your product. Build an AI receptionist into your SaaS through the API. Your customers stay in your UI.
Base URL
APP_BASE_URL followed by /api/v1.
Make your first request
1
Create an API key
In the dashboard, go to Settings > API keys and click Create API key. Pick the access the key needs. See Authentication.
2
Call the API
data:
Conventions
- Requests and responses use JSON. Field names use
snake_case. - IDs are UUIDs and never change.
- Timestamps use ISO 8601 in UTC, for example
2026-09-29T13:30:00.000Z. Request bodies also accept a numeric offset such as-04:00. - Lists return
data,next_cursorandhas_more. See Requests and errors. - An API key from the dashboard belongs to one business, so you never pass a business ID. A platform key names the business in the
LobbyStack-Businessheader.
OpenAPI
The API publishes an OpenAPI 3.1 document atGET /api/v1/openapi.json, with no key required. LobbyStack generates it from the same schemas the server validates against, so it always matches the running version. Import it into Postman, generate a client, or browse the API reference section of these docs, which LobbyStack builds from the same file.
Versioning
The version is part of the path:/api/v1. Within v1, LobbyStack only makes additive changes:
- New endpoints, new optional request fields, and new response fields.
- New values in lists such as webhook event types and error codes.
/api/v2. Removing or renaming a field, changing a type, or adding a required request field counts as breaking. When a new version ships, v1 keeps working alongside it. Webhook payloads carry api_version so you can tell which shape you received.