CDK Bot Status API
The Status API from CDK Bot — 1 operation(s) for status.
The Status API from CDK Bot — 1 operation(s) for status.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/cdk-bot:cdk-bot-status-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: CDK Bot — Digital Products Status API
version: 1.0.0
termsOfService: https://api.cdk.bot/terms
contact:
name: CDK Bot
email: info@cdk.bot
url: https://cdk.bot
description: 'Agent-native API for purchasing digital products (game keys, gift cards, and more) via USDC on Base chain.
## Quick Start
**One-shot (wallet-native agents):** `POST /purchase {"game_id":"..."}` with an `X-PAYMENT` header — a signed EIP-3009 "exact" authorization for the accepts[] returned in the 402 — and a facilitator settles it gaslessly, returning the key in one call (no tx_hash/quote_id).
**Two-step (any agent):**
1. **Browse**: `GET /games?q=battlefield` — search products, filter by platform/region/product_type
2. **Get price**: `POST /purchase {"game_id":"..."}` — returns 402 with exact USDC amount, wallet address, and standard x402 accepts[]
3. **Pay & get key**: Send USDC onchain, then `POST /purchase {"game_id":"...","tx_hash":"0x...","quote_id":"..."}` — returns product key
## Key facts
- All prices are in USD (USDC on Base chain)
- Only in-stock products are returned (in_stock: true)
- Payment address: `0x0b321A0F1294431347f98e10a2275F23B11BBfFb`
- No authentication required for browsing or purchasing
- Double-spend protection via unique tx_hash constraint
- Agent discovery: `GET /.well-known/agent.json`
- Liveness check: `GET /health`
## Sandbox Mode
Test the full purchase flow without spending real money:
1. Get free test USDC from Circle Faucet and Sepolia ETH from Alchemy Faucet
2. Add `"chain": "base-sepolia"` to your `POST /purchase` request
3. Pay with test USDC on Base Sepolia — receive a mock key (`SANDBOX-XXXXX-XXXXX-XXXXX`)
Same API, same URL, same flow — just add the chain parameter. See `GET /.well-known/agent.json` for full sandbox docs.'
x-guidance: 'CDK Bot sells game keys, gift cards, and digital products for AI agents. Flow: (1) GET /games?q=<query> to search the catalog. (2) POST /purchase {"game_id":"..."} to get an HTTP 402 with a price-locked USDC quote on Base. (3) Pay one-shot by retrying with an X-PAYMENT header (signed EIP-3009 authorization, gasless), or send USDC onchain and retry with tx_hash + quote_id. (4) The response contains the product key; poll GET /orders/{id} if delivery is pending. Sandbox: add "chain":"base-sepolia" to test without real money.'
servers:
- url: https://api.cdk.bot
tags:
- name: Status
paths:
/health:
get:
tags:
- Status
summary: Service health and trust stats
description: Liveness check with service health, catalog stats, trust metrics (fulfillment rate, refund rate, avg delivery time), payment config, and rate limits. Agents should call this before initiating a purchase flow.
responses:
'200':
description: API health status
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- healthy
- degraded
description: Overall API health
example: healthy
version:
type: string
description: API version
example: 1.0.0
services:
type: object
properties:
database:
type: object
properties:
status:
type: string
enum:
- ok
- down
description: Service status
example: ok
latency_ms:
type: number
description: Latency in milliseconds
example: 12
required:
- status
- latency_ms
description: Individual service health status
supplier:
type: object
properties:
status:
type: string
enum:
- ok
- down
description: Service status
example: ok
latency_ms:
type: number
description: Latency in milliseconds
example: 12
required:
- status
- latency_ms
description: Individual service health status
required:
- database
- supplier
description: Backend service health checks
catalog:
type: object
properties:
total_games:
type: number
description: 'Deprecated: use total_products. Number of in-stock products.'
example: 30142
total_products:
type: number
description: Number of in-stock products (games, DLC, gift cards)
example: 30142
platforms:
type: number
description: Number of distinct platforms
example: 18
regions:
type: number
description: Number of distinct regions
example: 12
required:
- total_games
- total_products
- platforms
- regions
description: Catalog statistics (in-stock only)
trust:
type: object
nullable: true
properties:
orders_fulfilled:
type: number
description: Total completed orders
example: 150
orders_total:
type: number
description: Total orders (completed + failed)
example: 155
fulfillment_rate:
type: string
description: Fulfillment success rate
example: 96.8%
refunds_total:
type: number
description: Total refund claims
example: 3
refund_rate:
type: string
description: Refund rate vs total orders
example: 1.9%
avg_delivery_time_seconds:
type: number
nullable: true
description: Average delivery time in seconds (payment → key). Null if no completed orders.
example: 8
required:
- orders_fulfilled
- orders_total
- fulfillment_rate
- refunds_total
- refund_rate
- avg_delivery_time_seconds
description: Trust statistics computed from real order data. Null if fewer than 10 orders (insufficient sample size) or if stats query failed.
payment:
type: object
properties:
currency:
type: string
enum:
- USDC
description: Payment currency
chain:
type: string
description: Payment chain
example: base
address:
type: string
description: USDC recipient wallet address
example: '0x0b321A0F1294431347f98e10a2275F23B11BBfFb'
required:
- currency
- chain
- address
description: Payment configuration
rate_limits:
type: object
properties:
browse:
type: object
properties:
requests:
type: number
description: Max requests allowed in window
example: 60
window_seconds:
type: number
description: Window duration in seconds
example: 60
required:
- requests
- window_seconds
description: Rate limit configuration
purchase:
type: object
properties:
requests:
type: number
description: Max requests allowed in window
example: 60
window_seconds:
type: number
description: Window duration in seconds
example: 60
required:
- requests
- window_seconds
description: Rate limit configuration
orders:
type: object
properties:
requests:
type: number
description: Max requests allowed in window
example: 60
window_seconds:
type: number
description: Window duration in seconds
example: 60
required:
- requests
- window_seconds
description: Rate limit configuration
refund:
type: object
properties:
requests:
type: number
description: Max requests allowed in window
example: 60
window_seconds:
type: number
description: Window duration in seconds
example: 60
required:
- requests
- window_seconds
description: Rate limit configuration
required:
- browse
- purchase
- orders
- refund
description: Current rate limit configuration per endpoint category
timestamp:
type: string
description: Response timestamp (ISO 8601)
example: '2026-02-20T12:00:00.000Z'
required:
- status
- version
- services
- catalog
- trust
- payment
- rate_limits
- timestamp
description: API health status including service checks, catalog stats, trust metrics, and payment config
security: []
operationId: getHealth
x-operation-id-source: derived