API Reference
Complete reference for the CardAPI REST API. Every endpoint returns JSON, and all but /v1/stats need an API key.
Guides
https://api.cardapi.devTry it without a key
GET /v1/cards/:slug, live, with the fields a free key returns. A few sample cards here; a free key covers the whole catalogue.
SDKs
Official SDKs are available on npm and PyPI. They handle authentication, serialization, and error handling out of the box.
npm install @cardapi/client
import { CardAPI } from "@cardapi/client";
const client = new CardAPI({ apiKey: "your_api_key" });
const cards = await client.getCards({ country: "US" });pip install cardapi
from cardapi import CardAPI
client = CardAPI("your_api_key")
cards = client.get_cards(country="US")Authentication
POST /v1/auth/register: Register by email
Start a sign-up without the website. We email a sign-in link to the address; opening it confirms the email and signs you in to the portal, where your free API key is created. No key is returned by this call, and the reply is the same whether or not the address already has an account. No API key needed. Rate limited by IP (5/hour, 10/day).
emailstringrequiredAccount email address{
"status": "verification_pending",
"message": "Check your inbox for a link from CardAPI. Open it to confirm your email and sign in to the developer portal, where your free API key is created.",
"portal_url": "https://cardapi.dev/portal"
}POST /v1/auth/keys: Create an API key
Create an additional API key on the same plan. Maximum 5 active keys per account.
{
"api_key": "ck_live_..."
}GET /v1/auth/usage: Get your usage
Your plan and your account's usage so far today and this month. Quotas are per account: the counts cover every key on the account, including keys you have revoked. This call counts toward your quota like any other.
curl "https://api.cardapi.dev/v1/auth/usage" \-H "Authorization: Bearer YOUR_API_KEY"
{
"tier": "starter",
"daily_used": 128,
"daily_limit": 500,
"monthly_used": 3402,
"monthly_limit": 15000
}POST /v1/auth/upgrade: Start a paid plan
Start a paid plan. For an account without one, this returns a Stripe Checkout URL where the cardholder completes payment (Starter starts with a 7-day free trial, once per customer). An API key never changes an existing paid plan, since that would bill the saved card: if the account already has one you get 409 use_portal. Change, cancel or update the card for a paid plan in the developer portal at cardapi.dev/portal, signed in as the account owner (or email support@cardapi.dev).
tierstringrequiredTarget plan: starter, pro or enterprisebillingstringmonthly (default) or annual{
"checkout_url": "https://checkout.stripe.com/c/pay/cs_live_...",
"updated": false,
"trial": false
}Cards
GET /v1/cards: List cards
List published cards, sorted by name, with reward rates, benefits, statement credits, perks and spend bonuses. Discontinued cards are left out unless include_discontinued=true. Free keys get the basic fields and top reward rates; paid plans get more fields.
countrystringUS or CAissuerstringIssuer slug, e.g. chase, amex-us, td (see /v1/issuers)networkstringVISA, MC, AMEX or DISCOVERtypestringpersonal, business, student or securedmax_annual_feenumberHighest annual fee to includeno_annual_feebooleantrue for $0 annual fee cards onlycredit_scoreintegerYour credit score; hides cards that need a higher oneinclude_discontinuedbooleantrue to include discontinued cardslimitintegerResults per page (default 20, max 100)offsetintegerResults to skip, for pagingcurl "https://api.cardapi.dev/v1/cards?country=US&issuer=amex-us" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "c2495eb2-eb53-4c4d-9bfb-6843f641f4ee",
"slug": "american-express-gold-card",
"name": "American Express® Gold Card",
"issuer_id": "875b443c-1d31-48fd-a475-a9ca487e9749",
"issuers": { "slug": "amex-us", "name": "American Express", "country": "US", "logo_url": null },
"network": "AMEX",
"card_type": "personal",
"annual_fee": 325,
"signup_bonus": "up to 100,000 Membership Rewards points",
"reward_currency_name": "Membership Rewards",
"is_discontinued": false,
"reward_rates": [ ... ],
"benefits": [ ... ],
"updated_at": "2026-09-10T08:52:16.527+00:00"
}
],
"total": 27,
"limit": 20,
"offset": 0
}GET /v1/cards/search: Search cards
Search card names and issuer names. Exact and prefix name matches rank first.
qstringrequiredSearch text (max 200 characters)countrystringUS or CA: only cards from issuers in that countrylimitintegerResults per page (default 20, max 100)offsetintegerResults to skip, for pagingcurl "https://api.cardapi.dev/v1/cards/search?q=sapphire" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"slug": "chase-sapphire-preferred-credit-card",
"name": "Chase Sapphire Preferred Credit Card",
"issuers": { "slug": "chase", "name": "Chase", "country": "US", "logo_url": null },
"annual_fee": 95
}
],
"total": 3,
"limit": 20,
"offset": 0
}GET /v1/cards/compare: Compare cards
Full details for 2-5 different cards in one response, in the order requested. A slug that matches no published card is a 404 that names it; a repeated slug is counted once; a malformed slug is a 400.
slugsstringrequiredComma-separated card slugs (2-5 different cards)curl "https://api.cardapi.dev/v1/cards/compare?slugs=chase-sapphire-preferred-credit-card,american-express-gold-card" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"slug": "american-express-gold-card",
"name": "American Express® Gold Card",
"annual_fee": 325,
"reward_rates": [ ... ],
"benefits": [ ... ],
"statement_credits": [ ... ]
},
{
"slug": "chase-sapphire-preferred-credit-card",
"name": "Chase Sapphire Preferred Credit Card",
"annual_fee": 95,
"reward_rates": [ ... ],
"benefits": [ ... ],
"statement_credits": [ ... ]
}
]
}GET /v1/cards/:slug: Get a card
Full details for one card: fees, APRs, signup bonus, reward rates, benefits, statement credits, perks, spend bonuses and eligibility. A reward rate's categories (slugs from /v1/categories), merchant, booking_channel and choice_group say where it earns; its category_slug is a label built from them and unique on the card: <categories>[:<merchant>][@portal|@direct][#choice][~<tag>], for example dining, groceries+gas, airlines:united-airlines, travel@portal, dining#choice, or other for the base rate (a ~tag such as ~3x only when two rates would otherwise share a label). Protection benefits can carry a details object with structured coverage terms (for example coverage_amount, minimum_delay_hours, covered_reasons).
slugstringrequiredCard slug, e.g. american-express-gold-card or chase-sapphire-preferred-credit-card (from /v1/cards or /v1/cards/search)curl "https://api.cardapi.dev/v1/cards/american-express-gold-card" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"id": "c2495eb2-eb53-4c4d-9bfb-6843f641f4ee",
"slug": "american-express-gold-card",
"name": "American Express® Gold Card",
"issuers": {
"slug": "amex-us",
"name": "American Express",
"country": "US",
"website": "https://www.americanexpress.com",
"logo_url": null
},
"network": "AMEX",
"card_type": "personal",
"annual_fee": 325,
"foreign_transaction_fee": 0,
"signup_bonus": "up to 100,000 Membership Rewards points",
"signup_min_spend": 8000,
"signup_min_spend_months": 6,
"reward_currency_name": "Membership Rewards",
"credit_score_min": null,
"reward_rates": [
{
"category_slug": "dining",
"categories": ["dining"],
"rate_multiplier": 4,
"rate_type": "points_per_dollar",
"cap_amount": 50000,
"cap_period": "annual",
"is_base_rate": false
},
{
"category_slug": "groceries",
"categories": ["groceries"],
"rate_multiplier": 4,
"rate_type": "points_per_dollar",
"cap_amount": 25000,
"cap_period": "annual",
"is_base_rate": false
}
],
"benefits": [
{
"benefit_type": "travel_insurance",
"name": "Trip Delay Insurance",
"description": "...",
"value": 300,
"details": null
}
],
"statement_credits": [
{
"credit_name": "Dining Credit",
"credit_amount": 120,
"credit_period": "annual",
"eligible_merchants": "Grubhub, Seamless, Buffalo Wild Wings, Five Guys, The Cheesecake Factory, Wonder",
"enrollment_required": true
}
],
"card_perks": [
{
"perk_type": "travel_credit",
"perk_name": "The Hotel Collection Credit",
"perk_value": null,
"details": "Credit at over 1,300 upscale hotels worldwide with 2+ night minimum"
}
],
"spend_bonuses": [],
"updated_at": "2026-09-10T08:52:16.527+00:00"
}
}GET /v1/cards/best: Rank cards for a category
Cards ranked by their reward rate in one spending category. Each card carries a category_rate object with the matching rate. Rates are matched on their canonical categories; merchant-only, portal-only and pick-your-category rates, and discontinued cards, are left out unless you opt in.
categorystringrequiredCategory slug, e.g. dining, groceries, gas, travel (see /v1/categories); a reward rate's category_slug naming one category also works (dining#choice, travel@portal)countrystringUS or CAmax_annual_feenumberHighest annual fee to includeno_annual_feebooleantrue for cards with a stated $0 annual fee only (an unknown fee does not count)include_restrictedbooleantrue to also rank rates limited to one merchant, the issuer's travel portal, or a pick-your-category option (e.g. Citi Custom Cash)include_discontinuedbooleantrue to also rank cards no longer open to new applicantslimitintegerNumber of results (default 10, max 50)curl "https://api.cardapi.dev/v1/cards/best?category=dining&country=US" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"slug": "citi-strata-elite-card",
"name": "Citi Strata Elite Card",
"annual_fee": 595,
"category_rate": {
"category_slug": "dining",
"categories": ["dining"],
"rate_multiplier": 6,
"rate_type": "multiplier",
"cap_amount": null,
"cap_period": null,
"merchant": null,
"booking_channel": null,
"choice_group": null,
"is_rotating": false
}
},
{
"slug": "ihg-one-rewards-premier-credit-card",
"name": "IHG One Rewards Premier Credit Card",
"annual_fee": 99,
"category_rate": {
"category_slug": "dining",
"categories": ["dining"],
"rate_multiplier": 5,
"rate_type": "points_per_dollar",
"cap_amount": null,
"cap_period": null,
"merchant": null,
"booking_channel": null,
"choice_group": null,
"is_rotating": false
}
}
]
}GET /v1/cards/:slug/perks: List a card's perks Starter plan and above
Companion perks for one card: hotel and rental-car status, travel credits, lounge access and similar.
slugstringrequiredCard slug, e.g. american-express-gold-card or chase-sapphire-preferred-credit-card (from /v1/cards or /v1/cards/search)curl "https://api.cardapi.dev/v1/cards/american-express-gold-card/perks" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "da8895b4-4ebc-40ff-b6be-7fbd203d96ca",
"perk_type": "hotel_status",
"perk_name": "Hertz Five Star Status",
"perk_value": null,
"perk_period": null,
"partner": null,
"details": "Complimentary upgrade with 2X Membership Rewards points on prepaid car rentals"
}
]
}GET /v1/cards/:slug/credits: List a card's statement credits Starter plan and above
Statement credits for one card (dining, Uber, airline fee, streaming and so on), largest first.
slugstringrequiredCard slug, e.g. american-express-gold-card or chase-sapphire-preferred-credit-card (from /v1/cards or /v1/cards/search)curl "https://api.cardapi.dev/v1/cards/american-express-gold-card/credits" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "5f364ff3-f614-4759-a4dc-2eb3498245cd",
"credit_name": "Dining Credit",
"credit_amount": 120,
"credit_period": "annual",
"eligible_merchants": "Grubhub, Seamless, Buffalo Wild Wings, Five Guys, The Cheesecake Factory, Wonder",
"enrollment_required": true,
"notes": null
}
]
}GET /v1/cards/:slug/history: Get a card's change history Pro plan and above
Tracked changes to one card, newest first: which fields changed (old and new values) and a snapshot of the tracked fields before the change.
slugstringrequiredCard slug, e.g. american-express-gold-card or chase-sapphire-preferred-credit-card (from /v1/cards or /v1/cards/search)curl "https://api.cardapi.dev/v1/cards/citi-custom-cash-card/history" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "e39df93a-7579-43af-94b7-93d6e6a7ac75",
"card_id": "f994ec72-2e50-4898-9546-c49be8d80a37",
"changed_fields": {
"reward_currency": { "old": "points", "new": "cashback" }
},
"snapshot": { "annual_fee": 0, "reward_currency": "points" },
"changed_at": "2026-03-21T13:10:38.302968+00:00"
}
]
}GET /v1/cards/:slug/transfers: List a card's transfer partners Pro plan and above
Loyalty programs the card's points can be transferred to, with transfer ratios.
slugstringrequiredCard slug, e.g. american-express-gold-card or chase-sapphire-preferred-credit-card (from /v1/cards or /v1/cards/search)curl "https://api.cardapi.dev/v1/cards/american-express-gold-card/transfers" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"source_currency": "MR",
"partner_program": "Aeroplan",
"partner_type": "airline",
"transfer_ratio_from": 1,
"transfer_ratio_to": 1,
"transfer_time": null,
"transfer_bonus_current": null
}
]
}Issuers
GET /v1/issuers: List issuers
Every active issuer, with a card count.
countrystringUS or CAcurl "https://api.cardapi.dev/v1/issuers?country=US" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "875b443c-1d31-48fd-a475-a9ca487e9749",
"slug": "amex-us",
"name": "American Express",
"country": "US",
"website": "https://www.americanexpress.com",
"cards_url": "https://www.americanexpress.com/us/credit-cards/",
"card_count": 29
}
]
}GET /v1/issuers/:slug: Get an issuer
One issuer, with its card count. List its cards with /v1/cards?issuer=<slug>.
slugstringrequiredIssuer slug, e.g. chase, amex-us, amex-ca, capital-onecurl "https://api.cardapi.dev/v1/issuers/chase" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"id": "983858af-740a-4019-8651-af7023f665fd",
"slug": "chase",
"name": "Chase",
"country": "US",
"website": "https://www.chase.com",
"cards_url": "https://creditcards.chase.com/all-credit-cards",
"card_count": 42
}
}GET /v1/issuers/:slug/rules: Get an issuer's application rules
Application rules for one issuer, such as Chase's 5/24 rule. Same data as /v1/application-rules?issuer=<slug>.
slugstringrequiredIssuer slugcurl "https://api.cardapi.dev/v1/issuers/chase/rules" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"rule_name": "5/24 Rule",
"rule_type": "velocity",
"description": "Chase will deny most applications if you have opened 5 or more personal credit cards across all issuers in the last 24 months.",
"details": { "max_cards": 5, "period_months": 24, "applies_to": "personal" },
"issuers": { "name": "Chase", "slug": "chase" }
}
]
}Categories
GET /v1/categories: List spending categories
The spending categories CardAPI tracks. Use their slugs with /v1/cards/best. Every reward rate's categories come from this list, and its category_slug label starts with them, joined by + in this list's order (groceries+gas).
curl "https://api.cardapi.dev/v1/categories" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{ "slug": "groceries", "name": "Groceries", "icon": "shopping-cart", "sort_order": 1 },
{ "slug": "gas", "name": "Gas & Fuel", "icon": "fuel", "sort_order": 2 },
{ "slug": "dining", "name": "Dining", "icon": "utensils", "sort_order": 3 },
{ "slug": "travel", "name": "Travel", "icon": "plane", "sort_order": 4 },
{ "slug": "drugstore", "name": "Drugstore", "icon": "pill", "sort_order": 5 },
{ "slug": "entertainment", "name": "Entertainment", "icon": "film", "sort_order": 6 },
{ "slug": "streaming", "name": "Streaming", "icon": "tv", "sort_order": 7 },
{ "slug": "transit", "name": "Transit", "icon": "bus", "sort_order": 8 },
{ "slug": "online-shopping", "name": "Online Shopping", "icon": "globe", "sort_order": 9 },
{ "slug": "other", "name": "Other / General", "icon": "credit-card", "sort_order": 10 }
]
}Transfer Partners
GET /v1/transfer-partners: List transfer partners Pro plan and above
The transfer partner directory: which loyalty programs each points currency transfers to, and at what ratio.
currencystringPoints currency code, e.g. MR, UR, TYP, C1curl "https://api.cardapi.dev/v1/transfer-partners?currency=MR" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "f59f9870-f319-4d0f-88f1-d7b1e0400cd2",
"source_currency": "MR",
"partner_program": "Aeroplan",
"partner_type": "airline",
"transfer_ratio_from": 1,
"transfer_ratio_to": 1,
"country": "US",
"transfer_minimum": null,
"transfer_time": null,
"transfer_bonus_current": null,
"transfer_bonus_expires": null
},
{
"id": "b3b848be-9c37-421e-9c14-5b41e2a465f5",
"source_currency": "MR",
"partner_program": "ANA Mileage Club",
"partner_type": "airline",
"transfer_ratio_from": 1,
"transfer_ratio_to": 1,
"country": "US",
"transfer_minimum": null,
"transfer_time": null,
"transfer_bonus_current": null,
"transfer_bonus_expires": null
}
]
}Reward Valuations
GET /v1/reward-valuations: List reward valuations
Cents-per-point valuations for each rewards currency (Chase Ultimate Rewards, Amex Membership Rewards, Citi ThankYou and more), for working out effective earn rates.
curl "https://api.cardapi.dev/v1/reward-valuations" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"currency_name": "Chase Ultimate Rewards",
"currency_code": "UR",
"cpp_cash": 1,
"cpp_travel_portal": 1,
"cpp_transfer": 2,
"cpp_recommended": 2,
"notes": "Chase Travel redemptions are worth 1 cent per point. Points Boost offers on select flights and hotels through Chase Travel are worth up to 1.5 cents per point with Sapphire Preferred, Ink Business Preferred and Ink Plus, and up to 2 cents with Sapphire Reserve, J.P. Morgan Reserve and Sapphire Reserve for Business. Sapphire Reserve points earned before 26 Oct 2025 by cardmembers who applied before 23 Jun 2025 redeem at 1.5 cents on Chase Travel until 26 Oct 2027. Transfer value based on avg airline redemptions."
},
{
"currency_name": "Amex Membership Rewards",
"currency_code": "MR",
"cpp_cash": 0.6,
"cpp_travel_portal": 1,
"cpp_transfer": 1.8,
"cpp_recommended": 1.8,
"notes": "Cash out via Schwab at 1.1cpp. Transfer to airlines averages 1.5-2.0cpp."
}
]
}Application Rules
GET /v1/application-rules: List application rules
Known application rules by issuer: velocity limits, once-per-lifetime bonus rules and product restrictions.
issuerstringIssuer slugcurl "https://api.cardapi.dev/v1/application-rules?issuer=chase" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "33def85c-f4c6-47e7-8738-396a3ebf7e81",
"issuer_id": "983858af-740a-4019-8651-af7023f665fd",
"rule_name": "5/24 Rule",
"rule_type": "velocity",
"description": "Chase will deny most applications if you have opened 5 or more personal credit cards across all issuers in the last 24 months.",
"details": { "max_cards": 5, "period_months": 24, "applies_to": "personal" },
"country": "US",
"issuers": { "name": "Chase", "slug": "chase" }
},
{
"rule_name": "One Sapphire Rule",
"rule_type": "lifetime",
"description": "You cannot hold more than one Sapphire product at a time. Must close existing Sapphire before applying for another.",
"details": { "products": ["Sapphire Preferred", "Sapphire Reserve"] },
"issuers": { "name": "Chase", "slug": "chase" }
}
]
}Product Changes
GET /v1/product-changes: List product change paths
Product change paths: which cards can be upgraded or downgraded to which others, useful for keeping a card's history while dropping its annual fee. Coverage is limited: a path is recorded only when the issuer's own page names the card it can switch to, so most issuers have none yet. direction is upgrade, downgrade, both (either way) or one_way (from_card to to_card only, as recorded from an issuer page). Returns an empty list when no paths are recorded for the issuer.
issuerstringIssuer slug of the card you havecurl "https://api.cardapi.dev/v1/product-changes?issuer=chase" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"direction": "downgrade",
"notes": "Available after 12 months of card membership",
"from_card": {
"slug": "chase-sapphire-preferred-credit-card",
"name": "Chase Sapphire Preferred Credit Card",
"issuers": { "slug": "chase", "name": "Chase" }
},
"to_card": {
"slug": "chase-freedom-unlimited-credit-card",
"name": "Chase Freedom Unlimited Credit Card",
"issuers": { "slug": "chase", "name": "Chase" }
}
}
]
}Offer Changes
GET /v1/offers/notable: List notable offer changes Pro plan and above
The 50 most recent notable offer changes across all cards: signup bonus increases, fee changes and other detected updates.
countrystringUS or CAcurl "https://api.cardapi.dev/v1/offers/notable?country=US" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "47617b6f-8f71-4da5-a7c3-3df6d0622870",
"field_name": "signup_bonus",
"old_value": null,
"new_value": "50,000 points for $3,000 spend in the first 90 days",
"change_type": "increased",
"is_notable": true,
"detected_at": "2026-09-11T04:03:07.673816+00:00",
"card_slug": "penfed-pathfinder-rewards-visa-signature",
"card_name": "PenFed Pathfinder Rewards Visa Signature"
}
]
}GET /v1/offers/history: Get a card's offer history Pro plan and above
Every recorded offer change for one card, newest first.
card_slugstringrequiredCard slugcurl "https://api.cardapi.dev/v1/offers/history?card_slug=american-express-gold-card" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "efafbd8e-f02a-4672-bec8-5c43d20c07bb",
"field_name": "signup_min_spend",
"old_value": null,
"new_value": "8000",
"change_type": "increased",
"is_notable": false,
"detected_at": "2026-09-10T08:52:16.239485+00:00"
}
]
}Stats
GET /v1/stats: Get catalog stats
Card and issuer counts and the last update time. No API key needed.
curl "https://api.cardapi.dev/v1/stats" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": {
"total_cards": 463,
"published_cards": 354,
"total_issuers": 39,
"issuers_by_country": { "US": 25, "CA": 14 },
"last_updated": "2026-09-12T06:41:12.577+00:00"
}
}Webhooks
POST /v1/webhooks: Register a webhook Enterprise plan
Register an HTTPS URL to be notified when card data changes. The secret is only returned here; use it to verify deliveries (X-CardAPI-Signature: sha256=<HMAC-SHA256 of the body>). Maximum 20 webhooks per key. card.updated: a published card's data changed, from a scrape or an edit by CardAPI, and is sent only when something did change; data has the card's id, slug and name, the fields written, changes (each changed field's old and new value) and changed_relations (the related tables that changed, such as reward_rates). card.created: a card joined the catalog; data.reason is published for a newly published card, or reinstated when a discontinued card came back. card.deleted: a card left the catalog; data.reason is discontinued (GET /v1/cards no longer lists it by default, but its slug still resolves) or unpublished (CardAPI withdrew it and its slug no longer resolves). offer.notable: a welcome offer went up, its minimum spend or the annual fee came down, or a first-year fee waiver was added.
urlstringrequiredPublic HTTPS URL to receive eventseventsstring[]requiredComma-separated: card.created, card.updated, card.deleted, offer.notablecurl -X POST "https://api.cardapi.dev/v1/webhooks" \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"url":"https://example.com/webhooks/cardapi","events":["card.updated"]}'
{
"data": {
"id": "0f8fad5b-d9cb-469f-a165-70867728950e",
"url": "https://example.com/webhooks/cardapi",
"events": ["card.updated"],
"is_active": true,
"created_at": "2026-09-30T12:00:00.000000+00:00",
"secret": "5b9e..."
}
}GET /v1/webhooks: List webhooks Enterprise plan
The webhooks registered for your API key.
curl "https://api.cardapi.dev/v1/webhooks" \-H "Authorization: Bearer YOUR_API_KEY"
{
"data": [
{
"id": "0f8fad5b-d9cb-469f-a165-70867728950e",
"url": "https://example.com/webhooks/cardapi",
"events": ["card.updated"],
"is_active": true,
"last_triggered_at": "2026-09-29T03:12:44.000000+00:00",
"failure_count": 0,
"created_at": "2026-09-01T12:00:00.000000+00:00"
}
]
}DELETE /v1/webhooks/:id: Delete a webhook Enterprise plan
Delete one of your webhooks.
idstringrequiredWebhook ID (UUID)curl -X DELETE "https://api.cardapi.dev/v1/webhooks/0f8fad5b-d9cb-469f-a165-70867728950e" \-H "Authorization: Bearer YOUR_API_KEY"
{
"success": true
}GraphQL
POST /v1/graphql: Run a GraphQL query Enterprise plan
One endpoint for every read, as GraphQL: send a JSON body {"query": "..."}. Root fields: cards, card, searchCards, bestCards, issuers, issuer, categories, stats, transferPartners and applicationRules. Card fields use the REST names (annual_fee, reward_rates) and follow the same plan rules. A query may ask for at most 10 root fields (aliases included) and nest 5 levels deep; list fields return at most 100 items; schema introspection is off.
querystringrequiredThe GraphQL query document{
"data": {
"card": {
"slug": "american-express-gold-card",
"name": "American Express® Gold Card",
"annual_fee": 325,
"reward_rates": [
{ "category_slug": "dining", "rate_multiplier": 4 },
{ "category_slug": "groceries", "rate_multiplier": 4 }
]
}
}
}