Public API
Programmatic access to assistants, knowledge, contacts, calls, and statistics.
The Public API gives you programmatic access to the resources you manage in the dashboard, scoped to your own organization. Use it to sync knowledge from your CMS, mirror contacts from your CRM, trigger outbound calls from your backend, and pull transcripts and usage numbers into your own reporting.
Base URLs: https://api.smao.ai/api/v1 (production) and
https://api2.smao.ai/api/v1 (development). API operations require a bearer
token. The raw /openapi.yaml and /openapi.json specifications are public;
retired /docs URLs redirect to this site before authentication. See
Authentication. There are no event-delivery webhooks:
poll for state changes such as knowledge sync status or call results.
New here? Start with the quickstart.
What you can build
Assistants & prompts
Create and configure the voice assistants that run your phone conversations, and the reusable prompts that drive them.
Knowledge
Push knowledge-base entries that assistants retrieve from during calls — each item is embedded asynchronously for retrieval.
Contacts & groups
Manage contact records and the groups that organize contacts, knowledge items, forwardings, glossary, and pronunciation rules.
Calls & recordings
Read call history with transcripts and analyses, download recordings, and trigger outbound calls.
Forwardings, glossary, pronunciation, calendars
Tune call behavior: forwarding targets, domain terms, word-level pronunciation overrides, and opening-hours calendars.
Statistics
Read-only aggregated call statistics — weekly and monthly usage, per-assistant rollups, and last-24h hourly counts.
Tools
Custom webhook tools that assistants invoke during calls. Auth secrets are encrypted at rest and never returned by the API.
Conventions
API-defined field names are snake_case; caller-defined JSON such as tool
parameters and custom headers keeps the keys you supply. Timestamps are
ISO-8601 UTC, and object IDs are 24-character lowercase hex strings. List
endpoints use opaque cursor pagination (limit + cursor,
meta.next_cursor). Errors use a single envelope — see
Errors. Matched operations that reach the rate limiter use
per-key buckets with defaults of 1000 reads/min, 200 writes/min, and 60
POST /calls requests/hour. Successful responses include
X-RateLimit-* headers; see Errors for exceptions and retry
behavior.
API reference
The full endpoint reference is generated from the OpenAPI spec — see the sidebar. Each endpoint page includes an interactive playground. The raw spec (tenant-branded per host) is at api.smao.ai/api/v1/openapi.yaml.