Get program configuration
GET /program| Scope | program:read |
| Customer session token | Accepted with the read scope, for the token’s own customer |
| Rate limit class | read (limits) |
| Idempotency key | Not used |
| MCP tool | charm_get_program |
Read-only view of the loyalty program: earning rules, redemption rules, referral setup and expiry policy.
Response 200
Section titled “Response 200”Returns Program.
| Field | Type | Description |
|---|---|---|
enabled | boolean | |
program_name | string or null | (nullable) |
points_name | string or null | (nullable) |
points_expiry | object or null | (nullable) |
reward_expiry | object or null | (nullable) |
eligibility | object or null | (nullable) |
referral | object | |
memberships_enabled | boolean | |
tiers_enabled | boolean | |
earning_rules | array of EarningRule | |
redemption_rules | array of Reward | |
revision | integer | Counts the program’s saves. Send it as if_revision on a write so a concurrent admin edit is refused instead of overwritten. |
updated_at | string or null | (nullable) |
{ "enabled": true, "program_name": "Rewards Club", "points_name": "points", "points_expiry": { "enabled": true, "months": 1 }, "reward_expiry": { "enabled": true, "code_valid_days": 1 }, "eligibility": { "customer_audience": "all", "excluded_customer_tags": [ "excluded customer tags" ], "excluded_product_tags": [ "excluded product tags" ] }, "referral": { "enabled": true, "code_prefix": "REF", "discount_type": "percentage", "discount_value": 1, "minimum_purchase": 1 }, "memberships_enabled": false, "tiers_enabled": false, "earning_rules": [ { "id": "id", "type": "earn", "enabled": true, "label": "Points per order", "points": 120, "points_per_currency": 120, "limit": 1, "title": "title", "title_translations": {}, "fields": {}, "summary": "summary" } ], "redemption_rules": [ { "id": "id", "type": "earn", "enabled": true, "name": "Gold", "points_cost": 120, "discount_type": "percentage", "discount_value": 1, "code_valid_days": 1, "title": "title", "title_translations": {}, "fields": {}, "summary": "summary" } ], "revision": 1, "updated_at": "2026-10-01T09:30:00.000Z"}Example
Section titled “Example”curl -X GET "https://charm.appfleece.app/api/v1/program" \ -H "Authorization: Bearer chrm_live_..."Errors
Section titled “Errors”unauthorized · invalid_token · token_expired · 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.