Settings API
Workspace settings, API keys, and team membership Base path:/api/v1/settings
Endpoint count: 9
List per-agent per-channel concurrency caps
GET /api/v1/settings/agent-channel-caps?agent_user_id=. A missing (agent, channel) row means “no cap, fail-OPEN”; a row with max_concurrent=0 blocks that agent from that channel entirely. Owner/admin only.
Narrow the list to one agent’s caps.
List Messenger personas
GET /api/v1/settings/channels/messenger/personasGet your current IP address
GET /api/v1/settings/ip-allowlist/current-ipip is null when your IP address cannot be determined; enforced is false when allowlist enforcement is not applied in the current environment.
Create an API key
POST /api/v1/settings/api-keysmode: 'test' activates sandbox-mode (no real provider hits, no billing). Optional per-key allowed_ips enforces an IP allowlist at auth time.
Human-readable label shown in the dashboard. Not used for authentication.
secret = server-only
dv_*_sk_* key; public = browser-safe pk_* key for the embed SDK.API key permission scopes (e.g. messages:write). At least one scope is required for keys minted after 2026-08-01; empty-scope keys are deprecated and treated as least-privilege (viewer) / will be rejected after the grandfather deadline.
test keys never deliver messages and never bill; useful for CI/staging.Key lifetime.
never (the default) mints a non-expiring key; 30d, 90d, and 1y set an automatic expiry measured from creation time.Optional IP/CIDR allowlist. Auth middleware rejects requests from a non-allowlisted source.
Create a Messenger persona
POST /api/v1/settings/channels/messenger/personasDisplay name shown to the recipient.
HTTPS avatar URL. Meta fetches it at create time and rejects non-https schemes.
Upsert one per-agent per-channel concurrency cap
PUT /api/v1/settings/agent-channel-capsmax_concurrent=0 opts the agent OUT of that channel entirely; a positive value caps concurrency; deleting the row reverts to “no cap”. Idempotent upsert keyed on (agent_user_id, channel). Owner/admin only.
Workspace user id of the agent the cap applies to (1-128 characters).
Channel the cap governs (e.g. sms, whatsapp, email, voice, web_chat).
Maximum simultaneous open interactions on this channel (0-1000). 0 opts the agent out of the channel entirely.
Bulk upsert per-agent per-channel concurrency caps
PUT /api/v1/settings/agent-channel-caps/bulkBatch of (agent_user_id, channel, max_concurrent) cap rows to upsert. 1-500 items; duplicate (agent, channel) keys keep the last value.
Clear a per-agent per-channel concurrency cap
DELETE /api/v1/settings/agent-channel-caps/{agentUserId}/{channel}Workspace user id of the agent whose cap is being cleared.
Channel whose cap row is being cleared.
Delete a Messenger persona
DELETE /api/v1/settings/channels/messenger/personas/{personaId}Meta persona object id (numeric string).