# Get the running campaign

`GET https://evohub.io/api/v1/campaigns/active`

Part of the [Billing API](https://docs.evohub.io/billing.md) reference · operationId `getActiveCampaign`.

The credit campaign running now — the sign-up campaign when there is
one, otherwise the first-integration campaign — as the banner on the
public site shows it. `data` is `null` when no campaign is running.

No API key is needed. Answers may be cached for a minute.

## Responses

### 200 — The running campaign, or `null`.

Headers:

- `Cache-Control` (string): `public, max-age=60`.

Content type: `application/json`

Type: `object`

- `data` (PublicCampaign | null)
  - One of:
    - PublicCampaign
      - `id` (string)
      - `kind` (string, one of `card_signup`, `first_integration`)
      - `products` (array of string): The products a first-integration campaign pays for; `[]` for a sign-up campaign.
      - `name` (string)
      - `banner_text` (string)
      - `banner_link` (string)
      - `ehu` (number): The credit paid, in EHU.
      - `ends_at` (string (date-time))
    - null

### 429 — Too many requests (`RATE_LIMITED`). Wait for `Retry-After` seconds.

Headers:

- `Retry-After` (integer): Seconds to wait before retrying.

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `STATEMENT_NOT_FOUND`)
  - `message` (string, required, example `No statement for that period.`)
  - `request_id` (string)

### 500 — The campaign could not be loaded (`CAMPAIGN_UNAVAILABLE`). Retry later.

Content type: `application/json`

Type: `Error`

- `error` (object, required)
  - `code` (string, required, example `STATEMENT_NOT_FOUND`)
  - `message` (string, required, example `No statement for that period.`)
  - `request_id` (string)

## Example request

```bash
curl -X GET 'https://evohub.io/api/v1/campaigns/active'
```
