Production Checklist.
Launch-safety checklist for Agent API integrations, including idempotency, retries, key management, and reconciliation.
Use this checklist before you put a POS, e-commerce connector, or automation into production.
Key Management
- Use separate keys per environment. Do not share one key across local, staging, and production.
- Use separate keys per integration surface when practical. A POS terminal fleet should not share the same key as a nightly reporting job.
- Store keys in environment variables or a secrets manager.
- Keep partner keys server-side only. Never expose them in browser code or mobile apps.
- Remember that full keys are shown once and are never recoverable.
- Rotate keys by creating the replacement first, updating the integration, then revoking the old key.
Scope Hygiene
- Start with least privilege.
- Give write scopes only for the resources the integration actually mutates.
- Use member keys for member wallet operations and partner keys for partner-owned business actions.
- Verify the final granted scopes by calling
GET /api/agent/v1/health.
Transaction Safety
The purchase and redemption flows are not idempotent.
POST /partner/transactions/purchasecan award points more than once if you replay the same logical order.POST /partner/transactions/redeemcan deduct points more than once if you replay the same logical redemption.
Recommended practice:
- Treat a confirmed success response as final.
- Purchase returns
201; redemption returns200. - If you get a timeout or ambiguous network failure, reconcile before replaying.
- Track your own external order IDs or redemption IDs.
- Pass those IDs in the
notefield where supported so reconciliation is possible later.
Example:
POST /api/agent/v1/partner/transactions/purchase HTTP/1.1
Host: your-domain.com
Accept: application/json
Content-Type: application/json
X-Agent-Key: rl_agent_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0
{
"card_id": "3598a5db-f008-477c-ac4d-5365c662ad62",
"member_identifier": "[email protected]",
"purchase_amount": 24.50,
"note": "Order #12345"
}
Notes and Reconciliation
Use the note field whenever the endpoint supports it.
Good values:
Order #12345POS ticket 98441Shopify order gid://shopify/Order/123456789Cashier session 2026-03-08-07
This is especially useful for:
- purchase reconciliation
- reward-redemption investigation
- stamp-adjustment audits
- support tickets
Pagination and Filtering
Do not assume list endpoints return all records in one response.
per_pagedefaults to25per_pagemaxes at100- transaction list filters
fromandtoacceptY-m-d
Example:
GET /api/agent/v1/partner/transactions?from=2026-03-01&to=2026-03-08&per_page=100 HTTP/1.1
Host: your-domain.com
Accept: application/json
X-Agent-Key: rl_agent_A1b2C3d4E5f6G7h8I9j0K1l2M3n4O5p6Q7r8S9t0
Build pagination loops explicitly.
Error Handling
Your client should branch on retry_strategy, not only HTTP status.
no_retry: stop and surface the failurefix_request: correct the payloadbackoff: retry with exponential backoffcontact_support: alert a human
Required launch-time tests:
- invalid key
- wrong scope
- wrong role
- resource not found
- insufficient points or balance
- rate limit exceeded
- partner Agent API disabled
Rate Limits
Every response includes rate-limit headers:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
On 429 RATE_LIMITED, honor Retry-After. Do not hammer the API after a rate-limit response.
Operational Monitoring
- Log outbound request IDs and your own order or ticket references.
- Monitor Activity Logs for unexpected automation behavior.
- Keep a dead-letter or retry queue for
backofferrors. - Alert on repeated
AUTH_INVALID_KEY,AUTH_INSUFFICIENT_SCOPE, andRATE_LIMITEDresponses.
Final Launch Checklist
- Feature flag enabled in the correct environment
- Partner Agent API permission enabled where required
- Correct key type chosen
- Scopes minimized and verified via
/health - Retry logic implemented
- Non-idempotent purchase and redemption flows reconciled by external reference
- Notes populated with external identifiers where supported
- Pagination implemented
- Rate-limit handling implemented
- Error branches tested