A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "obi_1a2b3c4d5e6f7890",
"status": "queued"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Enqueue a single outbound call
Enqueue ONE outbound voice call to a recipient. The call is not placed inline: this writes a normalized intent that the outbound worker schedules, compliance-gates (informational-only, callee quiet-hours, internal opt-out, and — for a consumer audience — a resolved consent basis), and dials when due; an answered call is billed per minute. message_category is always informational. A consumer audience requires a resolved consentBasis (pewc, express, or ebr); none is only valid for a business audience. Send an Idempotency-Key to make a retry safe; identical requests also collapse to one intent via a deterministic dedupe key. Returns 202 with the intent id. Use this for a single ad-hoc dial. To place many paced calls over a contact list, use a campaign instead (createOutboundCampaign + launchOutboundCampaign) — both dial through the same worker and compliance gate.
A valid request URL is required to generate request examples{
"success": true,
"data": {
"id": "obi_1a2b3c4d5e6f7890",
"status": "queued"
}
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}{
"type": "about:blank",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"code": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>"
}
]
}Authorizations
Flowyte secret API key (Authorization: Bearer flowyte_sk_live_…). Scope-gated; is scoped to your organization — a key can never reach another tenant. The listed scopes in each operation's apiKey requirement are the scopes that key must hold. The tokenUrl is nominal: keys are minted in the dashboard.
- Token URL
- /api/v1/api-keys
Headers
Client-supplied idempotency key on mutating POSTs. Retrying the same request with the same key returns the original result instead of creating a duplicate — send a fresh UUID per logical operation. The prefixes api_sms_send: and harness_initiate: are reserved for the platform's own records, so do not use them; an endpoint that records the key refuses one that starts with either with 400 validation_error.
Body
The agent that places the call (must belong to your org).
The caller-ID number id — an org-owned, trunk-provisioned DID.
The recipient phone number; normalized to E.164 (an invalid number is rejected 400).
The lawful basis to place this call. A consumer audience REQUIRES a resolved basis (pewc, express, or ebr); none is only valid for a business audience.
pewc, express, ebr, none Optional recipient name (also a merge variable for the greeting).
Optional merge variables for the greeting / playbook.
Show child attributes
Show child attributes
consumer, business