Pricing
Free during the beta, with caps.
The beta costs nothing. Every call is metered from the start, so your dashboard shows what you use, and caps keep one organization from crowding out the rest on a single node.
[01/03] Caps
Beta caps per organization
GET /v1/limits returns these with your current usage. A request over a rate or concurrency cap gets 429 with Retry-After; one over a size cap gets 422. Each API key can also carry its own spend cap.
sandboxes
- Sandboxes running at once
- 10
- vCPUs per sandbox
- 2 vCPU
- Memory per sandbox
- 2 GiB
- sandboxes.disk_max
- 16
- Sandbox lifetime
- 1 h
vision
- Browser sessions at once
- 5
- Browser session lifetime
- 30 min
- Scrapes per minute
- 60
- Scrapes in flight
- 5
- Pages per crawl
- 500
- Crawls at once
- 1
render
- Renders at once
- 2
routines
- Routine steps per day
- 50,000
actions
- Action calls per minute
- 300
infer
- Tokens per minute
- Per model
platform
- egress.bytes.daily
- Per model
[02/03] Metered units
What is metered
Each operation records one unit, whatever served it. No unit prices have been set, so the price column says Not set.
| Unit | Counts | Product | Proposed price |
|---|---|---|---|
| Pages scrapedvision.page | One page fetched and converted, whichever tier served it (cache, fetch, browser). | vision | Not set |
| Browser session timevision.browser_ms | Wall time of a browser session, from claim to close. | vision | Not set |
| Screenshotsrender.screenshot | One captured screenshot; extra variants of the same capture count once each. | render | Not set |
| Video outputrender.video_s | Seconds of output video, rounded up per video. | render | Not set |
| Input tokensinfer.input_tokens | Prompt tokens. | infer | Not set |
| Output tokensinfer.output_tokens | Generated tokens. | infer | Not set |
| Speechinfer.audio_chars | Characters of text synthesized to speech. | infer | Not set |
| Sandbox CPUsandboxes.vcpu_ms | CPU time used, sampled from the sandbox cgroup cpu.stat. | sandboxes | Not set |
| Sandbox memorysandboxes.gib_ms | Allocated memory times wall time while running. | sandboxes | Not set |
| Routine effect stepsroutines.effect_step | A routine step with effects that has no product meter of its own (core/http, core/wait, …). | routines | Not set |
| Action callsactions.call | One action execution. | actions | Not set |
| Egressegress.bytes | Bytes of customer-steered egress, recorded by the egress guard for every operation. | platform | Not set |
- Admission is by invite code, against the headroom we measure on the node.
- Breaking API changes are announced at least 14 days ahead, with a dated B3OS-Version header.
- Usage records are queryable per key, product, unit and request: GET /v1/usage and /v1/usage/records.
[03/03] Retention
How long data stays
Defaults for every organization in the beta. Some requests can set their own window; the API reference marks which.
- Cache
- Scrape results. Per request, max_age_ms sets how old a cached copy may be and store_in_cache: false skips it.
- 2 days
- Artifacts
- Screenshots, videos and other files a job produces.
- 7 days
- Run history
- Routine runs with their steps, inputs and outputs.
- 30 days
- Request logs
- The per-request records behind GET /v1/requests.
- 7 days