How to get API access
The Kibot API has two front doors. The free guest account is open to anyone and returns daily (end-of-day) data only. A paid Premium subscription unlocks the full surface, including tick, intraday, snapshot, NinjaTrader, and bid/ask formats. Between those, any data purchase carries a 15-day trial of API access against the purchased symbol set. This article covers each tier, what the entitlement actually grants, and the practical questions support has fielded most often.
Guest account
The guest account is anonymous and unrestricted by registration. Use the literal guest for both username and password:
http://api.kibot.com/?action=login&user=guest&password=guest
Guest sessions are limited to daily (end-of-day) historical data for a documented but unpublished volume cap. Tick, intraday, snapshot, and adjustment endpoints all return 499 Not Allowed. Your account does not have full access to API if called with a guest session. The cap exists to keep the endpoint usable as an evaluation tool without turning it into a free data firehose.
The standard 20-minute idle timeout applies to guest sessions just like paid ones. See API authentication for the session-lifecycle detail.
Premium subscription
Premium is the only subscription tier that includes the full API surface. Other tiers (Professional, Standard, Basic, EOD) include API access but restrict it to end-of-day data, mirroring the guest restriction with the difference that the symbol set is whatever the account has purchased rather than the public catalog. The pricing breakdown and the per-tier API matrix live in Data updates.
A common surprise: a Premium subscription does not by itself grant tick or intraday history for any symbol the account hasn't purchased. The subscription unlocks the endpoints; per-symbol entitlement is still driven by what's in the account's purchased packages. A Premium subscriber calling ?action=history&symbol=...&interval=tickbidask for a symbol that isn't in any owned package gets back 402 Unauthorized. '<email>' account is not authorized for <SYMBOL>. To see the per-symbol surface a Premium account actually has, call login and read the Authorizations list it returns. The list of packages reflects the data purchases.
Upgrading an existing account
If an account is already on a non-API subscription (Professional, Standard, Basic, EOD), upgrading to Premium is an account-level change handled by support: the existing subscription is canceled and the Premium one starts on the new monthly billing cycle. Credentials carry over; no new password is issued.
Free 15-day trial with any purchase
Every data purchase carries a 15-day trial of API access on top of the file download. The trial covers:
- The exact symbol list that was purchased, at the intervals included in the purchase.
- End-of-day data for all US stocks and ETFs.
- Anything on the Buy Data page that's marked as free.
The trial is not enabled automatically by the order system: contact support after the order completes to have the API entitlement turned on for the account. The same credentials used for FTP and order management work for API access once activated.
When data becomes available
The API surfaces the same dataset Kibot publishes through FTP, direct download, and the Kibot Agent, so the availability windows are identical:
- US stocks and ETFs: minute and daily data are delayed 30 minutes during the regular session and become immediately available after the close. There is no real-time feed via API.
- Forex and futures: previous session data is available after 2:15 AM ET; some types refresh several times per day, with the last refresh around 6 PM ET.
- Adjustments list: the list of symbols that were back-adjusted overnight is available after 1 AM ET; the adjusted files themselves are ready after 4:45 AM ET. The recommended pattern is to call
?action=adjustments&symbol=allsymbols&period=1once a day after 1 AM ET and re-download any file the list mentions. See Adjustments request for the incremental flow.
Common access issues
"Works once, fails later"
Almost always the 20-minute idle session timeout. The fix is to catch 401 Not Logged In, re-login, and retry. Detail and the alternative stateless pattern (credentials on every URL) are in API authentication.
"Your account does not have full access to API"
Three common causes:
- The account is on a non-Premium subscription tier and is calling a tick or intraday endpoint that requires Premium.
- The 15-day trial has lapsed and the account never upgraded to a paid subscription.
- An auto-renew failed and the subscription quietly expired. The error message also appears as
499 Not Allowedin some response paths.
The fastest diagnostic is to log in and inspect the Authorizations list against the symbol being requested. If the symbol isn't covered by any listed package, the account is not entitled to that data.
"<email> account is not authorized for <SYMBOL>"
The 402 case: account is logged in, but the symbol isn't in any owned package. Common with futures (forgetting &type=futures), indexes (use $SPX not SPX, with &type=indexes), and symbols delisted before the account's first purchase date.
Rate limits and concurrency
The published guidance is 5 concurrent connections per subscription, with hard ceilings of 40 in flight and 50 new requests per 500 ms before the rate limiter trips. Above that the server starts returning 403 Login Failed for further requests, which is the same code the API uses for bad credentials. See API authentication for the disambiguation pattern and Data updates for the full per-server ceilings.
Concurrent connections are shared across API, FTP, and the Kibot Agent. A scheduled Agent job pulling daily updates and a Python script running tick downloads in parallel against the same account consume the same pool.
Key Takeaways
- Guest access is free and limited to daily data:
user=guest&password=guestis the literal credential pair. - Premium is the only subscription tier with full API access; lower tiers include API at the end-of-day surface only.
- Any data purchase carries a 15-day API trial covering the purchased symbols plus daily stocks/ETFs and free data; contact support to enable it.
- Per-symbol entitlement is enforced by the
historyendpoint at request time, independently of the subscription tier; check theAuthorizationslist returned byloginto see what the account actually owns. - 5 concurrent connections per account is the recommended ceiling; the connection pool is shared across API, FTP, and the Kibot Agent.
- "Your account does not have full access to API" almost always means subscription tier, trial lapse, or auto-renew failure, not a per-symbol problem.
Related
- API overview, What the API is, every endpoint, and how the v2 changes affected access.
- API authentication, Login flow, session timeout, and the stateless credentials-on-URL pattern.
- Server responses, Full HTTP status code reference, including the 402 / 403 / 499 access-related codes.
- Rate limits and throttling, The 5-connection guideline, hard ceilings, and the backoff pattern for batch downloads.
- Data updates, Subscription tier matrix and per-server rate limits.
- Buy Data, Premium subscription and individual data packages.