Upload Campaign Contact List
Uploads a contact list for a campaign. Accepts a CSV file and campaign configuration as form data.
Upload a CSV file with contact data to create a campaign. This is the primary upload endpoint for the standard campaign flow: first callDocumentation Index
Fetch the complete documentation index at: https://docs.ringg.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /campaign/save, then start calls with POST /campaign/start.
Quick start
- Prepare your CSV - Download template from your campaigns tab
- Configure your agent - Set up prompts and custom variables
- Upload & configure - Submit CSV with campaign settings
- Start calling - Use the returned
list_idto start your campaign
CSV file requirements
Example CSV Structure
Configuration parameters
Required Fields
| Field | Format | Example |
|---|---|---|
| CSV File | .csv file | contacts.csv |
| Agent ID | UUID | 830f767a-397e-4b39-82ff-235cd344e2f9 |
| Campaign Name | Text | ”Q1 Sales Outreach” |
| Country Code | Phone dialing prefix | ”+91”, “+1” |
| Campaign Start Time | DD/MM/YYYY, HH:MM | 18/10/2026, 09:00 |
| Campaign End Time | DD/MM/YYYY, HH:MM | 18/10/2026, 21:00 |
Optional Settings
| Setting | Default | Purpose |
|---|---|---|
| Remove Invalid Rows | false | Auto-remove bad data |
| Transliterate Callee Name | false | Convert to English |
CSV File Format
Download the exact CSV template from your campaigns tab to get the correct format according to your specific agent configuration. The required columns vary based on your agent’s custom variables.campaign_start_time and campaign_end_time use the timezone in call_config.call_time.timezone. The backend expects the DD/MM/YYYY, HH:MM format and validates that the start time is in the future.Variable mapping
Connect your CSV columns to agent variables so your AI can use the contact data during calls.How It Works
Map CSV column names to your agent’s custom variables:Using Variables
Reference mapped variables in your agent prompt with@{{variable_name}}:
@{{callee_name}}becomes “John Doe”@{{company_name}}becomes “XYZ Corp”
Call configuration
Control when and how your campaign calls are made:Call timing and limits
Retry settings
What happens next?
Success Response
You’ll receive alist_id. Save it because you need it to start the campaign.
Next Steps
- Save the
list_idfrom the response - Start your campaign using the
list_id - Monitor progress and view results
bulk_list_id and requires status polling before calls can start.
Error Handling
If upload fails, check:- CSV format and required columns
- Valid phone number format with country codes
- Agent ID exists and is active
- API key permissions
remove_invalid_rows=true to automatically skip problematic contacts instead of failing the entire upload.Headers
(Required) Your Ringg AI API key.
"7251cb4b-3373-43a4-844c-b27a1d45e0c9"
Body
(Required) JSON string mapping variable names to columns
{
"callee_name": "Name",
"company_name": "Company"
}(Required) Unique identifier for the agent
"830f767a-397e-4b39-82ff-235cd344e2f9"
(Required) JSON string of call configuration
{
"idle_timeout_warning": 10,
"max_call_length": 300
}(Required) Phone number country code (e.g., +91 for India, +1 for US)
"+91"
(Required) Start time for the campaign (DD/MM/YYYY, HH:MM format)
"18/10/2025, 09:00"
(Required) End time for the campaign (DD/MM/YYYY, HH:MM format)
"18/10/2025, 21:05"
(Required) Name of the campaign.
"Q1 Sales Campaign"
(Required) CSV file containing the contact list.
(Optional) Auto-remove invalid rows from CSV
false
(Optional) Transliterate callee names to the agent's language
false
Response
Contact list uploaded and campaign saved successfully.
"Contacts imported successfully!"
ID of the created campaign list
"123e4567-e89b-12d3-a456-426614174000"
Array of custom variables for each contact
[
{
"callee_name": "John Doe",
"company_name": "XYZ Corp",
"mobile_number": "+1234567890"
}
]Total number of rows in uploaded CSV
100
Number of successfully processed rows
98
Number of rows that failed validation
2
