Skip to content

Limits and allowances

This page lists each plan’s allowances, what counts against them and the size limits that apply to every request. Rate limits set how fast you can send requests.

PlanPrice per monthReads per monthWrites per monthStored memoriesProjects
Free$010,0001,0005003
Starter$2050,0005,0005,00010
Growth$99300,00030,00050,000Unlimited
Scale$4993,000,000250,000500,000Unlimited

Allowances apply to the whole account, across all its projects. Monthly allowances reset at 00:00 UTC on the first day of each month. Custom plans have allowances set for your workloads.

Request Reads used
Context: POST /v1/memories/context 5
Inspect: GET /v1/memories/{memory_id}/inspect 3
Recall, search and get 1
Each page of a list: GET /v1/memories 1
MCP context and inspect_memory 5 and 3
Other MCP read tools and the alvia://memory/{memory_id} resource 1

A read counts when it completes, whatever it returns: a context or inspect 404 uses its reads too. A read refused with 400 for bad input, or that fails with a 5xx, uses none. A read is refused when fewer reads are left than it costs, so a context call needs five.

Request Writes used
POST /v1/memories with infer: false 1
POST /v1/memories with infer: true (the default) 1, plus 1 for each fact formed from the passage
POST /v1/memories/import 1 for each chunk of the conversation, plus 1 for each fact formed from it
MCP remember The same as POST /v1/memories
Forget and feedback 0
A repeat sent while the first copy is still forming 0

Every accepted write counts, whether it forms new memories, matches existing ones or forms none, except a repeat sent while the first copy is still forming.

Each active memory counts once, however many versions it has. A forgotten memory stops counting. The stored-memory limit does not reset each month.

Every new account starts with a Demo Project of sample memories. It does not count toward the project limit, and its sample memories do not count toward the stored-memory limit. Memories you add to it count as usual.

Calls you run from a project’s Playground in the dashboard count like any other call: List, Search, Recall and Context use reads, and Create uses writes.

Error Cause
429 rate_limit_exceeded
monthly_read_quota_reached
The monthly read allowance is used up. Reads are refused until the allowance resets or you upgrade.
429 rate_limit_exceeded
monthly_write_quota_reached
The monthly write allowance is used up. Writes are refused until the allowance resets or you upgrade.
409 conflict
memory_limit_reached
The account holds its plan’s stored-memory limit. New writes are refused until you forget memories or upgrade.

This applies on every plan. There are no overage charges.

A monthly 429 refusal carries limit, used and resets_at, and a Retry-After header with the seconds until the reset:

Response
{
"type": "https://alvia.ai/docs/errors/#rate_limit_exceeded",
"title": "Rate limit exceeded",
"status": 429,
"detail": "This account has used its monthly write allowance.",
"instance": "/v1/memories",
"code": "rate_limit_exceeded",
"reason": "monthly_write_quota_reached",
"limit": 1000,
"used": 1000,
"resets_at": "2026-11-01T00:00:00Z"
}
  • A passage or import that reaches the write allowance partway forms what fits in the remaining allowance, in order, and returns 202. The response does not say what was left out. Check the remaining allowance in the dashboard before a large import. See Cost in Import conversations.
  • Forget and feedback are never refused by an allowance, so you can always free stored memories.
Item Limit
Request body 5 MiB
content on POST /v1/memories 1 to 32,000 characters
content with infer: false 1 to 1,000 characters
query on context, recall and search 1 to 1,000 characters
limit on search 1 to 50, default 25; values outside are clamped
limit on list 1 to 20, default 10
Each scope field 128 characters
Messages in one import 1 to 500
Each imported message 16,000 characters
All messages in one import 320,000 characters
Characters without a space in a message 2,000
speaker on an imported message 128 characters

Character counts are UTF-16 code units, as in JavaScript’s string.length. Some characters, such as emoji, count as two.

Search’s limit is clamped to its range. A request over another size limit gets a 400 response with code validation_error, a 400 with code invalid_argument for a conversation too large to process, or a 413 response when the body is over 5 MiB.