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

# Get Campaign Results

> Get pre-signed download URL for campaign results CSV

## Get Campaign Results

Return a pre-signed download URL for the campaign results file.
Available only after post-processing completes.

***

## Path Parameters

<ParamField path="campaign_id" type="string" required>
  UUID of the campaign
</ParamField>

***

## Example Request

```bash theme={null}
curl "https://api.vaani.ai/api/campaigns/abc-123-xyz/results" \
  -H "X-API-Key: vaani_abc123..."
```

***

## Response `200 OK`

```json theme={null}
{
  "campaign_id": "abc-123-xyz",
  "results_url": "https://vaani-dev-storage.s3.ap-south-1.amazonaws.com/campaigns/.../results.csv?X-Amz-Algorithm=...",
  "generated_at": "2026-07-01T15:30:00Z",
  "expires_at": "2026-07-01T16:30:00Z",
  "post_processing_status": "completed"
}
```

***

## Response Fields

<ResponseField name="results_url" type="string">
  Pre-signed S3 URL for downloading the results CSV (valid for 1 hour)
</ResponseField>

<ResponseField name="post_processing_status" type="string">
  Status: `not_processed`, `processing`, `completed`, `failed`
</ResponseField>

***

## Results CSV Format

The results CSV contains all campaign contacts with call outcomes:

| Column            | Description                                             |
| ----------------- | ------------------------------------------------------- |
| `name`            | Contact name                                            |
| `phone_number`    | Contact phone number                                    |
| `call_status`     | `completed`, `failed`, `no_answer`, `busy`, `cancelled` |
| `call_duration`   | Call duration in seconds                                |
| `call_transcript` | Full conversation transcript                            |
| `call_summary`    | AI-generated call summary                               |
| `call_tags`       | Comma-separated outcome tags                            |
| `attempts`        | Number of dial attempts                                 |
| `last_attempt_at` | Timestamp of last attempt                               |

***

## Error Response `404 Not Found`

```json theme={null}
{
  "status_code": 404,
  "error": "Not Found",
  "message": "Campaign results not yet available. Post-processing status: processing",
  "code": "RESULTS_NOT_READY"
}
```
