> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ringg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get large campaign upload status (Beta)

> Poll asynchronous CSV processing status for a beta large campaign.

<Warning>
  This endpoint is beta. Use it only for lists created with [Upload large campaign CSV](/api-reference/endpoint/campaign/upload-large-campaign-csv).
</Warning>

`GET /campaign/upload-status/{bulk_list_id}` returns the processing state for a large campaign CSV upload.

## Endpoint

```text theme={null}
GET /campaign/upload-status/{bulk_list_id}
```

## Path parameters

| Parameter      | Required | Description                                                    |
| -------------- | -------- | -------------------------------------------------------------- |
| `bulk_list_id` | Yes      | Large campaign list ID returned by `POST /campaign/upload-csv` |

## Request

```bash theme={null}
curl --request GET "https://prod-api.ringg.ai/ca/api/v0/campaign/upload-status/your-bulk-list-id" \
  --header "X-API-KEY: $RINGG_API_KEY"
```

## Status flow

| Status       | Meaning                                      | Next action                  |
| ------------ | -------------------------------------------- | ---------------------------- |
| `uploaded`   | Ringg accepted the CSV and queued processing | Keep polling                 |
| `processing` | Rows are being parsed and validated          | Keep polling                 |
| `completed`  | Processing finished and valid rows are ready | Check balance                |
| `failed`     | Processing could not complete                | Fix the CSV and upload again |

Some beta workspaces may return equivalent status names such as `ready` for a completed upload. Continue only when the response clearly indicates that CSV processing has finished.

## Response guidance

The response includes the upload state and may include row counts or validation details.

```json theme={null}
{
  "bulk_list_id": "123e4567-e89b-12d3-a456-426614174000",
  "status": "processing",
  "total_rows": 6200,
  "processed_rows": 2800,
  "successful_rows": 2744,
  "failed_rows": 56
}
```

## Next step

When processing is complete, call [Check large campaign balance](/api-reference/endpoint/campaign/check-large-campaign-balance). If the response shows invalid rows, fix and re-upload the CSV unless your workflow intentionally removes invalid rows.


## OpenAPI

````yaml get /campaign/upload-status/{bulk_list_id}
openapi: 3.0.0
info:
  title: Ringg AI API Documentation
  description: >-
    This is the documentation for the Ringg AI APIs. The Ringg AI API follows
    RESTful principles, making it intuitive and easy to integrate with your
    applications. All API requests should be made to the base URL. The API
    accepts and returns data in JSON format. Ensure your requests include the
    appropriate Content-Type header for POST and PATCH requests.
  version: 2.0.0
servers:
  - url: https://prod-api.ringg.ai/ca/api/v0
security: []
tags:
  - name: workspace
    description: Endpoints for managing your workspace.
  - name: agent
    description: Endpoints for managing assistants (agents).
  - name: calling
    description: Endpoints for making and managing calls.
  - name: campaign
    description: Endpoints for managing campaigns.
  - name: analytics
    description: Endpoints for accessing call analytics and performance metrics.
  - name: termination
    description: Endpoints for terminating active calls using different methods.
  - name: knowledgebase
    description: Endpoints for managing knowledge bases.
paths:
  /campaign/upload-status/{bulk_list_id}:
    get:
      tags:
        - campaign
      summary: Get Campaign Upload Status (Beta)
      description: >-
        Beta endpoint for checking asynchronous CSV validation status before
        starting a large campaign.
      operationId: getCampaignUploadStatusBeta
      parameters:
        - name: X-API-KEY
          in: header
          description: (Required) Your Ringg AI API key.
          required: true
          schema:
            type: string
            example: 7251cb4b-3373-43a4-844c-b27a1d45e0c9
        - name: bulk_list_id
          in: path
          required: true
          description: Bulk list ID returned by /campaign/upload-csv.
          schema:
            type: string
      responses:
        '200':
          description: Upload status returned successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  bulk_list_id:
                    type: string
                    example: 123e4567-e89b-12d3-a456-426614174000
                  status:
                    type: string
                    example: verifying
                  campaign_name:
                    type: string
                    example: Renewal reminders - large upload
                  total_callees:
                    type: integer
                    example: 5000
                  invalidated_rows_count:
                    type: integer
                    example: 12
                  invalidated_rows_csv_url:
                    type: string
                    nullable: true
                    example: https://storage.example.com/invalid-rows.csv
        '401':
          description: Unauthorized - Invalid or missing authentication.
        '404':
          description: Bulk list not found.

````