Skip to main content
POST
Upload Campaign CSV (Beta)
The calling window, retries and caller numbers are not sent here; they go with Start large campaign calls. The flow: upload → poll upload status until it is draft → start calls.

Fields

The CSV follows the same rules as for Upload campaign contact list. A list may have up to 100 rows by default, and up to 5,000 once Company details are saved in the dashboard; a longer list returns 402. Contact Ringg for a higher limit.
  • Invalid rows never fail this upload: the valid rows load and the invalid ones are left out. With remove_invalid_rows off, the uploader is also emailed the invalid rows.
  • transliterate_fields is a JSON array of the agent’s own variable names, not CSV headers, whose values are transliterated into the agent’s language. Each must be mapped in variables_map, and mobile_number is not allowed. transliterate_callee_name=true is the same as adding callee_name.

Response

total_rows counts the rows in the file, not counting fully blank rows. Valid and invalid counts come from upload status once validation finishes. Store bulk_list_id. It is the campaign’s ID in every later call, in call history and in analytics.

Authorizations

X-API-KEY
string
header
required

Headers

X-API-KEY
string
required

(Required) Your Ringg AI API key.

Example:

"rg_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Body

multipart/form-data
variables_map
string
required

(Required) JSON string mapping agent variable names to CSV columns.

Example:

"{\"mobile_number\":\"Mobile Number\",\"callee_name\":\"Name\"}"

agent_id
string
required

(Required) Agent ID used to validate campaign variables.

Example:

"00000000-0000-4000-8000-0000000000a1"

country_code
string
required

(Required) Phone number country code, for example +91 or +1.

Example:

"+91"

campaign_name
string
required

(Required) Name of the campaign draft.

Example:

"Renewal reminders - large upload"

file
file
required

(Required) CSV file containing campaign contacts.

remove_invalid_rows
boolean
default:false

(Optional) Invalid rows never fail this upload: valid rows load and invalid rows are left out. When false, the uploader is emailed the invalid rows; true skips that email.

Example:

true

transliterate_callee_name
boolean
default:false

(Optional) Transliterate callee_name into the agent's language. Same as adding callee_name to transliterate_fields. A row whose name cannot be transliterated is dropped as invalid.

Example:

false

transliterate_fields
string

(Optional) JSON string array of the agent's own variable names (not CSV headers) whose values are transliterated into the agent's language, for example ["callee_name"]. Each must be mapped in variables_map; mobile_number is refused with 400. The original value stays available as original_<field>. Combined with transliterate_callee_name when both are sent.

Example:

"[\"callee_name\"]"

Response

CSV accepted. The list is checked in the background; poll Get Campaign Upload Status.

message
string
Example:

"CSV uploaded successfully. Processing in background."

bulk_list_id
string
Example:

"123e4567-e89b-12d3-a456-426614174000"

status
string
Example:

"verifying"

total_rows
integer

Rows in the file, not counting fully blank rows.

Example:

5000

campaign_name
string
Example:

"Renewal reminders - large upload"