Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/kokofinance-net:kokofinance-net-cards-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Koko Finance Cards API
description: Credit card portfolio intelligence — analyze portfolios, compare cards, get recommendations, and check renewal value.
version: 1.0.0
tags:
- name: Cards
description: Credit card catalog — browse, search, and get detailed card information with structured fields.
paths:
/api/v1/cards/:
get:
tags:
- Cards
summary: List Cards
description: 'List credit cards with filtering, sorting, and pagination.
Returns lightweight card objects suitable for catalog browsing.
Use GET /{card_id} for the full enriched object.'
operationId: list_cards_api_v1_cards__get
security:
- APIKeyHeader: []
parameters:
- name: q
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Fuzzy search across card name, issuer, and best_for
title: Q
description: Fuzzy search across card name, issuer, and best_for
- name: issuer
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by issuer (e.g. 'Chase')
title: Issuer
description: Filter by issuer (e.g. 'Chase')
- name: card_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by card type (e.g. 'Travel Rewards')
title: Card Type
description: Filter by card type (e.g. 'Travel Rewards')
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by tag (e.g. 'premium', 'no_foreign_fee')
title: Tag
description: Filter by tag (e.g. 'premium', 'no_foreign_fee')
- name: max_annual_fee
in: query
required: false
schema:
anyOf:
- type: integer
- type: 'null'
description: Maximum annual fee in dollars
title: Max Annual Fee
description: Maximum annual fee in dollars
- name: network
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by network (Visa, Mastercard, Amex, Discover)
title: Network
description: Filter by network (Visa, Mastercard, Amex, Discover)
- name: country
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB'). Defaults to 'US'.
title: Country
description: ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB'). Defaults to 'US'.
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
description: Offset for pagination
default: 0
title: Offset
description: Offset for pagination
- name: limit
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Number of results per page (max 100)
default: 20
title: Limit
description: Number of results per page (max 100)
- name: sort_by
in: query
required: false
schema:
type: string
pattern: ^(card_name|annual_fee|issuer)$
description: Sort field
default: card_name
title: Sort By
description: Sort field
- name: sort_order
in: query
required: false
schema:
type: string
pattern: ^(asc|desc)$
description: Sort direction
default: asc
title: Sort Order
description: Sort direction
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Opaque cursor (takes precedence over offset)
title: Cursor
description: Opaque cursor (takes precedence over offset)
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/cards/changes:
get:
tags:
- Cards
summary: Get All Changes
description: Get all card data changes since a given date.
operationId: get_all_changes_api_v1_cards_changes_get
security:
- APIKeyHeader: []
parameters:
- name: since
in: query
required: true
schema:
type: string
description: 'Required: ISO date string (e.g. 2025-01-01)'
title: Since
description: 'Required: ISO date string (e.g. 2025-01-01)'
- name: fields
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated field names to filter
title: Fields
description: Comma-separated field names to filter
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/cards/{card_id}:
get:
tags:
- Cards
summary: Get Card Detail
description: 'Get the full enriched card object merging PopularCard + CardTerms.
Returns structured rewards, benefits, sign-on bonus, terms, fees, URLs,
and data quality metadata.'
operationId: get_card_detail_api_v1_cards__card_id__get
security:
- APIKeyHeader: []
parameters:
- name: card_id
in: path
required: true
schema:
type: integer
title: Card Id
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/cards/{card_id}/terms:
get:
tags:
- Cards
summary: Get Card Terms
description: 'Get APR, penalty, and fee terms for a credit card.
Returns Schumer Box data: purchase APR, penalty APR, late fees,
cash advance APR, promotional APR, and grace period.'
operationId: get_card_terms_api_v1_cards__card_id__terms_get
security:
- APIKeyHeader: []
parameters:
- name: card_id
in: path
required: true
schema:
type: integer
title: Card Id
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/APIResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/cards/{card_id}/history:
get:
tags:
- Cards
summary: Get Card History
description: Get change history for a specific card.
operationId: get_card_history_api_v1_cards__card_id__history_get
security:
- APIKeyHeader: []
parameters:
- name: card_id
in: path
required: true
schema:
type: integer
title: Card Id
- name: field
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by field name (e.g. annual_fee)
title: Field
description: Filter by field name (e.g. annual_fee)
- name: since
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: ISO date string (e.g. 2025-01-01)
title: Since
description: ISO date string (e.g. 2025-01-01)
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/cards/search:
post:
tags:
- Cards
summary: Search for credit cards
description: Search the card database using structured filters. Returns ranked results based on spending alignment, fee value, and sign-on bonus. Deterministic ranking, <100ms.
operationId: search_cards_api_v1_cards_search_post
security:
- APIKeyHeader: []
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/V1CardSearchRequest'
responses:
'200':
description: Ranked card recommendations matching filters
content:
application/json:
schema: {}
'401':
description: Invalid or missing API key
'429':
description: Rate limit exceeded
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
APIResponse:
properties:
success:
type: boolean
title: Success
data:
title: Data
metadata:
$ref: '#/components/schemas/APIMetadata'
error:
anyOf:
- type: string
- type: 'null'
title: Error
type: object
required:
- success
- data
title: APIResponse
APIMetadata:
properties:
request_id:
type: string
title: Request Id
api_version:
type: string
title: Api Version
default: v1
latency_ms:
anyOf:
- type: integer
- type: 'null'
title: Latency Ms
mode:
anyOf:
- type: string
- type: 'null'
title: Mode
description: 'Endpoint mode: ''fast'' (deterministic, <100ms) or ''verbose'' (includes AI narrative, 3-5s)'
timestamp:
type: string
title: Timestamp
type: object
title: APIMetadata
V1CardSearchRequest:
properties:
card_type:
anyOf:
- type: string
- type: 'null'
title: Card Type
description: 'Card type filter: travel, cashback, balance_transfer, business, student, hotel, airline'
max_annual_fee:
anyOf:
- type: integer
- type: 'null'
title: Max Annual Fee
description: Maximum annual fee in dollars (e.g. 200). Omit for no limit.
issuer:
anyOf:
- type: string
- type: 'null'
title: Issuer
description: Filter by issuer (e.g. 'Chase', 'American Express', 'Capital One')
spending:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Spending
description: 'Monthly spending by category for ranking (e.g. {"dining": 500, "travel": 300})'
max_results:
anyOf:
- type: integer
maximum: 20.0
minimum: 1.0
- type: 'null'
title: Max Results
description: Maximum number of results (1-20, default 5)
default: 5
country:
anyOf:
- type: string
- type: 'null'
title: Country
description: ISO 3166-1 alpha-2 country code (e.g. 'US', 'GB'). Defaults to 'US'.
type: object
title: V1CardSearchRequest
description: Request for POST /search
example:
card_type: travel
country: US
max_annual_fee: 300
max_results: 5
spending:
dining: 500
groceries: 300
travel: 400
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
securitySchemes:
APIKeyHeader:
type: apiKey
description: 'Your Koko API key (format: koko_xxxxx)'
in: header
name: X-API-Key