Skip to content
Felspar
Esc
↑↓navigate↵open⌘Jpreview
On this page

Limits

Request sizes, rate limits, classification bounds, attempts, pack sizes and how long things are kept.

Decision requests

Limit Value Refusal
Characters per excerpt 2,000 text_too_long
Excerpts per question 3 too_many_excerpts
Questions per request 64 too_many_questions
Facts per request 512 KiB request_too_large
JSON body 2 MiB invalid_body
Content-parts body 4 MiB invalid_body

The brief’s limits.facts repeats these for each job.

Rate limits

Decision requests are limited per minute, per caller (an agent or a person) and per workspace, so one busy agent can’t crowd out others.

Plan Per caller Per workspace
Standard 120 decisions a minute 300 decisions a minute
Raised (on request) 1,200 decisions a minute 3,000 decisions a minute
  • What counts: every decision, over REST or MCP, and every output check (check_output). A backtest counts as 10 decisions, since it re-decides up to 50 cases twice.
  • What doesn’t: job lists, briefs, receipt verification, and authoring tools other than backtest.
  • Only accepted requests count. A request is counted after its caller is authenticated and authorized for that job, so an unauthorized request never spends your allowance.
  • When limited: 429 rate_limited with limit (caller or workspace), retryAfterSeconds: 60 and a Retry-After: 60 header. Nothing was claimed, so resending the same request with the same execution ID after the wait is safe.
  • The limits are approximate, not exact counts.

To stay well inside them, send every question you have evidence for in one request per entity, and spread large runs over time. For runs of thousands of entities, talk to the Felspar team.

Classification

Bound Value
Deadline for a job’s classification 10 seconds; unanswered excerpts report classification_failed
Classification ceilings Per job, and per day for each workspace and each caller; refusals classification_allowance_exhausted and classification_ceiling_reached
Cache of identical classification requests 30 days, keyed by a fingerprint, not the text
Backtest re-classification Its own daily allowance, separate from agents’ decisions

Attempts

Limit Value
Attempts per case The pack’s attempts.max, default 3 (1 to 10)
Extra attempt after progress 1
Attempt window 24 hours from the case’s last decision

Past the limit: attempt_limit_reached, with the escalation the pack names for it.

Subjects and escalations

Limit Value Refusal
Subject types per pack 16
Relationships per subject 16
Escalations per pack 16
Related record IDs per request 16 too_many_related
Case and related IDs 1 to 200 characters: letters, digits and . _ : @ - subject_id_invalid
New issued cases per caller and job 200 in any 24 hours. A first decision whose excerpts are exactly the same text as a case the caller opened on the job in the last 24 hours reuses that case instead of opening one. issued_case_limit
Identity fields per job 8

Packs

Limit Value
Questions per job 64
Answers per question 2 to 64
Rules per job 256
Test cases per draft 200
Evidence kinds per pack 8
useWhen, notFor quotes per job 8 each
Maximum evidence age 1 to 3,650 days
Quote length 4,000 characters
Separate document blocks per question’s quotes 16

Sources

Limit Value
Watched documents per workspace 500
Watch interval Every 5 minutes
Notion pages (beta) 3 levels of nesting, 2,000 blocks

Backtests

Limit Value
Saved cases per backtest 1 to 50, default 25, newest first
How far back The last 30 days of decisions

Retention

What How long
Sources, proposals and approvals that are never released 30 days
A release and its source, proposal and approval As long as it serves (newest release of its job, or pinned by an agent), then 90 days
Decisions: evidence, classifications, results, receipts 30 days from the first decision on the case
Attempt records (question keys and locators only) 30 days
Classification cache entries 30 days
Backtest reports Not stored
Signed-in browser session Up to 30 days

See Security, privacy and data.

Was this page helpful?