---
title: "Retrieve a campaign"
method: GET
path: "/campaign/{id}"
tags: ["Campaigns"]
---

# Retrieve a campaign

`GET /campaign/{id}`

Retrieves a program for the given program ID.

## Path parameters

- `id` string, required

## Response `200`

Campaign returned.

- Campaign
  - `id` string, required
  - `name` string, required
  - `type` 'REFERRAL' | 'AFFILIATE', required
  - `referralCount` integer, required
  - `participantCount` integer, required
  - `impressionCount` integer, required
  - `inviteCount` integer, required
  - `winnerCount` integer, required
  - `currencyISO` string, nullable
  - `status` 'DRAFT' | 'IN_PROGRESS' | 'COMPLETE' | 'DELETED', required
  - `rewards` Reward[], required
    - `id` string, required
    - `type` 'SINGLE_SIDED' | 'DOUBLE_SIDED' | 'MILESTONE' | 'LEADERBOARD' | 'AFFILIATE', required
    - `description` string, nullable
    - `referralDescription` string, nullable
    - `referredRewardUpfront` boolean
    - `isUnlimited` boolean, required
    - `limit` integer, nullable — `-1` represents an unlimited reward in REST responses.
    - `conversionsRequired` integer, nullable
    - `numberOfWinners` integer, nullable
    - `limitDuration` 'IN_TOTAL' | 'PER_MONTH' | 'null', nullable
    - `imageUrl` string, nullable
    - `couponCode` string, nullable
    - `order` integer, nullable
    - `nextMilestonePrefix` string, nullable
    - `nextMilestoneSuffix` string, nullable
    - `metadata` Metadata, required — Shallow custom metadata object.
    - `commissionStructure` CommissionStructure
      - `amount` integer, nullable
      - `event` string, nullable
      - `type` 'PERCENT' | 'AMOUNT' | 'null', nullable
      - `minPaidReferrals` integer, nullable
      - `holdDuration` integer, nullable
      - `duration` string, nullable
      - `durationInMonths` integer, nullable
      - `approvalRequired` boolean, nullable
      - `percent` number, nullable
      - `hasMaxAmount` boolean, nullable
      - `maxAmount` integer, nullable
      - `maxAmountISO` string, nullable
      - `hasIntro` boolean, nullable
      - `introType` string, nullable
      - `introPercent` number, nullable
      - `introAmount` integer, nullable
      - `introAmountISO` string, nullable
      - `introDuration` string, nullable
      - `introDurationInMonths` integer, nullable

## Other responses

- `400` — Invalid request.
- `401` — Authorization is missing or invalid.
- `403` — The API key is not allowed to perform this action.
- `404` — Resource not found.
- `429` — Too many requests.

---

[API](https://skmtc.net/growsurf/apis/growsurf-rest-api.md) · [All operations](https://skmtc.net/growsurf/apis/growsurf-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/growsurf/growsurf-rest-api/revisions/26f06e273394/schema)
