---
title: "Upload Campaign Contact List"
method: POST
path: "/campaign/save"
tags: ["campaign"]
---

# Upload Campaign Contact List

`POST /campaign/save`

Uploads a contact list for a campaign. Accepts a CSV file and campaign configuration as form data.

## Headers

- `X-API-KEY` string, required

## Response `200`

Contact list uploaded and campaign saved successfully.

- object
  - `message` string
  - `list_id` string — ID of the created campaign list
  - `custom_args_values` object[] — Array of custom variables for each contact
  - `total_rows` integer — Total number of rows in uploaded CSV
  - `successful_rows` integer — Number of successfully processed rows
  - `failed_rows` integer — Number of rows that failed validation

## Other responses

- `400` — Bad Request - Invalid input or file.
- `401` — Unauthorized - Invalid or missing authentication.
- `500` — Internal Server Error.

---

[API](https://skmtc.dev/ringg/apis/ringg-ai-api-documentation.md) · [All operations](https://skmtc.dev/ringg/apis/ringg-ai-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ringg/ringg-ai-api-documentation/revisions/00b614a7714c/schema)
