Korely

API Reference

Overview

One bearer header, JSON in and out, EU-hosted. Every endpoint maps one-to-one onto the Python and Node SDKs, the same call, three ways in.

Base URL: https://api.korely.ai. Every endpoint is under /v1. Requests and responses are JSON; data is stored in the EU. Prefer not to call HTTP directly? The Python and Node SDKs mirror this surface method-for-method, and there's an interactive playground generated from the live spec.

Authentication

Every request carries an Authorization header with your secret key: Authorization: Bearer kor_live_.... Keys are issued when you sign up as an agent. Keep the key server-side, it can read and write all memory in your workspace.

Terminal window
curl https://api.korely.ai/v1/ping \
-H "Authorization: Bearer kor_live_..."

Scoping

Three optional, free-form strings scope every memory. You choose the values; filters are additive (AND).

FieldIdentifiesExample
user_idYour end user. Unlimited on every tier."customer-giulia-4812"
agent_idYour application's namespace."support-bot"
run_idOne session or conversation."chat-2026-06-17-a"

Errors

Errors return the matching HTTP status and a JSON envelope with a stable code and a human message, always those two keys, never error or detail.

{
"code": "invalid_key",
"message": "Invalid or missing API key"
}
StatusCodeWhen
401invalid_keyThe Authorization header is missing, malformed, or the key is revoked.
403forbiddenThe key lacks the scope the endpoint requires (e.g. memories:write).
403agent_cap_exceededA new agent_id would exceed your tier's agent cap. The write is not applied.
404not_foundNo such resource in this workspace (also returned instead of 403, so membership isn't leaked).
405method_not_allowedThe HTTP method is not supported for this path.
409stale_writeexpected_updated_at on an update doesn't match the current record, another write landed first.
422invalid_requestRequest validation failed, a missing field or a malformed value.
429quota_exceededMonthly write quota reached. Carries no Retry-After; it resets at the next billing cycle.
429rate_limit_exceededToo many requests per second. This one does carry Retry-After.
503search_unavailableThe vector search backend is temporarily unavailable; retry shortly. Other read paths are unaffected.

Rate limits & quotas

Two limits, two meanings. A short-term rate limit (requests per second) returns 429 rate_limit_exceeded with a Retry-After header, back off and retry. A monthly quota (memories written and queries per month, by tier) returns 429 quota_exceeded with no Retry-After: we email you at 80%, and past a +10% soft cap you get a clean error rather than a surprise invoice. Reads are far more generous than writes, because reads are retrieval, not generation. See pricing for the per-tier numbers.

The endpoints

Grouped in the sidebar: Core memory operations (add, search, list, get, update, delete, history), Context & facts (the typed bi-temporal layer, get context, get and write facts, get profile), Users & agents, and Batch & status. Start with Add a memory.