Talkr AI
API ReferenceCampaigns

Upload Contacts CSV

Get a presigned S3 URL to upload a contacts CSV for a campaign

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.

# Step 1: Get upload URL
curl -X POST https://your-talkr-instance/api/v1/s3/presigned-upload-url \
  -H "X-API-Key: dg_your_api_key"

# Response:
# { "upload_url": "https://...", "s3_key": "campaigns/..." }

# Step 2: Upload the CSV
curl -X PUT "https://presigned-url..." \
  -H "Content-Type: text/csv" \
  --data-binary @contacts.csv

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.

phone_number,customer_name,plan
+14155550100,Jane Smith,premium
+14155550101,Bob Jones,basic
POST
/api/v1/s3/presigned-upload-url

Header Parameters

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

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/s3/presigned-upload-url" \  -H "Content-Type: application/json" \  -d '{    "file_name": "string",    "file_size": 1  }'
{  "upload_url": "string",  "file_key": "string",  "expires_in": 0}