Appearance
API Reference
Base URL: https://api.coda-tech.net
All routes live under /api/v1
Conventions
| Topic | Detail |
|---|---|
| Money | Integer cents (USD) - price_minor: 178015 = $1,780.15 |
| Content-Type | All responses are application/json |
| Auth | X-API-Key or Authorization: Bearer header required |
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/health | Liveness check (no auth) |
GET | /api/v1/developer/pricing/{product_key} | TWAP oracle bundle by catalog key |
GET | /api/v1/developer/pricecharting/{pricecharting_id} | TWAP oracle bundle by PriceCharting ID |
Health check
http
GET /api/v1/healthNo authentication required. Returns 200 when the service is up.
json
{ "status": "ok" }Response shape
All pricing endpoints return an OracleCardPricingResponse:
| Field | Type | Description |
|---|---|---|
id | string | null | PriceCharting ID (only on /pricecharting/ route) |
product_key | string | Coda catalog key |
window_hours | int | TWAP lookback window used |
outlier_stddevs | int | Outlier filter threshold |
ungraded | object | NM-equivalent slot |
graded | object | "PSA" | "BGS" | "CGC" | "SGC" -> grade "7"..."10" -> slot |
metadata | object | Product name, set, image URL, era, etc. |
Slot object
| Field | Description |
|---|---|
price_minor | TWAP in cents, or null if error |
currency | Always "USD" |
condition_key | e.g. "psa10", "ungraded" |
methodology | Algorithm key |
window_start / window_end | ISO-8601 UTC timestamps |
included_points | Observations used |
excluded_points | Outliers removed |
error | null when priced; "no_observations" when empty |
meta | Diagnostic object |
Metadata object
| Field | Description |
|---|---|
product_name | Card name |
subtitle | Set number, nickname |
set_name | Full set name |
image_url | Product image URL |
product_type | e.g. "single_card" |
era | "modern" or "vintage" |
release_date | ISO date or null |
Error codes
| HTTP | Meaning |
|---|---|
400 | Unknown product_key, invalid parameter |
401 | Missing or invalid API key |
403 | Valid key, method not allowed |
429 | Rate limit exceeded |
500 | Oracle computation failure |
502 | Upstream data source non-200 |
503 | Database unreachable |
json
{ "detail": "Human-readable error message" }