One POST endpoint. Pass the user's cards and the purchase amount. Get back the best card to use β with reward rate, category, and a human-readable reason your agent can speak aloud.
Select a merchant below and fire a real request to /v1/agent/recommend using our sandbox key.
{
"amount": 87.45,
"mcc": "5411",
"merchant_name": "Whole Foods",
"cards": [
{
"id": "amex_blue_cash_preferred",
"issuer": "American Express",
"reward_type": "cashback",
"base_rate": 1,
"category_bonuses": [
{ "category": "groceries", "rate": 6 }
]
},
{
"id": "chase_sapphire_preferred",
"issuer": "Chase",
"reward_type": "points",
"base_rate": 1,
"category_bonuses": [
{ "category": "dining", "rate": 3 },
{ "category": "travel", "rate": 3 }
]
},
{
"id": "citi_double_cash",
"issuer": "Citi",
"reward_type": "cashback",
"base_rate": 2
}
]
}
Sign up below and verify your email. A sandbox sp_agent_sandbox_β¦ key arrives instantly β no approval needed. Production (sp_agent_β¦) requires a quick review.
In your agent's tool call, pass the user's cards[] array (id, issuer, reward_type, base_rate, category_bonuses) and the amount they're about to spend.
Read top_cards[0].reason β a human-readable string like "6% on groceries" β and pipe it directly into your agent's response. Done.
const res = await fetch('https://superpayrewards.com/v1/agent/recommend', {
method: 'POST',
headers: {
'Authorization': 'Bearer sp_agent_xxxxxxxx_...',
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount: 87.45,
mcc: '5411',
merchant_name: 'Whole Foods',
cards: [
{ id: 'amex_gold', issuer: 'American Express', reward_type: 'cashback',
base_rate: 1, category_bonuses: [{ category: 'groceries', rate: 6 }] },
{ id: 'citi_double_cash', issuer: 'Citi', reward_type: 'cashback', base_rate: 2 },
],
}),
});
const { top_cards, category } = await res.json();
// top_cards[0].reason β "6% on groceries"
// top_cards[0].estimated_reward_cents β 524
// Hand this to your agent's LLM response directly.
You send card metadata and a transaction amount β never an account number, cardholder name, or payment token. SuperPay never sees who is buying what.
Recommendations are computed from a cached catalog β no AI call in the critical path. Safe to call inline in a tool call without blowing your latency budget.
Every top_cards[].reason is a human-readable sentence your agent can speak aloud or embed in a chat response without post-processing.
Pass the user's actual cards per-request. The engine scores each card against the transaction and returns a ranked list β no server-side state required.
Agent keys (sp_agent_β¦) are separate from merchant and bank keys β different rate limits, separate usage logs, independent rotation.
Pass an MCC code, a category string, or a merchant name. The engine resolves whichever is most specific β no preprocessing on your side.
Sandbox key (sp_agent_sandbox_β¦) is instant and free. Production key (sp_agent_β¦) requires a brief review β typically approved same day.
sp_agent_sandbox_β¦ key β instantPOST /v1/agent/recommendsp_agent_β¦ key β reviewed use caseallowedCardProductIds filterFree sandbox key delivered instantly to your inbox. No approval needed to start building.