Keys and plans
Every /v2 endpoint that returns a measurement needs a key:
Authorization: Bearer dbk_…A key is issued at studio.debyko.com/account. The Free plan is issued without a card; Mini, Standard and Pro start with a free trial, and Pro Plus is charged at checkout. One key covers Studio and the API — whatever a plan includes in Studio, it includes here. Agent evaluates under its own allowance, shown in its row.
Never in a URL. A key in a query string is written into server logs, proxy logs and browser
history. A request that carries one is refused with KEY_IN_URL and the key should be replaced from
your account.
What a plan changes
Section titled “What a plan changes”A plan limits history and request rates; every plan sees every venue and instrument:
- venues and instruments: every plan sees every venue and instrument in the registry.
DQL_UNKNOWN_VENUEis for a code that is no venue at all; - history: asking further back than a plan reaches is refused with
PLAN_LIMIT, naming the date the plan reaches and what it would take to go further — never a shortened answer that looks whole. The error carriesnext(one sentence with the earliest instant the plan reads for this request) and, forPOST /v2/candles,earliest_fromandretry_with: the same request withfrommoved to that instant. The first such refusal of a Free account that has never had a trial is not shown: Standard answers the request, the answer carriestrial(plan,until), and Standard stays open for 4 days (plan.trial_untilofGET /v2/account). The first refusal of Free’s number of Agent rules, DQL screening requests a minute or requests a day opens it the same way (trial.cap,trial.limit); the per-second burst does not. One trial per account, ever; atuntilthe account is Free again. Free, Mini and Standard read every candle timeframe, as deep as the timeframe allows: Free1m48 hours,5mand15m7 days,1h30 days,4hand1d90 days; Mini 7, 30, 90 and 180 days; Standard, Pro and Pro Plus the whole database window. Everything else (snapshots, history, trades, liquidations, funding settlements,screen) reaches the plan’shistory_days(Free 7, Mini 30; Standard, Pro and Pro Plus the database window). How long each layer is held in the database is a number per layer and candle timeframe, read from the retention classes in force:historyofGET /v2/account(and of every plan inGET /v2/plans) giveshot_days(the shortest of any listing),reads_days(what this plan reads of it),archive_since(the first day with a verified file) andarchive.files_per_month. A request (history, trades or candles) that lies wholly before the hot window of everything it asks for is refusedPLAN_LIMITwith the layer, the window in days and the earliest hot instant, and then one of: the exactGET /v2/archive/{listing}/{layer}/{day}when that day has a file;no data before <date>when the venue has none that early; or that the archive has no file for the day. A request that reaches into the window is answered, and what is older isnot_retained, with the archive pointer where a file exists. No Parquet is served through the other endpoints; per file, x402 pays when there is no key.funding_settlementandliquidationare not swept (history.not_swept).GET /v2/planslists the depth of every plan (history_days, andcandle_history_daysfor each timeframe); - rate: requests per second and per day, and the number of live streams, are counted per key.
The per-second limit is a token bucket: the plan’s sustained rate refills it and its burst (4 times the rate, at least 10: Free is 2 a second, burst 10) is
what a key may send at once. Exceeding a limit is a
429withRetry-Afterand, inlimit, the name of the limit that stopped you.
Usage is counted per key, per hour and per endpoint class, and is visible in your account. No per-request log of what you asked is kept.
Without a key: pay per call
Section titled “Without a key: pay per call”On in production since 2026-10-02. Six requests are payable without a key: POST /v2/snapshots, POST /v2/snapshots/history, POST /v2/screen,
POST /v2/candles, GET /v2/agent/state (per rule named) and GET /v2/archive/{listing}/{layer}/{day} (per file). Called with no Authorization header they
are answered 402 with a price in USDC on Base (x402), and the same request
with a signed payment in PAYMENT-SIGNATURE is answered as Pro answers it, for that one request. A request that carries both a key and a payment is the
key’s: the payment is not read. The prices, the order, and what is charged when something goes wrong are in the limits and at
docs.debyko.com/api/x402.
The same 402 also offers a plan (Mini, Standard, Pro, Pro Plus, at the price of checkout) for 30 days with no renewal: pay its amount and the answer is a key of that plan, shown once, with no account
(Agent rules need a free account the key is linked to). From three days before such a key expires every response carries X-Debyko-Key-Expires. GET /v2/agent/state is payable per rule named, and a file of the archive per file (0.10 core, 0.05 top-100).
Pay with USDC has the whole of it.