Skip to main content

Limits

Pagination

LimitValueBehaviour when exceeded
Default page size25
Maximum page size1000Rejected with 400, not silently reduced
Page beyond the lastEmpty result set, not an error

Rejecting an oversized page rather than clamping it is deliberate: a silently reduced page makes a caller believe it has seen everything.

Bulk submissions

LimitValueStatus when exceeded
Rows per submission10,000400 TOO_MANY_ROWS
Absolute admission ceiling50,000400 TOO_MANY_ROWS
Request body sizeServer-configured413

Matching

LimitValueNotes
Candidates per blocking lookup50Beyond this the lookup is capped; a similarity fallback applies when blocking yields too few
Active match profiles1 per entity typeActivating one deactivates its siblings atomically
minAutoLinkAttributesdefault 1, range 1–20Distinct attributes that must agree before auto-linking
autoLinkWeightdefault 10.0, range 0–100Log2 evidence units
clericalReviewWeightdefault 5.0, range 0–100Must be autoLinkWeight, enforced on save
priorMatchProbabilitydefault 0.00001, range 0–1Folded into the reported posterior only
The candidate cap is why blocking strategy matters

An over-broad blocking strategy fills those 50 slots with records sharing nothing meaningful, and the true match may not be among them. A matching run that is slow and finds little is usually a blocking problem, not a capacity problem.

LimitValueNotes
Default page size25
Maximum page size1000
Label-to-code expansion cap1000Results carry a truncation flag

Truncation is signalled rather than erroring. A very short query is a legitimate prefix search, and failing it would be worse than returning best matches with an honest signal that more exist.

Tokens

PropertyValue
Access token lifetime86,400 seconds (one day) by default, configurable per environment
RefreshNot implemented — reauthenticate when a token expires
RevocationImmediate — the token identifier is checked against a revocation list on every request

Token lifetime governs how often people re-authenticate, not how long a revocation takes to take effect.

Backpressure

Work beyond capacity is rejected with a retry interval, not queued indefinitely.

ConditionStatus
Per-tenant queue depth reached429 QUEUE_LIMIT_EXCEEDED
Per-tenant payload quota reached429 PAYLOAD_QUOTA_EXCEEDED
Rate limit reached429 RATE_LIMITED
Platform saturated503 QUEUE_SATURATED

Both statuses carry a retry interval. Honour it — retrying immediately makes the condition worse. Rejection is the better failure: a queue that accepts everything grows until something worse happens.

Next


Last verified against commit 944761c7 (2026-08-03)