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

# Campaigns

> Browse active campaigns, stats, donations, and donation-echo addresses

<Badge icon="globe" color="gray" shape="pill">
  Public (API key optional)
</Badge>

Campaign endpoints return **active** campaigns and related catalog data. Anonymous callers may omit `donate-api-key` and are IP rate-limited. See [Authentication](/developer/authentication).

## List campaigns

`GET /campaigns`

Returns a paginated list of active campaigns with category, media, config beneficiaries, and stats. Non-active statuses are never returned on this public surface.

```bash theme={null}
curl "https://www.donate.gg/api/v1/campaigns?limit=50&orderMode=total"
```

**Query parameters**

| Parameter      | Type                                  | Default | Description                                  |
| -------------- | ------------------------------------- | ------- | -------------------------------------------- |
| `limit`        | integer                               | -       | Results per page, max `200`                  |
| `cursor`       | string                                | -       | Cursor from previous `pageKey` for next page |
| `orderMode`    | `"newest"` \| `"oldest"` \| `"total"` | -       | Sort order                                   |
| `categorySlug` | string                                | -       | Filter by category slug                      |

**Response (200)** - `{ "pageKey": string \| null, "response": Campaign[] }` where bigint and Date fields are decimal / ISO-8601 strings.

***

## Get campaign stats

`GET /campaigns/{campaignId}/stats`

```bash theme={null}
curl "https://www.donate.gg/api/v1/campaigns/{campaignId}/stats"
```

Unknown or stats-less campaigns return zeroed stats (not `404`).

***

## List campaign donations

`GET /campaigns/{campaignId}/donations`

Paginated donations sent to the campaign.

```bash theme={null}
curl "https://www.donate.gg/api/v1/campaigns/{campaignId}/donations?limit=25"
```

***

## Donation Echo deposit address

`GET /campaigns/{campaignId}/donation-echo?chainId={chainId}`

Lazy get-or-provision of a campaign Donation Echo deposit address. May return **202** with `status: "provisioning"` while registration finishes; poll until `status: "ready"`.

```bash theme={null}
curl "https://www.donate.gg/api/v1/campaigns/{campaignId}/donation-echo?chainId=8453"
```
