Skip to main content
Oso Cloud enforces operational limits to provide consistent latency for authorization decisions and a predictable experience for all interactions.

Limits

Startup and Growth Plans

All requests
DescriptionThresholdBehavior
Concurrency limitUnlimitedNot applicable
Read (Authorization) Requests
DescriptionThresholdBehavior
Rate limitUnlimitedNot applicable
Size limit10 MiB413 Content Too Large
Context facts per request100 facts413 Content Too Large
Query execution time20 seconds400 Bad Request
Write Requests
DescriptionThresholdBehavior
Rate limit30,000 fact updates per minute429 Too Many Requests
Size limit960 KiB413 Content Too Large
Entries per batch request1,000 entries413 Content Too Large
Facts updated per wildcard delete10,000 facts413 Content Too Large
Oso Sync
DescriptionThresholdBehavior
Concurrency limit1 per environment429 Too Many Requests
Size limit10 GiB per fact type413 Content Too Large

Free Plans

All requests
DescriptionThresholdBehavior
Concurrency limit4429 Too Many Requests
Read (Authorization) Requests
DescriptionThresholdBehavior
Rate limit1,000 requests per second429 Too Many Requests
Size limit10 MiB413 Content Too Large
Context facts per request20 facts413 Content Too Large
Query execution time20 seconds400 Bad Request
Write Requests
DescriptionThresholdBehavior
Rate limit1,000 fact updates per minute429 Too Many Requests
Size limit960 KiB413 Content Too Large
Entries per batch request20 entries413 Content Too Large
Facts updated per wildcard delete10,000 facts413 Content Too Large
Oso Sync
DescriptionThresholdBehavior
Concurrency limitNot applicableNot applicable
Size limitNot applicableNot applicable

How write request rate limiting works

Oso Cloud tracks fact additions and deletions per request. While an addition affects at most 1 fact, a deletion may affect multiple facts in the presence of wildcards. If the number of fact updates exceeds the threshold in a sliding 1-minute window, Oso Cloud starts throttling additional write requests, holding them until the threshold is no longer exceeded. If the threshold remains exceeded after 30 seconds, throttled requests are rejected with 429 Too Many Requests.

Syncing fact types that exceed the size limit

To synchronize larger datasets, shard a single fact type across multiple definitions in your YAML configuration by substituting a concrete value for one or more arguments:
# Before
has_relation(Repository:_, String:_, Organization:_): ...

# After
has_relation(Repository:_, String:parent, Organization:_): ...
has_relation(Repository:_, String:child, Organization:_): ...