Skip to content

Get a bonus campaign

GET /campaigns/{campaign_id}
Scopeprogram:read
Customer session tokenNot accepted: call from your server with an API key
Rate limit classread (limits)
Idempotency keyNot used
MCP toolcharm_get_campaign
NameInTypeDescription
campaign_idpathstringThe campaign’s id as GET /campaigns lists it.

Returns Campaign.

FieldTypeDescription
idstring or nullNull only in a dry run of a create. (nullable)
namestring or nullShown on the storefront banner and in campaign emails. (nullable)
typestring: earning_boost, reward_spotlight
templatestring or null(nullable)
statusstring: draft, scheduled, active, ended, cancelled
multipliernumber or nullPoints multiplier while the campaign runs (earning_boost). (nullable)
stacking_modestring or nullHow it combines with the VIP tier multiplier: compound, max or replace. (nullable)
starts_atstring or null(nullable)
ends_atstring or null(nullable)
rule_typesarray of stringThe ways to earn it boosts.
product_scopeobject
audienceobject
limitsobject
consumedobject
badge_textstring or null(nullable)
banner_copyobject{ [language]: { title, subtitle } } for the storefront banner.
spotlight_rewardsarray of object
emailsobject
deletablebooleanDraft, ended and cancelled campaigns can be deleted; others are cancelled.
revisionintegerSend it back as if_revision so a concurrent edit is refused instead of overwritten.
created_atstring or null(nullable)
updated_atstring 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"
}
Terminal window
curl -X GET "https://charm.appfleece.app/api/v1/campaigns/<campaign_id>" \
-H "Authorization: Bearer chrm_live_..."

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.