Endpoint directory
Find every public API route and its access requirements.
All endpoints
Access requirements below come from the same route table that gates requests. Public snapshot routes can answer without authentication; feature-specific reads also require the listed feature. Full request and response contracts →
41 endpoints
GET/api/v1/configpublic
This deployment: env (production, dev, preview), the Clerk publishable key, the API base.
Access: public.
GET/api/v1/mepublic
Who you are: user, roles, features, limits, contributor status.
Access: public.
GET/api/v1/contributionssigned-in
Your own uploads of the last 30 days and whether each was credited.
Access: signed-in.
POST/api/v1/devices/pairpublic
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: public.
GET/api/v1/devices/pair/:pairIdpublic
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: public.
POST/api/v1/devices/confirmsigned-in
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: signed-in · callers: session.
GET/api/v1/devicessigned-in
DELETE/api/v1/devices/:idsigned-in
Unpair a desktop app (its token stops working at once).
Access: signed-in.
GET/api/v1/update/latest.jsonpublic
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: public.
GET/api/v1/downloads/desktop/latestpublic
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: public.
GET/api/v1/itemspublic
Item data: names, quality, icons, classes, vendor prices, suffix tables.
Access: public.
GET/api/v1/items/search-indexpublic
The compact search index: [key, name, quality, icon, class, subclass] by name.
Access: public.
GET/api/v1/items/unknownpublic
POST/api/v1/items/seenupload.device
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: upload.device · callers: device, apikey.
By credential: device: upload.deviceapikey: api.upload
GET/api/v1/items/:keypublic
POST/api/v1/ah/booksupload.device
Auction groups: {market, at, complete, auctions, entries: [key, price, stack, band, n][]}. Also creates the scan summary. Gzip recommended, up to 32 MiB.
Access: upload.device · callers: device, apikey.
By credential: device: upload.deviceapikey: api.upload
GET/api/v1/ahprices.snapshot
Every market's summary: newest scan, items, newest book, contributors this week.
Access: prices.snapshot · API keys also need api.read. Callers without live prices receive the hourly view.
GET/api/v1/ah/:market/snapshotpublic
The hourly snapshot: every row as of the hour plus 7 days of daily closes and today so far.
Access: public.
GET/api/v1/ah/:market/filespublic
Where the market's CDN files are, with the capability URLs your plan may read.
Access: public · API keys also need api.read.
GET/api/v1/ah/:market/historyprices.snapshot
Every item's day candles (and volume with depth) from a day on.
Access: prices.snapshot · API keys also need api.read. Callers without live prices receive the hourly view.
GET/api/v1/ah/:market/intradayprices.live
Every item's hour closes from an hour on.
Access: prices.live · API keys also need api.read.
GET/api/v1/ah/:market/candlesprices.live
Candles of up to 50 items at once (m1 also needs candles.minute).
Access: prices.live · API keys also need api.read.
res=m1 additionally requires candles.minute.
GET/api/v1/ah/:market/booksbooks
The stored order books (newest first).
Access: books · API keys also need api.read.
GET/api/v1/ah/:market/books/:atbooks
One stored order book (gzip when accepted).
Access: books · API keys also need api.read.
GET/api/v1/ah/:market/:item/bookbooks
The item's entries in the current order book.
Access: books · API keys also need api.read.
GET/api/v1/ah/:market/:item/candlescandles.daily
Candles [t, open, high, low, close, quantity].
Access: candles.daily · API keys also need api.read. Callers without live prices receive the hourly view.
res=h1 additionally requires candles.hourly.
res=m1 additionally requires candles.minute.
GET/api/v1/ah/:market/:itemprices.snapshot
One item key: its reading, day points and (with depth) volume.
Access: prices.snapshot · API keys also need api.read. Callers without live prices receive the hourly view.
GET/api/v1/ah/:marketprices.live
The live table: rows changed after `since`.
Access: prices.live · API keys also need api.read.
GET/api/v1/market/watchsigned-in
PUT/api/v1/market/watchwatchlist
Your watchlist (item keys).
Access: watchlist · signed-in account required.
GET/api/v1/market/alertssigned-in
POST/api/v1/market/alertsalerts
Your price alerts; create one.
Access: alerts · signed-in account required.
PUT/api/v1/market/alerts/:idalerts
DELETE/api/v1/market/alerts/:idalerts
GET/api/v1/market/boardssigned-in
PUT/api/v1/market/boardsboards
Your saved dashboards and screens (one document).
Access: boards · signed-in account required.
GET/api/v1/push/keysigned-in
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: signed-in.
GET/api/v1/push/subscriptionsigned-in
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: signed-in.
PUT/api/v1/push/subscriptionsigned-in
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: signed-in.
DELETE/api/v1/push/subscriptionsigned-in
See the versioned protocol for the request body, response fields and endpoint-specific behavior.
Access: signed-in.
GET/api/v1/livelive
One socket per market: hello, merge notices with CDN URLs, sealed candles, your alerts and role changes.
Access: live · signed-in account required.
Versioned contracts and runnable examples live with the source specification →.