Limits and quotas
Prices
openshield is prepaid: you top up a balance in euros, and each check takes what its workflow costs. There is no subscription. Prices exclude VAT and are the beta prices.
| Component | Price | Unit |
|---|---|---|
| Nudity and sexual content | EUR 0.001 | per image |
| Visual categories (violence, weapons, drugs, hate symbols, custom categories) | EUR 0.001 | per image |
| Text in images | EUR 0.002 | per image |
| QR codes | EUR 0.001 | per image |
| Text rules and links | EUR 0.001 | per started 1,000 characters |
| Text AI models | EUR 0.002 | per started 1,000 characters |
| Advanced reading | EUR 0.002 | per text it reads |
An image costs the components its workflow uses: EUR 0.002 for a usual workflow (nudity and visual categories). A text costs its components for each started 1,000 characters: a 300-character text checked by the AI models costs EUR 0.003, and a 2,500-character one EUR 0.009. The advanced reading runs only on a text the first check sends to review. Each workflow shows what it costs per image and per text in the dashboard, next to its save button. The pricing page has a cost estimate.
Fraud prevention
The fraud prevention API is priced per call, from the same balance. Prices exclude VAT and are the beta prices.
| Call | Price |
|---|---|
Decision (/fraud/v1/decide) | EUR 0.001 |
Event (/fraud/v1/events, each accepted event of a batch) | EUR 0.0002 |
IP lookup (/fraud/v1/ips/{ip}, each valid address of ips/query) | EUR 0.0002 |
| With the network data on, each decision | + EUR 0.0002 |
| With the activity bursts on, each decision | + EUR 0.0005 |
The network data and the activity bursts hold more in your instance's memory, so a decision costs more while they are on. You turn them on and off in the fraud settings of the dashboard.
Only a call that ends in a 2xx costs anything, and a batch costs for the events the instance accepted or the valid addresses it answered for. Cases, accounts, lists, exports and the other routes are free.
Free use
Every organization gets EUR 2.00 of use each month, with every category and the full answer. It is used before what you bought, and what is left of it does not carry over to the next month. It is one allowance for both products: fraud decisions and events draw on it like moderation checks.
What counts as a check
One image or one text is one check. What it costs depends on the components of its workflow, as the table above shows. A request that does not end in an answer, for example one that gets a 400, a 415 or a 503, costs nothing. On /fraud/v1, a decision is one call to decide and an event is one accepted event, alone or in a batch of up to 100.
Request limits
| Limit | |
|---|---|
| Request body | 15 MB |
| Image size | 50 megapixels (12 until your first top-up), and 16,384 pixels on a side |
| Text length | 20,000 characters from the second tier (10,000 on the first, 5,000 until your first top-up) |
ref | 1 to 128 characters, no control character |
Image downloaded from a url | 15 MB, 3 redirects, 10 seconds |
Rate limit and concurrency
Requests are limited per organization, with a bucket: it holds as many requests as the burst, and refills at the rate per second. A request that finds the bucket empty gets 429 rate_limited with Retry-After. Checks also run a few at a time, as many as your tier's concurrency: another one gets 429 too_many_concurrent with Retry-After.
Every response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset, so you can slow down before you are refused.
The rate limit also applies to /fraud/v1: a fraud call takes one request from the same bucket as the checks of the organization, with the same burst and rate, and gets 429 rate_limited when it is empty. The concurrency limit does not apply to fraud calls. A fraud request body is at most 1 MiB.
A check waits up to 30 seconds for its turn on the server, then gets 503 busy with Retry-After. Organizations that have never topped up together use at most half of a server's capacity, so the others always keep their share of it.
Tiers
Request limits rise with what you topped up over the last 30 days. Nothing to choose: the tier follows on its own, within the hour.
| Free | Tier 1 | Tier 2 | Tier 3 | |
|---|---|---|---|---|
| When | Never topped up | Any top-up | EUR 100 in 30 days | EUR 500 in 30 days |
| Requests per second | 2 | 10 | 30 | 60 |
| Burst | 5 | 20 | 60 | 120 |
| Concurrent checks | 1 | 2 | 4 | 8 |
| API keys | 2 | 5 | 20 | 50 |
| Workflows | 3 | 10 | 50 | 200 |
| Journal kept | 7 days | 30 days | 30 days | 30 days |
| Longest text | 5,000 characters | 10,000 characters | 20,000 characters | 20,000 characters |
| Largest image | 12 megapixels | 50 megapixels | 50 megapixels | 50 megapixels |
| Advanced reading | No | Yes | Yes | Yes |
Your balance
- Top-ups. Top up from the billing page of the dashboard, by card, from EUR 5. A top-up of EUR 100 or more adds 10%, and one of EUR 500 or more adds 20%. Each top-up comes with its invoice, which you find on the billing page. VAT is added where it applies.
- Expiry. What you top up stays usable for 12 months. The oldest amounts are used first.
- Automatic top-up. Turn it on from the billing page: when the balance falls under the amount you choose, your saved card is charged the amount you set. A monthly limit caps what automatic top-ups may charge; when it is reached, they pause until the next month and you get an email. If a charge fails, automatic top-ups turn off and you get an email.
- Empty balance. When nothing is left, the API answers
429 quota_exceededuntil you top up or the next month's free use arrives.Retry-Afteris the number of seconds until the next month. A check already accepted is finished; if it costs more than what was left, the difference is taken from your next top-up or free use.
Every response carries X-Quota-Used and X-Quota-Limit, in micro-euros (millionths of a euro): what the month's checks cost so far, and where the API stops, which is that cost plus your balance.
Emails about your balance
The members who manage billing (the owner and the billing role) get an email at a verified address:
- when the balance falls under the amount you set on the billing page;
- when the month's use passes the amount you set there;
- when an automatic top-up fails, or pauses at its monthly limit.
Monthly and yearly plans
Organizations that subscribed to a monthly or yearly plan before prepaid use keep it until it ends, with its included checks, overage and spending cap. When it ends, the organization moves to prepaid use with its free use for the month. New plans are not sold.
When you need more
The tiers' limits grow with what you top up. If none fits, write to contact@sway.events.