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 elevate your merch?

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