Generate a presigned URL for direct CSV upload
curl --request POST \
--url https://app.dograh.com/api/v1/s3/presigned-upload-url \
--header 'Content-Type: application/json' \
--data '
{
"file_name": "<string>",
"file_size": 123,
"content_type": "text/csv"
}
'{
"upload_url": "<string>",
"file_key": "<string>",
"expires_in": 123
}Campaigns
Upload Contacts CSV
Get a presigned S3 URL to upload a contacts CSV for a campaign
POST
/
api
/
v1
/
s3
/
presigned-upload-url
Generate a presigned URL for direct CSV upload
curl --request POST \
--url https://app.dograh.com/api/v1/s3/presigned-upload-url \
--header 'Content-Type: application/json' \
--data '
{
"file_name": "<string>",
"file_size": 123,
"content_type": "text/csv"
}
'{
"upload_url": "<string>",
"file_key": "<string>",
"expires_in": 123
}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.Documentation Index
Fetch the complete documentation index at: https://docs.dograh.com/llms.txt
Use this file to discover all available pages before exploring further.
# Step 1: Get upload URL
curl -X POST https://your-dograh-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
s3_key from the response as the source_url when creating a campaign.
CSV format
The CSV must include aphone_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
Body
application/json
⌘I