Korely

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).

DELETE /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

ParameterTypeRequiredDescription
confirmbooleanRequiredMust 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

Terminal window
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
}
}
FieldTypeDescription
deletedbooleanAlways true on a 200.
removedobjectRows the account had, by table name, as counted when it was closed. Only tables that had rows appear.

Errors

StatusCodeWhen
400confirmation_requiredconfirm=true is missing or false.
401invalid_keyMissing or invalid kor_live_ key.
403forbiddenThe key has no memories:write scope.
409account_has_loginThe account has a login: close it from the dashboard (Account, Close the account).
422invalid_requestconfirm is not a boolean, for example confirm=maybe.
429rate_limit_exceededPer-minute, per-hour or per-day request limit. Carries Retry-After.
503unavailableThe database did not answer, or the request waited past one of the store's deadlines. Retry after the seconds in Retry-After.