Skip to content

Per-contact reconciliation: the latest attempt and its structured outcome

GET
/v1/campaigns/{campaign_id}/outcomes
curl --request GET \
--url 'https://api.vocapable.com/v1/campaigns/example/outcomes?limit=50' \
--header 'Authorization: Bearer <token>'
campaign_id
required
Campaign Id
string
limit
Limit
integer
default: 50 >= 1 <= 200
cursor
Any of:
string
disposition
Any of:
string

Filter on disposition. Comma-separated values are OR.

disposition.gte
Any of:
string

Filter on disposition with the gte operator.

disposition.lte
Any of:
string

Filter on disposition with the lte operator.

disposition.gt
Any of:
string

Filter on disposition with the gt operator.

disposition.lt
Any of:
string

Filter on disposition with the lt operator.

disposition.in
Any of:
string

Filter on disposition with the in operator.

has_outcome
Any of:
string

Filter on has_outcome. Comma-separated values are OR.

has_outcome.gte
Any of:
string

Filter on has_outcome with the gte operator.

has_outcome.lte
Any of:
string

Filter on has_outcome with the lte operator.

has_outcome.gt
Any of:
string

Filter on has_outcome with the gt operator.

has_outcome.lt
Any of:
string

Filter on has_outcome with the lt operator.

has_outcome.in
Any of:
string

Filter on has_outcome with the in operator.

sub_code
Any of:
string

Filter on sub_code. Comma-separated values are OR.

sub_code.gte
Any of:
string

Filter on sub_code with the gte operator.

sub_code.lte
Any of:
string

Filter on sub_code with the lte operator.

sub_code.gt
Any of:
string

Filter on sub_code with the gt operator.

sub_code.lt
Any of:
string

Filter on sub_code with the lt operator.

sub_code.in
Any of:
string

Filter on sub_code with the in operator.

Successful Response

Media typeapplication/json
CursorPage[CampaignOutcomeSummary]
object
data
required
Data
Array<object>
CampaignOutcomeSummary

One row per targeted contact: the latest attempt plus its structured outcome.

outcome is null wherever no structured outcome was recorded - no answer, machine, opt-out, or a conversation that ended short of the objective.

object
contact_id
required
Contact Id
string
contact_phone
required
Contact Phone
string
attempts
required
Attempts
integer
latest_attempt_id
required
Latest Attempt Id
string
latest_attempt_state
required
AttemptState
string
Allowed values: pending scrubbed scheduled dialing answered in_conversation completed machine no_answer busy failed disposed
disposition
Any of:
Disposition

Terminal outcome of a contact attempt (docs/06-campaign-engine.md).

string
Allowed values: completed_goal completed_no_goal answered_incomplete voicemail_machine no_answer busy failed opt_out wrong_person_opt_out dnc_hit scrub_blocked blocked_by_policy abandoned_no_slot inbound_unavailable browser_unavailable
sub_code
Any of:
string
call_id
Any of:
string
outcome
Any of:
One of: discriminator: kind
ShiftConfirmationOutcome
object
kind
Kind
string
default: shift_confirmation
Allowed value: shift_confirmation
id
required
Id
string
response
required
Response
string
Allowed values: confirmed declined tentative unreachable
shift_ref
required
Shift Ref
string
site
Any of:
string
shift_starts_at
required
Shift Starts At
string format: date-time
last_activity_at
required
Last Activity At
string format: date-time
next_cursor
Any of:
string
has_more
Has More
boolean
Example
{
"data": [
{
"latest_attempt_state": "pending",
"disposition": "completed_goal",
"outcome": {
"kind": "shift_confirmation",
"response": "confirmed"
}
}
],
"has_more": false
}

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": {}
}
]
}