Get a bonus campaign
GET /campaigns/{campaign_id}| 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_get_campaign |
Parameters
Section titled “Parameters”| Name | In | Type | Description |
|---|---|---|---|
campaign_id | path | string | The campaign’s id as GET /campaigns lists it. |
Response 200
Section titled “Response 200”Returns Campaign.
| Field | Type | Description |
|---|---|---|
id | string or null | Null only in a dry run of a create. (nullable) |
name | string or null | Shown on the storefront banner and in campaign emails. (nullable) |
type | string: earning_boost, reward_spotlight | |
template | string or null | (nullable) |
status | string: draft, scheduled, active, ended, cancelled | |
multiplier | number or null | Points multiplier while the campaign runs (earning_boost). (nullable) |
stacking_mode | string or null | How it combines with the VIP tier multiplier: compound, max or replace. (nullable) |
starts_at | string or null | (nullable) |
ends_at | string or null | (nullable) |
rule_types | array of string | The ways to earn it boosts. |
product_scope | object | |
audience | object | |
limits | object | |
consumed | object | |
badge_text | string or null | (nullable) |
banner_copy | object | { [language]: { title, subtitle } } for the storefront banner. |
spotlight_rewards | array of object | |
emails | object | |
deletable | boolean | Draft, ended and cancelled campaigns can be deleted; others are cancelled. |
revision | integer | Send it back as if_revision so a concurrent edit is refused instead of overwritten. |
created_at | string or null | (nullable) |
updated_at | string or null | (nullable) |
{ "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": [ "product ids" ], "collection_ids": [ "collection ids" ], "tags": [ "tags" ] }, "audience": { "mode": "all", "tier_ids": [ "tier ids" ], "tags": [ "tags" ] }, "limits": { "max_orders": 1, "max_bonus_points": 120 }, "consumed": { "orders": 1, "bonus_points": 120 }, "badge_text": "badge text", "banner_copy": {}, "spotlight_rewards": [ { "reward_id": "rr_10off", "sale_points_cost": 120 } ], "emails": { "teaser": { "enabled": true, "scheduled_for": "2026-10-01T09:30:00.000Z", "sent_at": "2026-10-01T09:30:00.000Z" }, "launch": { "enabled": true, "scheduled_for": "2026-10-01T09:30:00.000Z", "sent_at": "2026-10-01T09:30:00.000Z" }, "last_chance": { "enabled": true, "scheduled_for": "2026-10-01T09:30:00.000Z", "sent_at": "2026-10-01T09:30:00.000Z" } }, "deletable": false, "revision": 1, "created_at": "2026-10-01T09:30:00.000Z", "updated_at": "2026-10-01T09:30:00.000Z"}Example
Section titled “Example”curl -X GET "https://charm.appfleece.app/api/v1/campaigns/<campaign_id>" \ -H "Authorization: Bearer chrm_live_..."Errors
Section titled “Errors”unauthorized · invalid_token · insufficient_scope · access_required · not_found · 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.