Plan limits
Skryx caps four metrics per plan: product records, monthly searches, indexes, and team members. This page describes the exact behaviour when you hit each one — what's blocked, what keeps working, what emails fire, and how to recover.
# Monthly searches
The metric: every POST to /v1/indexes/{name}/query counts as
one search. Refinements (filter, sort, paginate) each add one.
Behaviour over the cap: search keeps working. We never break your customer-facing site. Two emails are sent:
- 80% of cap — heads-up, you're trending past the limit.
- 100% of cap — confirmation you've crossed; expect an overage line on your next invoice (Stripe billing arrives next sprint; until then, the dashboard surfaces a counter without charging).
Both emails are deduped per billing month, so you'll see at most two search-quota emails per month even on a noisy spike.
Recovery: upgrade to a higher plan — the new cap applies instantly, and the counter is preserved (you don't "reset" by upgrading; the amplification just becomes a smaller percentage of the new cap).
# Product records
The metric: sum of indexed documents across all indexes.
Behaviour over the cap: net-new uploads are hard-blocked. The
single-document POST /v1/indexes/{name}/documents endpoint refuses
with 429 plus an upgrade hint. Bulk uploads via
POST /v1/indexes/{name}/documents/batch refuse the whole batch
when even one new doc would push you over. Updates of existing
products (same id) are not counted as additions and aren't blocked.
Search on existing products continues to work without limitation.
Recovery: delete unused products, OR upgrade. The cap is computed from the current indexed count, so deletions free space immediately.
# Indexes
The metric: number of Index rows in your account.
Behaviour over the cap: creating an index returns 429 with the
upgrade hint. Existing indexes continue working — only the create
endpoint is blocked. Index deletion is unrestricted.
Recovery: delete an unused index, OR upgrade.
# Team members
The metric: active users + pending invitations.
Behaviour over the cap: inviting a new member returns the cap message. Pending invitations count toward the limit so a tenant can't queue 20 invites on a 3-seat plan. Revoking a pending invitation or removing a member frees the slot immediately.
Recovery: revoke pending invites, remove inactive members, OR upgrade.
# What this looks like in the dashboard
Hard-blocked metrics surface their message directly on the form that triggered them — there's no surprise modal. Search-quota warnings appear as banner content on the analytics dashboard once you cross 80%; the banner is dismissible per session but the email is sent once per threshold per billing month.
# Tenant-specific overrides
Enterprise customers and case-by-case business arrangements can sit
above their plan's column limits via the account_overrides table.
Support sets these manually — they appear as numeric columns
(max_records, max_searches_monthly, max_indexes) on the
override row and take precedence over the plan default. Look in
Filament under "Account overrides" if you need to inspect a specific
tenant.
# See also
- Pricing model — what each plan limit is and why
- Trial — how the 14-day Starter/Growth trial works
- Upgrade / downgrade — change-plan playbook