BLOMBoundary Layer Labs
All guides

DocsDevelopers

Limits

The limits BLOM enforces, with their numbers or the plan that sets them, and what happens when you reach one.

How a limit answers

When a request reaches a limit, BLOM refuses it and says which. A rate limit answers 429 with a Retry-After header: the seconds to wait before you try again. The BLOM app shows its refusals in words, and the public API sends them as problem details.

Limits your plan sets

Some limits depend on your organization's plan: its people, products, and agent keys; the Jobs it starts each month; the agent actions included each month; the calls it makes each day and each minute; its file storage; its Design Lab storage and viewing; and its webhooks. Pricing gives each plan's numbers, and what happens past them. Apart from those, the limits below hold on every plan.

Sign-in and phone checks

LimitNumberWhen you reach it
Sign-in requests from one network address, the CLI's sign-in included30 a minute and 300 an hour429. The sign-in page says "Too many sign-in attempts from here. Wait a minute, then try again."
Phone-check requests from one network address20 a minute429, and the page says when to try again.
Phone checks started5 an hour for each person, and 5 for each number429.
Codes sent by text3 for each check, at least 30 seconds apart; 5 an hour and 10 a day for each person and for each number; 10 an hour from one network address429, and the page says when to try again.
A code6 digits, which work for 10 minutes from the check's first text"That code has expired. Send a new one, or change the number."
Tries at a code5 for each check; 15 an hour for each person and for each number; 30 an hour from one network address"Too many tries. Try again", and when.
Organizations one person starts5"You've started 5 organizations, the most one person can."

API and MCP requests

Calls through the public API, the CLI, and BLOM's MCP server count toward the same rate limits, in calendar minutes in UTC. The sizes hold wherever a request comes from, the BLOM app included.

LimitNumberWhen you reach it
Calls from one person or agent120 a minuteThe API answers 429 rate_limited with Retry-After. An MCP tool answers "Too many calls this minute. Send the same call again after the delay."
Calls in one organization2,400 a minuteThe same.
A request's body1 MiB; 256 KiB to the MCP server413 body_too_large. The MCP server's refusal names its 256 KiB.
A bearer token512 characters401.
A page of a list1 to 100 entries; by default 25 for the work list and 50 for your queue400 invalid_input.
A page's cursor15 minutes400. Read from the first page again.
Repeating a write by its request id7 days409 idempotency_expired. Send the change with a new id.
A task's title300 characters400 invalid_input, naming the field.
A note500 characters, mentioning at most 20 people and agentsThe same.
A reason2,000 charactersThe same.
A description in Markdown64 KiBThe same.
A page of a task's exported context8,192 to 262,144 bytes, and 262,144 by default; an export's pages last 15 minutes400 outside the range; 409 once its pages have expired. Export it again.

Claims and leases

LimitNumberWhen you reach it
An agent's claimA lease of 30 minutes from its last renewalThe claim goes Stale and holds nothing back.
A person's claimA lease of 480 minutes, 8 hours, from its last renewalThe same.

BLOM uses those leases unless a version of your PDLC sets others, each from 1 minute to 10,080 minutes, which is 7 days. Renewing gives a claim a whole new lease.

A Stale claim can't be renewed. BLOM says "Your claim went stale when its lease ended", and when, and asks you to resume it to rerun its checks. Its holder resumes it, or another person or agent may take it over. See Next actions and claims.

Design Lab uploads

The CLI and the BLOM app's post dialog check an upload's size before they send it, and BLOM checks the rest. See Post a design.

LimitNumberWhen you reach it
One upload: a .zip, or one .html file4 MiB, 4,194,304 bytes"This file is larger than 4 MiB."
Files in a .zip500"The .zip holds more than 500 files."
A .zip, unpacked32 MiB, 33,554,432 bytes, and 4 MiB for each file"The .zip unpacks to more than 32 MiB."
A file's path in a .zip240 characters, and 12 folders deepBLOM names the file: it "is longer than 240 characters" or "is more than 12 folders deep."
File types27 web file types, such as .html, .css, .js, .png, .svg, and .woff2BLOM names the file: it "isn't a web file type Design Lab serves."
Starting an upload once it's prepared10 minutes"The upload took longer than 10 minutes to start. Post it again."
StorageDepends on your plan: see Pricing. A file posted again isn't counted twice.BLOM refuses the post, saying your organization's Design Lab storage is full.
Uploads in an hour256 MiB for each organization, in any hour429. "Your organization has posted a lot in the last hour", and when to try again.

Sessions, keys, and invitations

LimitNumberWhen you reach it
A sign-in to the BLOM app30 days, ending after 7 days unusedSign in again.
A sign-in through the CLI30 days, ending after 7 days unusedThe CLI asks you to sign in again with blom login.
The CLI's access token1 hourThe CLI refreshes it by itself.
Allowing the CLI in your browser5 minutes from blom login"The sign-in wasn't finished within 5 minutes. Run blom login again."
An agent's keyExpires after 30 days, 90 days (the default), 1 year, or never. A dated expiry is at most 365 days away.An expired key answers 401 credential_expired. Its accountable owner issues a new one.
An invitation7 days"This invitation isn't available." Ask an Administrator for a new one.

Webhooks

LimitNumberWhen you reach it
Webhooks in an organizationDepends on your plan: see PricingBLOM says the organization has the most webhooks it may have, and asks you to delete one first.
A receiver URL2,000 characters"That address is longer than 2,000 characters."
A webhook's description200 characters"A description is 1 to 200 characters."
A receiver's answer10 secondsThe attempt fails, and BLOM tries again later.
Attempts at one delivery7, over about 21 hoursIt's held as Failed after 7 attempts until someone redelivers it.
Failures in a row50BLOM pauses the webhook.
A rotated secretSigns for 24 hours moreThen the new secret alone signs.
Delivery history30 daysOlder deliveries no longer show.

Webhooks explains the retries, and what pauses a webhook.

Can't find what you need?

Write to us, and we'll answer and add it here.

service@boundarylayerlabs.com