Skip to content
Kelly

Developers

askkelly.aiGet a key

Conventions

Copy page

The rules every Kelly API call follows, from the base URL and versions to paging, request IDs and rate-limit headers.

Every operation follows the same conventions, so once you've made one call you know how the rest behave.

Base URL and versionsLink to this section

The base URL is https://api.askkelly.ai. Send the dated version you built against in Api-Version; omitted means 2026-10-05, and the versions served today are 2026-10-05. An unsupported version is refused with unsupported_api_version.

Request headers
Api-Version: 2026-10-05

Authentication headerLink to this section

Authorization: Bearer $KELLY_API_KEY. See authentication.

IDsLink to this section

IDs are opaque strings. Compare them as strings and don't parse them; a prefix such as mkt_ names the kind of object.

Timestamps and datesLink to this section

Times are RFC 3339 date-times in UTC, such as as_of. Dates without a time, such as retrieved_at on a reference source, are YYYY-MM-DD.

Units and moneyLink to this section

Prices and probabilities are numbers computed by Kelly's engine; each field's description says its unit. Kelly serves no per-book price off askkelly.ai.

EnumsLink to this section

Every enum is open: new values may be added in the same version. Treat an unknown value as "other" rather than failing.

PagingLink to this section

Every list is a page, never a bare array: data holds the items, has_more says whether another page follows, and next_cursor is an opaque cursor for the next page. Send it back as cursor with the same filters; changed filters are refused with invalid_request. For GET /v1/reference, limit is 1 to 25, default 10.

Filtering and sortingLink to this section

Lists filter by the query parameters each operation lists in the reference. There is no sort parameter today; each list documents its order.

IdempotencyLink to this section

GET requests are safe to repeat. A non-idempotent request that accepts an Idempotency-Key header can be retried with the same key and gets the first result back; the definition marks which operations accept it. See retries.

The response envelopeLink to this section

Every resource carries its provenance beside its fields: as_of (when the value was true) and source (who produced it), plus object (the resource's type) and request_id.

Request IDsLink to this section

Every response carries a Request-Id header, the request ID. Send your own Client-Request-Id and it is echoed back when well formed. Quote the request ID to support.

Rate-limit and usage headersLink to this section

Metered calls count credits against your plan, and the definition names the headers that report them, such as X-RateLimit-Remaining, RateLimit and X-Credits-Used. See limits.

Support: support@askkelly.ai · Security and disclosure