Campaigns API

List the campaigns on your account.

Last updated May 8, 2026

List the campaigns on your account. Order creation requires a campaignId, so this is usually the first call you make when wiring up an integration.

#Endpoints

  • GET /v1/campaigns/list — list all campaigns owned by the authenticated account.

#Authentication

Standard Bearer auth — see Authentication and API keys.

#List campaigns

GET /v1/campaigns/list

No parameters. Returns every campaign on the account.

Response shape:

[
  {
    "id": "<campaign_id>",
    "name": "Q2 Onboarding Kit",
    "expiration": "2026-09-30T00:00:00.000Z",
    "products": [
      {
        "id": "<product_id>",
        "title": "Logo Tee",
        "sku": "TEE-BLK-M",
        "minimumOrderQuantity": 1,
        "productionTime": 7,
        "imageUrl": "https://cdn.merch.com/<file>",
        "piecesPerCarton": 24,
        "cartonHeight": 12,
        "cartonLength": 18,
        "cartonWidth": 14,
        "weight": 0.4,
        "packageHeight": 1,
        "packageLength": 10,
        "packageWidth": 8,
        "packageWeight": 0.5
      }
    ],
    "status": "Active",
    "allowOutOfStockOrders": false
  }
]

Field notes:

  • id — pass this as campaignId on POST /v1/orders/create and other campaign-scoped endpoints.
  • name — display name set in the customer portal.
  • expiration — the campaign's expiration date as an ISO 8601 string. See the callout below.
  • products — the variants attached to this campaign, in the same shape as GET /v1/products/list. One row per active variant.
  • status — display string. Typical values: Draft, Active, Paused, Expired.
  • allowOutOfStockOrderstrue if the campaign permits orders to be placed when inventory is exhausted.
curl -X GET 'https://api.merch.com/v1/campaigns/list' \
  -H 'Authorization: Bearer <your_api_key>'

#How this connects to creating orders

POST /v1/orders/create requires a campaignId. Most integrations call GET /v1/campaigns/list once at startup, cache the campaign ids they care about, and reuse them on each create. See the Orders API for the full create flow.

#Errors

  • 401 Unauthorized — missing, malformed, or invalid bearer token. See Authentication and API keys.
  • 500 Internal Server Error — unexpected error. Body is a { "message": "..." } string. Retry after a short delay.

Ready to build your merch?

Custom design, production, campaigns, and global fulfillment. One partner, zero platform fees. Your custom proposal in 24 hours.

Create an account to browse, design, and request orders right away. A discovery call with your rep completes onboarding.