# Reporting

What happened to the leads you sent and where they are now: the conversion report (first AI call, appointment booked and held, deal won or lost, with its value) and the campaign's pipeline board. Both are read live from DialEcho on every request and need `leads:read`.

Only leads the key's member can see in DialEcho are returned; the others are skipped, so a page can hold fewer rows than `limit`, or none, while `has_more` is still `true`. Keep following `next_cursor`.

## Endpoints

### [List conversions](/api/reporting/list-conversions)

`GET /v1/campaigns/{campaign_id}/conversions`

Returns one conversion row per lead of a campaign, oldest first.

### [Retrieve a conversion](/api/reporting/get-conversion)

`GET /v1/leads/{lead_id}/conversion`

Returns the conversion row of one lead, exactly as the list returns it.

### [Retrieve the pipeline](/api/reporting/pipeline-board)

`GET /v1/campaigns/{campaign_id}/pipeline`

Returns the campaign's pipelines with every stage in board order and how many of the campaign's leads are in each.

### [List a stage's leads](/api/reporting/stage-leads)

`GET /v1/campaigns/{campaign_id}/pipeline/stages/{stage}/leads`

Returns the campaign's leads in one stage, the most recent arrival first.
