Skip to content

Queue one contact-bound campaign-less outbound call

POST
/v1/calls
curl --request POST \
--url https://api.vocapable.com/v1/calls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "agent_id": "example", "contact_id": "example", "questions": [ { "id": "example", "prompt": "example", "scoring": { "scale": "csat", "points": 1, "mapping": { "additionalProperty": 1 }, "weight": 1 } } ], "context": { "additionalProperty": "example" } }'

Queue one compliant API-key-originated campaign-less outbound call.

Idempotency-Key
required
string
<= 255 characters

Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries Idempotent-Replay: true. A UUID is the documented shape. Required on this endpoint: a retry without one would dial a human twice or spend money twice.

Media typeapplication/json
AdHocCallRequest

One contact-bound campaign-less outbound attempt (POST /v1/calls).

The deliberately small shape is the safety boundary: callers name durable tenant resources only. There is no raw E.164 destination, caller-id override, or carrier route that could turn the endpoint into an ungoverned dialer. questions and context are bounded CONVERSATION inputs (migration 0070): additive survey questions the pinned version’s objectives do not carry, and key: value facts the agent may use - never dial-routing inputs, never platform-key shadows, and capped hard enough that the call context stays a context, not a document.

object
agent_id
required
Agent Id
string
>= 1 characters <= 64 characters
contact_id
required
Contact Id
string
>= 1 characters <= 64 characters
questions
Questions
Array<object>
<= 10 items
CallQuestion

One per-call question - the strict profile of a version objective (docs/04 §3).

Unlike Objective (open - goal graphs are legal on an agent), a per-call question is closed and fully required: it exists to be asked and recorded on THIS call, so an id and question text are not optional and unknown keys are typos, not shapes.

object
id
required
Id
string
>= 1 characters <= 64 characters /^[A-Za-z0-9_.:\-]+$/
prompt
required
Prompt
string
>= 1 characters <= 500 characters
scoring
Any of:
ScoringBlock

One question’s frozen scoring vocabulary (docs/08 §Objective scoring).

object
scale
required
SurveyScale

Scoring scales for survey objectives (CANON fact 63).

The number of points is a separate points field, never part of the scale name; a question with no scoring block at all is simply unscored.

string
Allowed values: csat nps ordinal boolean
points
Any of:
integer
>= 2
mapping
required
Mapping
object
>= 1 properties
key
additional properties
number
weight
Weight
number
default: 1
context
Context
object
key
additional properties
string

Successful Response

Media typeapplication/json
AdHocCall

The queued campaign-less ContactAttempt returned by POST /v1/calls.

object
id
required
Id
string
agent_id
required
Agent Id
string
agent_version_id
required
Agent Version Id
string
contact_id
required
Contact Id
string
telephony
required
Telephony
string
Allowed values: mock byo
state
required
State
string
disposition
Any of:
string
call_id
Any of:
string
created_at
required
Created At
string format: date-time
Example
{
"telephony": "mock"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}