Skip to main content
Two different things bound your usage: credits (what a call costs — see Credits) and the limits on this page (how often you may call, how many keywords you may run, and how many searches those fan out to). Your plan sets both. What a plan sells is keywords × terms × freshness. Credits are the meter underneath and the abuse fuse — every plan includes far more of them than a monitoring account spends.

Plan entitlements

Solo is the display name of the starter tier — accounts.plan_tier and the API still say starter. Active searches is the fan-out fuse, not the axis you shop on: one keyword claims one slot per search per enabled Source (searchSlots in the estimate), and the cap sits well above what a plan’s keywords produce in normal use. You meet the keyword cap first. Credit packs top up your balance but never change the limits above — those move only with the plan.

Terms per search

A search carries either a single query or a list of terms, never both. A term list is OR’d into one upstream request, so a brand plus its variants costs one poll and one tick — the same as a single term. Your plan caps the list length. terms is accepted only on the Sources whose own search supports boolean OR, measured live rather than read off their docs: Sending terms to one of the last three answers 400 VALIDATION naming the Source. It is never split into several searches behind your back: that would be a surprise invoice.

Plan features

Beyond the four figures above, a plan also unlocks a short list of dashboard features — capabilities a tier has or does not have, rather than has more of: These gate the dashboard only. Nothing on /v1 is ever gated by plan features — every plan reaches the full pull surface, metered by credits and bounded by the request quota above. A plan change never makes an API call that used to work start failing.

Request quota

/v1/* is limited per Account (not per API key) in a rolling 60-second window, at the requests-per-minute figure for your plan. Exceeding it returns 429 with code: "TOO_MANY_REQUESTS"; see Errors — Rate limits for the envelope and the RateLimit-* / Retry-After headers. Because the quota is per Account, extra API keys do not buy extra throughput.

Interval and slot limits

Polling limits are enforced at two levels, and the stricter one wins.

Minimum interval

Source minimums are 60s for X, Reddit and Youtube, 120s for Bluesky, Hacker News and RSS, 15s for Vinted, and 21600s (6 h) for AI answers (Keywords). Because the plan floor is never below 60s, Vinted’s 15s Source floor is not reachable on any current plan: the fastest Vinted polling is 60s, on Pro. On Free the effective minimum is 3600s, so refreshIntervalSeconds: 15 is rejected with 400 VALIDATION even though the Source itself allows it. AI answers floors at 6 h on every plan — the Source floor wins, and a run there is a paid prompt rather than a feed fetch. The maximum is 86400s (24 h) on every plan and Source, except AI answers, which allows up to 604800s (7 days) for the same reason. A slow interval trades coverage for cost: each tick reads one page of the Source, so a busy term polled daily reports what fits in that page and misses whatever scrolled past it in between. Pick the slow end for terms that are quiet, not for terms that are noisy.

Active search cap

Creating or editing a keyword checks the plan’s cap on active searches account-wide across all Sources. POST /v1/keywords/estimate answers how many slots a body would take (searchSlots.requested) against what is in use and the plan’s limit, before you write anything. Each Source also has its own ceiling on active searches per Account, whatever the plan: 50 on Vinted, 10 on AI answers and TikTok, 20 on every other Source. Three Reddit searches count as three, whichever keywords they sit in. A write that would cross a ceiling is refused with 400 VALIDATION naming the Source.

Downgrades pause what no longer fits

Moving to a lower plan does not delete anything. Polling that now breaks the new entitlements (faster than the new minimum, or beyond the new cap) is paused with pausedReason: plan_entitlement. The oldest are kept first; the newest are paused. Nothing resumes automatically. After upgrading again, call POST /v1/keywords/{id}/resume. Resume re-checks the cap and interval, and names what could not follow in blockedSources.
A Source paused by support (admin_paused) cannot be resumed with the API: a keyword resume leaves it stopped and names it in blockedSources.

Next steps

  • Credits — what each call costs
  • Keywords: lifecycle and per-Source behaviour
  • Errors — status codes and the error envelope