Users & agents
Delete the account
Close an account created with POST /v1/agents/init, using its own key. The account, every key, project, memory, fact, webhook and audit event goes. Korely keeps two things: the account's model-cost rows, by day, with no agent, memory or end user, and a record of the erasure (the account id, a keyed digest of its email when it has one, and the rows erased per table).
/v1/account?confirm=true
SDK: korely.delete_account(confirm=True). An account created by
POST /v1/agents/init has no login: the key is the
account. This is how you close it. The delete is physical and cannot be undone, and the
key stops working as soon as the call returns. The
Glossary defines the words used across the docs.
This call deletes the whole account for good. DELETE /v1/account with confirm=true erases the whole account (every project, key, memory and fact) with any key of that account that can write. This applies to an account opened with POST /v1/agents/init and never used with a login (with a login the call answers 409). Give such a key only to code you trust. The project wall does not apply to this call. Use a throwaway account to try it.
An account you sign in to (the dashboard at agent.korely.ai) does not close with a key, so a key that ends up in a log cannot delete an account. Close it from the dashboard: Account, Close the account. That removes its data and keys too.
To erase one of your customers instead, use DELETE /v1/users/{end_user}/memories.
Authentication
HTTP header, required: Authorization: Bearer kor_live_.... The key needs the memories:write permission (the API calls it a scope).
Any key of the account with that permission can close it, including a key confined to one project or to some end users (a confined key): the call closes the whole account, not only what the key can reach in other calls. So do not hand a key of an account without a login to a tool or a teammate you do not trust with the whole account. If that matters, sign in to the dashboard with the key first: the account then has a login, and this call answers 409 account_has_login.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
confirm | boolean | Required | Must be true. Without it, or with false, the call answers 400 confirmation_required and nothing is deleted. The specification lists the parameter as optional with a default of false; in practice the call refuses without it. |
Example request
curl -X DELETE "https://api.korely.ai/v1/account?confirm=true" \ -H "Authorization: Bearer kor_live_..."Response
200 OK. The rows the account had, by table, counted when it was closed (only tables that had rows). agent_llm_usage, when present, counts the cost rows that were kept without the account. The erasure is one database transaction: if it fails, the account stays whole and you can call again.
{ "deleted": true, "removed": { "agent_facts": 31, "agent_memories": 12, "audit_events": 58, "agent_api_keys": 1, "agent_rate_limits": 5, "hosted_accounts": 1, "hosted_usage_months": 1, "agent_llm_usage": 24, "agent_projects": 1 }}| Field | Type | Description |
|---|---|---|
deleted | boolean | Always true on a 200. |
removed | object | Rows the account had, by table name, as counted when it was closed. Only tables that had rows appear. |
Errors
| Status | Code | When |
|---|---|---|
400 | confirmation_required | confirm=true is missing or false. |
401 | invalid_key | Missing or invalid kor_live_ key. |
403 | forbidden | The key has no memories:write scope. |
409 | account_has_login | The account has a login: close it from the dashboard (Account, Close the account). |
422 | invalid_request | confirm is not a boolean, for example confirm=maybe. |
429 | rate_limit_exceeded | Per-minute, per-hour or per-day request limit. Carries Retry-After. |
503 | unavailable | The database did not answer, or the request waited past one of the store's deadlines. Retry after the seconds in Retry-After. |