Memory API

Limits

Every size, rate and allowance of the Memory API in one place, and what a refusal looks like.

Copy page
View as Markdown

Harny bills people, not calls or tokens, so a limit never changes your bill. A limit decides how much one call, one person or one app may do in a minute or a day. The numbers below are the defaults of the running service. They are the limits of the Free plan, which every new app starts on.

Size of one call

LimitValue
content of one data pointat most 500,000 characters
labelat most 200 characters
idat most 512 characters, no /
metadataat most 64 KiB serialized
identityat most 200 characters
Batch ingest1 to 1,000 data points, at most 16 MiB of text in total
Delete in bulk1 to 1,000 ids
Recall queryat most 2,000 characters
Recall limit1 to 200 results (default 100)
Inbound webhook bodyat most 1 MiB

Tokens a recall returns

A token is a small piece of text, a little under one word on average. This section sets how much text one recall can hand your agent.

You set the ceiling on every recall. level picks 8,000 (low, the default), 16,000 (medium), 24,000 (high) or 32,000 (extra-high) tokens. maxTokens names any budget from 256 tokens. Send one of them, not both. The answer reports usedEvidenceTokens, the tokens it used.

A plan can hold a lower ceiling than the one you ask for. On the Free plan a recall returns at most 10,000 tokens, so high and extra-high return up to 10,000.

Before a large import, POST /v1/memory/ingest/estimate cuts and batches your files without sending them, and shows the data points and bytes.

Rates per person and per app

LimitValue
Recalls60 per person per minute
Recalls50 per person per day on the Free plan (resets at midnight UTC)
Ingest status polls60 per minute
Exports of one person (GET /v1/memory/users/{identity}/export)5 per person per hour
Ingest, per person and per app10 sends per person per minute; 50 per person per day; 3,000 per app per day (Free plan)

A person is the user a call names with X-Harny-User (or the identity of a recall). A limit per person never counts another person's calls. The per-app limit counts every person of one app together.

What a refusal looks like

  • A call over a per-minute limit answers 429 with an empty body and a Retry-After header. Wait that many seconds, then retry.
  • A call over a daily or monthly allowance answers 429 with project-cap-reached. The allowance resets at midnight UTC for a daily limit.
  • Every other refusal uses the body {code, status, debugMessage, data}. Errors lists the codes.

Model calls

Harny does not run your agent's model. Your agent's model calls go to your provider on your key, under your provider's own limits. Harny's limits above apply to Harny's calls only. See Models and keys.

Next