Skip to content

Submit an async CSV export

POST
/v1/exports
curl --request POST \
--url https://api.vocapable.com/v1/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "resource": "contacts", "format": "csv", "filters": { "additionalProperty": "example" }, "columns": [ "example" ] }'

Queue one extraction and answer 202 with the poll contract on GET /exports/{id}.

Idempotency-Key
Any of:
string

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.

Media typeapplication/json
ExportCreateRequest

A submission. filters uses the query-filter grammar of vocapable_contracts.filters ({"campaign_id": "camp_…", "created_at.gte": "2026-08-03T00:00:00Z"}), validated against the per-resource allowlist; columns empty means the resource’s default set.

object
resource
required
Resource
string
Allowed values: contacts contact_attempts calls survey_responses shift_confirmations appointments dnc_entries scrub_results usage_events caller_requests
format
Format
string
default: csv
Allowed value: csv
filters
Filters
object
key
additional properties
string
columns
Columns
Array<string>

Successful Response

Media typeapplication/json
ExportJob

A job as POST /v1/exports and GET /v1/exports/{id} return it.

columns is always the resolved list, never the empty request default: the set a job was accepted with is frozen at submission so a later change to a resource’s defaults cannot silently reshape a queued extraction.

object
id
required
Id
string
resource
required
Resource
string
Allowed values: contacts contact_attempts calls survey_responses shift_confirmations appointments dnc_entries scrub_results usage_events caller_requests
format
Format
string
default: csv
Allowed value: csv
status
required
JobStatus

Lifecycle shared by the async import and export jobs.

string
Allowed values: queued running completed failed
filters
Filters
object
key
additional properties
string
columns
Columns
Array<string>
row_count
Any of:
integer
download_url
Any of:
string
expires_at
Any of:
string format: date-time
requested_by
Any of:
string
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
Example
{
"resource": "contacts",
"format": "csv",
"status": "queued"
}

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