# Outcome tallies for the campaign funnel

Source: https://docs.usetone.ai/reference/campaigns/outcomes

> Counts by disposition, plus the tallies of your declared output variables — how many said yes, how many rescheduled — which is usually the number the campaign existed to produce.

`GET /v1/campaigns/{id}/outcomes`
Counts by disposition, plus the tallies of your declared output variables — how many said yes, how many rescheduled — which is usually the number the campaign existed to produce.

Requires the `read` scope.

## Parameters

| Name | In | | Meaning |
|---|---|---|---|
| `id` | path | required | The campaign's id. |

## Response

| Field | Type | | Meaning |
|---|---|---|---|
| `agentOutcome` | object | required | Output-variable name → value → how many connected calls ended with it. Values are clipped at 80 characters and the whole tally at 400 rows: this serves a funnel, not a table. |
| `disposition` | object | required | Dialled recipients by call outcome. Open set — handle an unrecognised value rather than throwing. Today: `answered`, `no_answer`, `busy`, `failed`, `voicemail`, `unknown`. |
| `excludedReason` | object | required | Excluded recipients by reason. Open set — handle an unrecognised value rather than throwing. Today: `invalid_number`, `duplicate`, `dnc`, `frequency_cap`, `dnd_scrub`, `blocked_by_gate`. |
| `status` | object | required | Recipients by status. Open set — handle an unrecognised value rather than throwing. Today: `pending`, `dialing`, `done`, `excluded`, `failed`. |

### Example response

```json
{
  "data": {
    "agentOutcome": {},
    "disposition": "answered",
    "excludedReason": "invalid_number",
    "status": "running"
  }
}
```
