Limits and plans
What each plan includes and costs, its rates and quotas, and the limits on documents, writes, queries and imports.
There are two plans. Free has hard limits: past what's included a request is refused with a 402, never billed. Pro is pay as you go, with a $10 monthly minimum that your usage counts against: you pay the larger of $10 and your usage. Current prices are on skimmerdb.com/pricing, and GET /v1/usage shows this period's usage and bill.
Plans
| Free | Pro | |
|---|---|---|
| Price | $0 | $10 a month minimum; usage counts against it |
| Storage (as stored) | 1 GB-month | $0.10 per GB-month |
| Written | 1 GB, 100,000 documents | $0.25 per GB |
| Queries (searches, counts, reads, warms, SQL) | 100,000 | $0.50 per million |
| Object-store reads by queries (cold queries) | 1 million a month | $0.50 per million |
Query CPU (cpu_ms in each answer) | 1 hour a month | Metered, not billed |
Hosted embedding ("provider": "skimmerdb") | 5 million tokens a month | $0.02 per million tokens (Voyage's price, no margin) |
| Embedding with your own provider key | not counted | not billed by SkimmerDB (the provider bills you) |
| Bytes of answers sent back | 10 GB a month | Metered, not billed |
| Past what's included | Refused (402) | Billed |
| Storage quota | 1 GB | 10 TB |
| Namespaces | 1,000 (and 1,000 made a day, per server) | Unlimited |
Note Until an owner of a free tenant verifies their email, the tenant has 1% of every free-plan allowance: 1,000 queries, 1,000 documents written, 0.01 GB-month of storage (about 10 MB kept for a month), 10 namespaces, and 1% of the CPU, cold reads and answer bytes. Past that, requests answer 402 email_unverified. Signup's key works at once.
Rates and concurrency
| Free | Pro | |
|---|---|---|
| Requests a second, per tenant | 100 | 1,000 |
| Requests in flight, per tenant | 16 | 64 |
| Time limit of a search, count or vector query | 10 s | 30 s |
| Time limit of a SQL query | 10 s | 30 s |
| SQL queries running at once, per tenant | 2 | 8 |
- Past a rate or concurrency limit, a request waits briefly for a slot, then answers 429 with
Retry-After. Answers carryRateLimit-*headers: see Errors. - A key can have its own, tighter limits: requests a second (
rate_per_s) and queries or writes a billing period (cap_queries,cap_writes). See Keys, scopes and tenants. - Limits are per server. A deployment of several servers admits up to that many times a tenant's rate and concurrency; key caps and the storage quota may overshoot by what other servers admitted in the last few seconds.
- Past a search's time limit, it answers what it found with
"partial": trueand"timed_out": true; a count or SQL query fails with 422query_timeout.
Documents and writes
| Limit | Value |
|---|---|
| Namespace name | 1 to 64 of a-z 0-9 - _ . |
| Document id | Up to 512 bytes, one line (slashes allowed) |
| Document text | 2 MB |
Metadata (meta) | 16 KB of JSON, an object |
| Metadata keys that are SQL columns | The 256 most frequent |
| Documents and deletes a write | 1 to 10,000 |
| Body of a write | 64 MB |
| Vector dimensions | 1 to 2,048, fixed when the namespace is made |
| Import | 2 GB and 1,000,000 rows a request |
Queries
| Limit | Value |
|---|---|
| Results a search or vector query | limit up to 1,000 (default 20 for search, 10 for vectors) |
| Namespaces a listing | limit up to 1,000 a page, default 100 (next for the rest) |
| Text predicates a SQL query | 8 |
| Rows a SQL answer | 10,000 (truncated: true past it) |
| A regex the index can't narrow | Refused past 100,000 documents or about 100 MB, unless "scan": true |
Queries on a namespace also stop at a budget of object-storage reads; past it the answer is partial, never wrong. See Performance and cost.