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 ascampaignIdonPOST /v1/orders/createand 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 asGET /v1/products/list. One row per active variant.status— display string. Typical values:Draft,Active,Paused,Expired.allowOutOfStockOrders—trueif 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.