# Vexium Voice Customer API Base URL: https://api.vexiumvoice.app/v1 OpenAPI 3.1: https://api.vexiumvoice.app/v1/openapi.json Human docs: https://docs.vexiumvoice.app Authentication - Send `Authorization: Bearer vx_live_REPLACE_ME` on API operations. - API keys are tenant-bound and scope-limited. Start with `GET /whoami` and `GET /scopes`. - Never send tenant_id or livemode; the credential determines both. Core usage - Calls: `GET /calls`, then `GET /calls/{call_id}` for the transcript. - Captures: `GET /captures`; only `status` is editable with `PATCH /captures/{capture_id}`. - Agents: `GET /agents`, `GET /voices`, then `PATCH /agents/{slug}` with customer-editable fields. - Connections: use `/connectors`, `/connections`, and delivery retry/action routes. - Knowledge: upload raw bytes to `/knowledge/documents` with `X-Vexium-Filename`, then poll the document until `ready`. Contracts - Cursor lists return `object`, `data`, `has_more`, and `next_starting_after`; default limit is 25. - Errors always return `{"error":{"type","code","message","param","request_id"}}`. - Atomic replacement warning: hours, menu, products, services, and listings replace the complete field. Read, modify, and send the whole field. - Structured hours use weekday keys `0` (Monday) through `6` (Sunday), for example `{"0":[9,18],"5":[9,14]}`. - Valid connection events are `capture.created` and `call.completed`. - Test keys cannot write live agents, captures, or knowledge documents.