Plans and limits
What each plan contains, what the quotas really count, and the exact response you get when a limit is reached.
On this page
- How SealTrust is sold
- What each plan contains
- What the counters really count
- Products, reset at each period
- Certificates, a stock at a given moment
- Users and brands
- API keys
- What exactly happens when you reach a limit
- Volume exceeded
- Feature absent from your plan
- Identification method not allowed
- Trial ended or subscription suspended
- The API call limits
- The throughput of your key, per minute
- The aggregate throughput of your brand
- The key's daily quota
- When counting is unavailable
- The other fixed bounds
- The digital passport and your contract
- Seeing your usage before you get there
- Changing plan
- Going further
By the end of this page, you will know which plan opens which feature, what each counter really counts, and which exact response your integration receives the day it hits a limit. You will also know how to read your usage in the console before you get there.
#How SealTrust is sold
We sell every plan on quotation. No plan carries a public price, including the trial account. The console displays "On request" instead of an amount, and the negotiated amount lives in your contract.
You do not subscribe from a screen. Online subscription is closed. You go through a discussion with the team, then we put the subscription into service.
Four plans are offered in the catalog: Essentiel, named Essential in the console, Prestige, Maison and Inside. A trial account also exists, and it is restricted: no digital passport, no API access, no visual customization. Write to contact@sealtrust.io to obtain one.
#What each plan contains
This table lists the rights read from the plan catalog. The public comparison on sealtrust.io/pricing carries a few more lines. The catalog goes up in tiers: each plan contains the previous one.
| What you get | Essentiel | Prestige | Maison | Inside |
|---|---|---|---|---|
| Products included per month | 2,000 | 10,000 | negotiated | negotiated |
| Valid certificates held | 1,000 | 10,000 | negotiated | negotiated |
| Brands | 1 | 3 | negotiated | negotiated |
| Administrator users | 3 | 10 | negotiated | negotiated |
| API keys | 1 | 5 | negotiated | negotiated |
| QR and NFC identification | yes | yes | yes | yes |
| NFC chip encoding | yes | yes | yes | yes |
| Digital product passport | yes | yes | yes | yes |
| CSV, XLSX and PDF exports | yes | yes | yes | yes |
| Customization, logo and colors | yes | yes | yes | yes |
| Partner API access | yes | yes | yes | yes |
| Webhooks | no | yes | yes | yes |
| ERP and PIM connectors | no | no | yes | yes |
| SealTrust mention removed | no | no | no | yes |
| Your pages on your domain | no | no | no | yes |
| Support | priority | account manager | account manager |
Maison and Inside carry no fixed ceiling: products, certificates, brands, users and API keys are sized by contract there.
Four lines deserve an extra sentence.
The digital product passport is in every paid plan. It has stopped being a high end option. Only the trial account is deprived of it.
Visual customization is in every paid plan. It covers your logo and your two colors on the pages seen by your customers.
White label is reserved for Inside. It is distinct from visual customization. It removes the "Powered by SealTrust" mention from the passport, from the certificate page and from the certificate PDF, and it serves your consumer pages on your own domain. Only the consumer pages move to your domain. Neither the console nor the API.
NFC chip encoding is open in all four plans. QR alone incurs no encoding cost. The unit price of a chip is set in your quotation and billed by us, outside the console. No screen counts it.
#What the counters really count
Five counters exist. They do not behave the same way, and that is the most frequent source of surprise.
#Products, reset at each period
The product volume is monthly. It counts the products created since the start of your current billing period. When your subscription carries a period, it is that one. Otherwise, the period starts on the first day of the calendar month, at midnight universal time.
Three clarifications that change the calculation.
The counter does not distinguish QR from the NFC chip. It counts every product created over the period, whatever their identification method.
A destroyed product leaves the counter. The counter only retains products that still exist.
A batch being processed already counts. When you send a batch of 500 items, the items that processing has not created yet are reserved and take their place right away. Two submissions launched one after the other therefore cannot together exceed the same ceiling.
#Certificates, a stock at a given moment
The certificate ceiling covers the valid certificates you hold at that moment. A revoked or expired certificate leaves the count. Revoking a certificate gives its place back: a brand that has issued many and revokes some of them can issue as many new ones.
The ceiling is 1,000 certificates on Essentiel and 10,000 on Prestige. Maison and Inside carry none.
#Users and brands
These two ceilings are absolute, with no reset. You meet the user ceiling when you create an account in your team. The brand ceiling covers all the brands accessible to your account. Opening an additional brand goes through the team.
#API keys
The ceiling only counts active keys. Revoking a key frees a place immediately. You can therefore replace a key without changing plan.
#What exactly happens when you reach a limit
Nothing is degraded silently. Each limit produces a named error response, which your integration can recognize without reading a message in French.
#Volume exceeded
We refuse the creation with HTTP code 403 and a body that gives the counter, the ceiling and the period.
{
"detail": {
"code": "QUOTA_EXCEEDED",
"resource": "products",
"current": 1950,
"additional": 100,
"max": 2000,
"period": "monthly"
}
}The additional field only appears on batch creations: it is the number of items you are requesting. We refuse the whole batch. Nothing is partially created. On a single item creation, additional is absent. On a resource other than products, period is absent too, because the ceiling is absolute.
#Feature absent from your plan
We refuse the call with HTTP code 403 and the name of the missing feature.
{
"detail": {
"code": "FEATURE_NOT_AVAILABLE",
"feature": "webhooks"
}
}The feature names you may come across are api_access, webhooks, dpp, exports, nfc_encoding, custom_branding, erp_connectors and white_label.
One nuance on webhooks. Creating and modifying a subscription requires that your plan include webhooks. If your plan no longer includes notifications, you keep the ability to list your subscriptions and to delete them. So you can always clean up after a change of plan.
In the console, two menu entries lock depending on the plan. The Reports entry depends on exports. The Tools section, which gathers NFC encoding, depends on nfc_encoding. A locked entry stays visible, grayed out, with a padlock and a link to write to us.
You steer your notification subscriptions in two ways: from the console, under Settings then Developers, and through the partner API. Both paths write the same subscriptions. In the console, the subscriptions block grays out under a padlock when your plan does not carry webhooks.
#Identification method not allowed
A plan limited to QR refuses a creation that requests NFC, with HTTP code 403.
{
"detail": {
"code": "AUTH_METHOD_NOT_ALLOWED",
"requested": "nfc",
"allowed": "qr",
"upgrade_hint": "Upgrade to Essential or higher for NFC authentication."
}
}The requested field returns the method that was evaluated. On a single item creation where you omit the method, it is null. In a batch sent from the console with no method, it is nfc.
The four catalog plans and the trial account allow both QR and NFC.
#Trial ended or subscription suspended
Two refusals cut off access without being tied to a volume. Both arrive as 403, and their body is a plain string.
| Response body | When | What to do |
|---|---|---|
TRIAL_EXPIRED | Your trial account has passed its end date. | Contact the team to open a subscription. |
SUBSCRIPTION_INACTIVE | Your subscription is unpaid, terminated or never finalized. | Settle the payment. The rights come back afterwards. |
These two refusals come from the console. The partner API never returns them. When your plan no longer carries API access, the partner API answers FEATURE_NOT_AVAILABLE on api_access.
An unpaid invoice suspends the plan's rights. Your data stays in place, and the public pages of the products you have already created keep answering.
#The API call limits
Three counters apply and stack: the throughput of your key, the aggregate throughput of all your brand's keys, and the key's daily quota.
#The throughput of your key, per minute
We measure throughput over a fixed 60 second window. The ceiling depends on your plan and is not published as a grid.
You do not have to guess it. The value that applies to your brand appears in the X-RateLimit-* headers of every accepted response.
| Header | What it gives |
|---|---|
X-RateLimit-Limit | The ceiling that applies, in calls per window. |
X-RateLimit-Remaining | What is left to you in the current window. |
X-RateLimit-Reset | The timestamp of the end of the window. |
X-RateLimit-Scope | key or brand, the more constraining counter of the two. |
When no ceiling is set for a brand, the fallback value is 120 calls per 60 second window.
On going over, the response is 429 and additionally carries Retry-After, expressed in seconds remaining in the current window, and never lower than 1.
#The aggregate throughput of your brand
A second counter adds up the calls of all your brand's keys, over the same window and with the same ceiling.
#The key's daily quota
Each API key carries its own daily quota, set when it is created. The console form offers 1,000 per day by default. A key created with no value is unlimited. The counter restarts from zero at the passing of midnight universal time.
This quota is consumed per item. A batch submission of 100 products consumes 100 units, in a single call. A sell-out declaration consumes 1. All the other partner API calls consume none, including the management of notification subscriptions.
On going over, the response is 429 with three headers: X-Quota-Limit, X-Quota-Remaining and X-Quota-Reset.
#
The three counters above rely on a counting service. If that service becomes momentarily unavailable, the API answers 503. It is a failure mode, distinct from the three limits. This refusal applies to the eight partner API endpoints, including the deletion of a notification subscription, which then deletes nothing. Try again a few moments later.
#The other fixed bounds
These limits do not depend on your plan. They are the same for everyone.
| Limit | Value | On going over |
|---|---|---|
| Items per batch sent to the API | 500 | 400, the whole batch is refused. |
| Size of a compressed CSV once decompressed | about 20 MiB | 413. |
| Items per grouped certificate issuance | 100 | 422, the request is refused at validation. |
| Items per production batch in the console | 10,000 | The form does not accept a higher quantity. |
| Maximum lifetime of an API key | 3,650 days | The creation is refused. |
| Default lifetime of an API key | 365 days | The key goes to expired on the first call after the due date. |
| Memory of an idempotency key | 24 hours | Beyond that, the same submission is treated as a new batch. |
#The digital passport and your contract
The digital product passport is included in the four catalog plans. No console counter caps it, and no screen bills you for it. The planned volume appears in your contract, and an overage is negotiated with your sales contact.
#Seeing your usage before you get there
Further down the console dashboard, after the Analytics block, two cards sit side by side, across the full width.
My plan, on the left, displays the name of your plan, the days remaining during a trial, and three bars: products, certificates and users. It is the only place where you read your certificate stock.
Plan usage, on the right, displays three bars: products, users and API keys. Each bar shows your counter, your ceiling and a percentage. The bar turns orange at 80 percent and red beyond 95 percent. A missing ceiling is displayed as "unlimited".
Under the bars, a projection appears when your current pace brings you to the limit in less than 30 days. It indicates the number of days remaining at the observed pace. Below 7 days, it turns red and offers to write to us.
The Billing screen, under Settings, shows your current plan. The cycle, the subscription state and the list of invoices only fill in after an online payment. No screen opens that payment today, so those three values stay empty.
#Changing plan
Moving up or down a plan goes through the team. The button on the My plan card opens a pre-filled message to our address.
The Billing screen carries three buttons: terminate the subscription, cancel a termination already requested and open the payment portal. All three refuse the call as long as no online payment has opened your subscription. To terminate or change payment method, write to us.
Two points deserve to be anticipated.
We re-read your rights on every call. They therefore open and close as soon as your plan changes. If you move down a plan and lose webhooks, your existing subscriptions stay readable and deletable.
Revoke the API keys you no longer need in order to find headroom before your next key creation.
#Going further
- Partner API overview for authentication and the list of endpoints.
- Create products for the detail of single item and batch creations.
- Receive events by webhook for what the subscriptions cover.
- Get started with the console for finding the screens mentioned here.
Was this page helpful?
Your answer opens a pre-filled email in your mail app, addressed to contact@sealtrust.io. You read it over before sending it.