---
title: "Create a campaign"
method: POST
path: "/affiliate-campaigns"
tags: ["Affiliates"]
---

# Create a campaign

`POST /affiliate-campaigns`

## Request

- Base URL: `https://api.supersendtx.com`
- URL: `https://api.supersendtx.com/affiliate-campaigns`
- Auth: HTTP bearer

## Request body

- CreateAffiliateCampaignRequest
  - `name` string, required
  - `description` string, nullable
  - `visibility` 'public' | 'private'
  - `auto_approve` boolean
  - `commission_type` 'percent' | 'flat'
  - `commission_bps` integer
  - `commission_flat_cents` integer
  - `commission_duration` 'once' | 'recurring'
  - `recurring_months` integer, nullable
  - `max_commission_cents` integer, nullable
  - `tiers` AffiliateCommissionTier[]
    - `min_paid_customers` integer, required
    - `commission_bps` integer, nullable
    - `commission_flat_cents` integer, nullable
  - `product_rates` AffiliateProductRate[]
    - `stripe_product_id` string, required
    - `commission_bps` integer, required
  - `second_tier_bps` integer
  - `lead_bounty_cents` integer
  - `cookie_days` integer
  - `hold_days` integer
  - `landing_url` string, uri, nullable
  - `referee_discount_label` string, nullable
  - `make_default` boolean: Make this the default campaign for new partners

## Response `201`

Campaign created

- AffiliateCampaignResponse
  - `campaign` AffiliateCampaign, required
    - `object` 'affiliate_campaign', required
    - `id` string, required
    - `name` string, required
    - `description` string, nullable
    - `is_default` boolean, required
    - `visibility` 'public' | 'private'
    - `auto_approve` boolean
    - `commission_type` 'percent' | 'flat', required
    - `commission_bps` integer: Percent in basis points (2000 = 20%)
    - `commission_flat_cents` integer
    - `commission_duration` 'once' | 'recurring', required
    - `recurring_months` integer, nullable: `null` = for the customer lifetime
    - `max_commission_cents` integer, nullable
    - `tiers` AffiliateCommissionTier[]
      - `min_paid_customers` integer, required
      - `commission_bps` integer, nullable
      - `commission_flat_cents` integer, nullable
    - `product_rates` AffiliateProductRate[]
      - `stripe_product_id` string, required
      - `commission_bps` integer, required
    - `second_tier_bps` integer: Share of a recruited partner’s commission paid to their recruiter
    - `lead_bounty_cents` integer: Paid once per referred signup, when that customer first pays
    - `cookie_days` integer, required
    - `hold_days` integer, required: Days a commission stays pending before it is earned (refund window)
    - `archived_at` string, date-time, nullable
    - `affiliate_count` integer: List responses only
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required

## Other responses

- `400`: Validation error (`details.fields` names each bad field)
- `401`: Missing or invalid API key
- `403`: The API key is not full access, or the action is not allowed
- `404`: Not found in this account

---

[API](https://skmtc.dev/ranla/apis/supersend-tx-api.md) · [All operations](https://skmtc.dev/ranla/apis/supersend-tx-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ranla/apis/supersend-tx-api/revisions/e3e782652f50?raw)
