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.

Authorizations

Authorization
string
header
required

An EESI API key (sk-eesi-...) or a Clerk session token.

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