List bonus campaigns
GET /campaigns| Scope | program:read |
| Customer session token | Not accepted: call from your server with an API key |
| Rate limit class | read (limits) |
| Idempotency key | Not used |
| MCP tool | charm_list_campaigns |
Every campaign (double points weekends, reward sales), newest first, with its window, status, scope and email phases. 403 feature_disabled when the shop does not have campaigns.
Parameters
Section titled “Parameters”| Name | In | Type | Description |
|---|---|---|---|
status (optional) | query | string: draft, scheduled, active, ended, cancelled | Only campaigns in this status. |
Response 200
Section titled “Response 200”Returns CampaignList.
| Field | Type | Description |
|---|---|---|
data | array of Campaign | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
{ "data": [ { "id": "id", "name": "Gold", "type": "earning_boost", "template": "template", "status": "draft", "multiplier": 1, "stacking_mode": "stacking mode", "starts_at": "2026-10-01T09:30:00.000Z", "ends_at": "2026-10-01T09:30:00.000Z", "rule_types": [ "rule types" ], "product_scope": { "mode": "all", "product_ids": [ null ], "collection_ids": [ null ], "tags": [ null ] }, "audience": { "mode": "all", "tier_ids": [ null ], "tags": [ null ] }, "limits": { "max_orders": 1, "max_bonus_points": 120 }, "consumed": { "orders": 1, "bonus_points": 120 }, "badge_text": "badge text", "banner_copy": {}, "spotlight_rewards": [ { "reward_id": null, "sale_points_cost": null } ], "emails": { "teaser": null, "launch": null, "last_chance": null }, "deletable": false, "revision": 1, "created_at": "2026-10-01T09:30:00.000Z", "updated_at": "2026-10-01T09:30:00.000Z" } ], "next_cursor": null, "has_more": true}Example
Section titled “Example”curl -X GET "https://charm.appfleece.app/api/v1/campaigns" \ -H "Authorization: Bearer chrm_live_..."Errors
Section titled “Errors”unauthorized · invalid_token · insufficient_scope · access_required · validation_error · rate_limited
Every error body carries code, message, request_id and a doc_url pointing at the matching entry in the error catalog.