Skip to main content
POST
Generate a presigned URL for direct CSV upload
Uploading contacts is a two-step process. First call this endpoint to get a presigned upload URL, then PUT your CSV directly to that URL.
Use the s3_key from the response as the source_url when creating a campaign.

CSV format

The CSV must include a phone_number column. Any additional columns are passed as initial_context to each call, making them available as template variables in the workflow. What counts as a valid phone_number depends on the telephony configuration the campaign dials with. Carriers require E.164 — a +, country code, then the number. An Asterisk ARI configuration also accepts extensions, SIP URIs and dial strings, since those are what its PBX reaches. Either way, numbers must be unique within a campaign and cannot contain spaces, commas or ampersands.
To override the Start node greeting for a row, use these optional columns:
  • Text: set greeting_override_type to text and put the message in greeting_override_text.
  • Recording: set greeting_override_type to audio and put the public recording ID in greeting_override_recording_id.
Greeting text can reference other CSV columns, such as Hello {{customer_name}}. Empty override columns preserve the greeting configured in the Start node.

Headers

authorization
string | null
X-API-Key
string | null

Body

application/json
file_name
string
required

CSV filename

Pattern: .*\.csv$
file_size
integer
required

File size in bytes (max 10MB)

Required range: x <= 10485760
content_type
string
default:text/csv

File content type

Response

Successful Response

upload_url
string
required
file_key
string
required
expires_in
integer
required