canonical: https://jentic.com/apis/loyalty.dog/loyalty

# LoyaltyDog

The LoyaltyDog API runs digital loyalty programs delivered as wallet passes, letting a merchant enrol customers, add reward points, publish offers and vouchers, and push messages to the passes on customers' phones. Beyond loyalty cards it covers pass templates with branding and images, individual passes with save-to-wallet links and status, gift cards with issuance, reloads, redemptions, refunds, and fraud alerts, plus scanners, webhooks, and customer consent records. Calls authenticate with a JWT bearer token obtained from the token endpoint, and app keys can be created, rotated, and revoked for integrations.

## For AI agents

Enrol customers in a LoyaltyDog program, add points, publish offers and vouchers, push messages to wallet passes, and issue or redeem gift cards. Authenticates with a JWT bearer token.

## Scope

Does not process card payments, run an online storefront, or send email campaigns. Use for wallet-pass loyalty programs, points, offers, vouchers, and gift cards only.

## Capabilities

- Enrol a customer in a loyalty program with firstName, lastName, email, phone, and starting points via POST `/v2/loyalty/programs/{programId}/customers`
- Add reward points to a customer's account through POST `/v2/loyalty/programs/{programId}/customers/{customerId}/points/add`
- Publish, cancel, or duplicate program offers and let a customer claim one through the offers/{offerId}/claim operation
- Push a message to every consenting pass holder in a program via POST `/v2/loyalty/programs/{programId}/customers/push`
- Issue, reload, redeem, and refund gift cards, including bulk issuance with an async task to poll
- Generate a save-to-wallet link for a pass and update its values, status, or images under `/v2/passes/{passTypeIdentifier}/{serialNumber}`
- Record marketing_email, marketing_sms, analytics, or data_sharing consents for a customer and read them back

## Use cases

### Point-of-sale loyalty agent through Jentic

A store assistant agent awards points after each purchase. It searches Jentic for 'add loyalty points to a customer', receives the LoyaltyDog points operation with its input schema, finds the customer by email with the customers list operation, and posts the points to POST `/v2/loyalty/programs/{programId}/customers/{customerId}/points/add.` The updated points total comes back in the response, so the agent can tell the customer their new balance.

Example prompt: Call GET `/v2/loyalty/programs/{programId}/customers` with email 'ana@example.com', then POST `/v2/loyalty/programs/{programId}/customers/{customerId}/points/add` with points 50 and report the new total

### Wallet pass promotions

Announce a weekend offer straight to customers' phones. The merchant publishes an offer with POST `/v2/loyalty/programs/{programId}/offers/{offerId}/publish`, then sends a message with the program-wide push operation. The response reports recipients and members, so the merchant sees how many pass holders granted marketing consent and actually receive the notification.

Example prompt: Publish the offer with POST `/v2/loyalty/programs/{programId}/offers/{offerId}/publish`, then call POST `/v2/loyalty/programs/{programId}/customers/push` with message 'Double points this weekend' and report recipients versus members

### Gift card issuance and redemption

Run a gift card program next to the loyalty card. POST `/v2/giftcards/programs/{programId}/cards/bulk` issues multiple cards with an initialValue and returns a task to poll, while redeem, reload, and refund operations handle the card's lifecycle at the till with a posTransactionId and terminalId for reconciliation.

Example prompt: Call POST `/v2/giftcards/programs/{programId}/cards/bulk` with initialValue 25 and count 100, then poll GET `/v2/giftcards/programs/{programId}/cards/bulk/{taskId}` until the task completes

### Consent and privacy requests

Keep marketing consent and data-subject requests in order. Consents are recorded per customer with a consentType such as marketing_email or marketing_sms, a method such as checkbox or pos_terminal, and a policyVersion, and a customer's data can be exported or a DSAR request created and tracked through its status.

Example prompt: Call POST `/v2/loyalty/programs/{programId}/customers/{customerId}/consents` with consentType marketing_sms, granted true, method checkbox, and the current policyVersion

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v2/token` | Log in and obtain a JWT access token |
| POST | `/v2/loyalty/programs/{programId}/customers` | Enrol a customer in a program |
| POST | `/v2/loyalty/programs/{programId}/customers/{customerId}/points/add` | Add reward points to a customer |
| POST | `/v2/loyalty/programs/{programId}/customers/push` | Push a message to all consenting pass holders |
| POST | `/v2/loyalty/programs/{programId}/offers/{offerId}/publish` | Publish an offer |
| POST | `/v2/giftcards/programs/{programId}/cards/bulk` | Issue multiple gift cards |
| GET | `/v2/passes/{passTypeIdentifier}/{serialNumber}/savetowallet` | Get the save-to-wallet URL for a pass |
| POST | `/v2/webhooks` | Create a webhook |

## Key resources

- **Loyalty programs** — Programs with custom fields, card design, icon, and pass type
- **Customers** — Program members with points, offers, activities, transactions, and consents
- **Offers and vouchers** — Promotions that can be published, cancelled, claimed, and redeemed
- **Passes and templates** — Wallet passes built from templates, with save-to-wallet links, values, and status
- **Gift cards** — Cards issued singly or in bulk, reloaded, redeemed, refunded, and monitored for fraud
- **Webhooks and app keys** — Event callbacks and rotatable application keys for integrations

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 43 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 92 / 100
  - Developer Experience & Jentic Compatibility: 62 / 100
  - AI-Readiness & Agent Experience: 23 / 100
  - Agent Usability: 43 / 100
  - Security: 75 / 100
  - AI Discoverability: 62 / 100
- **View full report:** https://jentic.com/apis/loyalty.dog/loyalty/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring LoyaltyDog by hand means logging in through the OAuth2 password form at POST `/v2/token`, refreshing the JWT, handling MFA, and sending separate Eposn token headers on gift card routes. Through Jentic you install once, import LoyaltyDog from the API Directory, store your token once, and your agent calls it.
- **Permission scoping:** LoyaltyDog puts the program id in the URL path (`/v2/loyalty/programs/{programId}/...`), so a rule can pin your agent to one loyalty program and the operations you pick. You choose the operations it may call, so destructive ones like customer purge or gift card void are not included unless you add them.
- **Credential handling:** Your LoyaltyDog token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add loyalty points to a customer' or 'issue gift cards', and Jentic returns the matching LoyaltyDog operation with its input schema, out of 257, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **LoyaltyLion API** — Points and rewards loyalty programs for e-commerce stores
- **Talon.One API** — Rules engine for promotions, coupons, referrals, and loyalty
- **Antavo API** — Loyalty program management with tiers, rewards, and member events
- **Shopify API** — Online store orders, customers, and products

## FAQ

### What authentication does the LoyaltyDog API use?

Per its OpenAPI spec, the LoyaltyDog API uses an HTTP bearer JWT obtained by posting a username and password to POST `/v2/token`; MFA logins finish at POST `/v2/token/mfa-verify.` Gift card routes also accept X-Eposn-Customer-Token and X-Eposn-Merchant-Token headers, and a few routes such as signup and gift card balance checks need no token. Through Jentic, the token is stored encrypted by your own Jentic One instance and injected at execution time.

### Can I add points to a customer with the LoyaltyDog API?

Yes. POST `/v2/loyalty/programs/{programId}/customers/{customerId}/points/add` takes a required points value and returns the updated customer with the new total. It accepts an Idempotency-Key header, so a retried request after a timeout does not award the points twice.

### What are the rate limits for the LoyaltyDog API?

The OpenAPI spec does not publish a general rate limit. It states that the customer gift card balance check is rate limited to 5 requests per minute per IP, and warns that excessive push notifications can lead to rate limiting or blocking of your cards. See https://loyalty.dog/contact-us for current limits.

### How do I send a push message to my loyalty customers through Jentic?

Install Jentic One, add the LoyaltyDog API from the Jentic directory, and store your token. Your agent searches for 'send a push message to loyalty customers', receives POST `/v2/loyalty/programs/{programId}/customers/push` with its message field, and the response reports recipients and members so you can see how many granted marketing consent. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Why did my LoyaltyDog push reach fewer customers than hold the pass?

Marketing consent is opt-in, so recipients counts only customers who answered yes, while members counts everyone holding the pass. The push operation returns HTTP 409 when the program requires consent but has nobody to send to, or when the audience already holds the same message, because wallet passes only notify when the text changes.

### Is there a LoyaltyDog MCP server?

LoyaltyDog's spec links to its own MCP integration guide. You can also connect the LoyaltyDog API directly through Jentic: your agent gets the full 257-endpoint surface from the spec without loading another server's tool definitions into its context, your token is injected at call time by your self-hosted instance instead of living in an MCP config, and your rules decide which operations the agent may call.

### Can I limit what my agent is allowed to do with the LoyaltyDog API?

Yes. For a till assistant, allow only the customer lookup and points/add operations under your program's programId, so the agent can find a member and award points but cannot purge customers, push messages, or issue gift cards. The agent's calls are logged for review.
