Skip to content

Limits: how much you can submit

A key is held to daily and monthly counters, size caps per submission, and request rates per minute. Every number on this page is read from the definitions the service enforces.

These are the limits of the hosted API. Aurora Direct, the upload on the website, has an allowance of its own.

Quotas

Every approved account starts on the academic tier. Use is metered per key against that tier's counters, each over a calendar day or a calendar month in UTC. A request past a counter is refused, never delayed.

Counter Window academic tier
tiles day 50,000
rows day 200,000
jobs day 5
jobs_month month 30

A daily counter starts again at midnight UTC, and a monthly one on the first of the month. A request past a counter answers quota_exceeded, which names the counter, how much of it is used and its window. A refused request charges nothing.

What charges what

Tiles and embedding rows are charged once, when an upload completes, from the count the service measured. A job is charged when a submission is accepted. Covariates charge nothing.

Input kind Counter Charged
patches tiles one per item
embeddings rows one per item
bulk_rna — nothing
tissue — nothing
disease — nothing

Sizes

Two caps apply to every submission. The item cap is the point above which a submission is refused. The upload cap is enforced before the bytes are written.

Input kind Item cap Upload cap Per-model bounds from
patches 50,000 2 GiB card.input_spec
embeddings 50,000 256 MiB card.input_spec
bulk_rna — 64 MiB card.output

Under the cap every item you send is read. No kind is sampled down to fit. Over it the submission is refused with payload_too_large, and the refusal names the count and the limit.

Check tile quality says how to bring a slide under the item cap. A model's card may set narrower bounds than these.

Request rate

A request with a valid key is limited per key, not per network address, so several clients behind one address are limited separately. A request without one is limited per address.

Bucket Limit
read 600 per minute
write 60 per minute
submit 10 per minute

Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. A 429 or a 503 also carries Retry-After.

Read the headers rather than estimating

When a bucket is exhausted the response is rate_limited. Wait the seconds in Retry-After, then retry: a refused request spends nothing.

Your place in the queue

The job response reports your queue_position and eta_seconds. Use these to follow progress, and respect the polling interval Aurora returns.

When the queue is full, a submission answers queue_full. Nothing is charged and no job is created.

Ask for more

If you would like to analyse more, get in touch and tell us a little about your project. We can discuss the appropriate route for your work.