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 to_number column (the legacy phone_number column is also accepted). Any additional columns are passed as initial_context to each call, making them available as template variables in the workflow.

Authorizations

Authorization
string
header
required

Interactive user session: the login JWT, sent as Authorization: Bearer <token>.

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