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

# Get Marketplace Campaign

> Get a live marketplace campaign teaser or an approved partner's full brief

Retrieve a live marketplace campaign. Without `affiliate_id`, this endpoint is public, ignores the `Authorization` header (including invalid keys), and returns a teaser with `details: null`. Supply `affiliate_id` and an API key to request the full brief for an eligible partner of your team.

> [!NOTE]
>
> The team routes under `/v1/program/campaigns`, [List Campaigns](https://docs.affonso.io/api/endpoint/campaigns/list.md) and [Get Campaign](https://docs.affonso.io/api/endpoint/campaigns/get.md), require an API key with `read:program`. They return only your team's campaigns in any status, including drafts, with owner fields such as `status`, `max_budget` and retainer settings. Marketplace routes show the partner view: only live campaigns from marketplace-listed programs across any team, public teasers without authentication, no `max_budget`, and hidden owner settings. The full brief (`details`) is available only for an approved partner of your team through `affiliate_id` and an API key with `read:affiliates`.

## Path Parameters

**id** `string` *required*

Encoded campaign id

## Query Parameters

**affiliate\_id** `string`

Id of a partner on your team. Requires `Authorization: Bearer sk_live_your_api_key` and `read:affiliates`, also satisfied by `write:affiliates`, `delete:affiliates`, or `read`.

## Response

**success** `boolean`

Always `true` for successful responses

**data** `object`

Campaign teaser with an optional full brief.

**Campaign Properties**

**id** `string`

Encoded campaign id

**name** `string`

Campaign title

**reward** `object`

Campaign reward.

**Reward Properties**

**type** `string`

`flat_rate`, `custom`, `range`, or `retainer`

**amount** `number | null`

Fixed reward amount

**amount\_min** `number | null`

Range minimum

**amount\_max** `number | null`

Range maximum

**currency** `string`

Team currency, for example `USD`

**start\_date** `string`

ISO 8601 start datetime

**end\_date** `string | null`

ISO 8601 end datetime, or `null`

**program** `object`

Marketplace program.

**Program Properties**

**id** `string`

Encoded program id, the same as the marketplace program id

**name** `string`

Program name

**logo\_url** `string | null`

Program logo URL, falling back to the team avatar

**currency** `string`

Program currency, for example `USD`

**details** `object | null`

Full brief only when the partner has an `APPROVED` partnership with the campaign's program, the program is owned by your team, and the partner's status is not `INACTIVE`, `REJECTED` or `BANNED`. Otherwise `null`, still with HTTP 200.

**Brief Properties**

**description** `string | null`

Campaign description

**kind** `string`

Always `"submission"`

**submission\_requirements** `object | null`

Required submission content, or `null`.

**Submission Requirements Properties**

**text\_required** `boolean`

Whether text is required

**images\_required** `boolean`

Whether images are required

**urls\_required** `boolean`

Whether URLs are required

**max\_submissions\_per\_user** `integer | null`

Per-partner submission cap, or `null`

**application\_required** `boolean`

Whether partners must apply before submitting proof

**application\_prompt** `string | null`

Application question text

```bash cURL theme={null}
curl -X GET "https://api.affonso.io/v1/marketplace/campaigns/cmlaunch01camp0001"
```

```bash cURL with Partner theme={null}
curl -X GET "https://api.affonso.io/v1/marketplace/campaigns/cmlaunch01camp0001?affiliate_id=cmlaunch01aff00001" \
  -H "Authorization: Bearer sk_live_your_api_key"
```

```json Response theme={null}
{
  "success": true,
  "data": {
    "id": "cmlaunch01camp0001",
    "name": "Launch Review Bounty",
    "reward": {
      "type": "flat_rate",
      "amount": 100,
      "amount_min": null,
      "amount_max": null,
      "currency": "USD"
    },
    "start_date": "2026-10-01T00:00:00.000Z",
    "end_date": null,
    "program": {
      "id": "cmlaunch01prog0001",
      "name": "Acme Analytics",
      "logo_url": "https://cdn.affonso.io/logos/acme-analytics.png",
      "currency": "USD"
    },
    "details": null
  }
}
```

```json Response for Approved Partner theme={null}
{
  "success": true,
  "data": {
    "id": "cmlaunch01camp0001",
    "name": "Launch Review Bounty",
    "reward": {
      "type": "flat_rate",
      "amount": 100,
      "amount_min": null,
      "amount_max": null,
      "currency": "USD"
    },
    "start_date": "2026-10-01T00:00:00.000Z",
    "end_date": null,
    "program": {
      "id": "cmlaunch01prog0001",
      "name": "Acme Analytics",
      "logo_url": "https://cdn.affonso.io/logos/acme-analytics.png",
      "currency": "USD"
    },
    "details": {
      "description": "Publish an honest review of Acme Analytics on your blog or channel.",
      "kind": "submission",
      "submission_requirements": {
        "text_required": true,
        "images_required": false,
        "urls_required": true
      },
      "max_submissions_per_user": 1,
      "application_required": true,
      "application_prompt": "Link your review draft"
    }
  }
}
```

## Notes

* Only `ACTIVE` campaigns whose `start_date` is at or before now and whose `end_date` is `null` or at or after now are visible. Their program must have joined the marketplace, be `ACTIVE`, and have an access mode other than `invite`.
* Public marketplace requests have an IP rate limit of 60 requests per window. Rate limit headers are `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. Authenticated requests also have the normal API key rate limit.
* Responses use `Cache-Control: no-store` because campaign windows are time-sensitive.
* Campaign visibility is checked before any partner lookup. Unknown, invisible or undecodable campaign ids return `NOT_FOUND` (HTTP 404), with the message "Campaign not found".
* With `affiliate_id` but no `Authorization` header, the response is `UNAUTHORIZED` (HTTP 401), with the message "Authentication required". A key without the required permission returns `INSUFFICIENT_PERMISSIONS` (HTTP 403).
* A partner not on your team returns `AFFILIATE_NOT_FOUND` (HTTP 404), with the message "Affiliate not found or does not belong to your team" and field `affiliate_id`.
* There is no marketplace join endpoint. Partners join through the hosted portal, for example using a portal token from `POST /v1/affiliates/{id}/portal-token`. Apply on a partner's behalf using the team route [Apply to Campaign](https://docs.affonso.io/api/endpoint/campaigns/apply.md).
* `max_budget` is never returned on marketplace routes.
* A server error returns `INTERNAL_ERROR` (HTTP 500), with the message "Failed to fetch campaign".


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.