Keys
- Keys live on your server or in a secret store, never in browser code or a repository.
- Development and production use separate keys.
- Each key has a credit limit, so a bug can’t spend your whole balance.
- Browser-side logos use the logo CDN token, not your API key.
Errors and retries
- Your code branches on
error_code, not on theerrormessage. - You retry only when
retryableistrue, with exponential backoff, and you honorRetry-After. - Missing fields are handled. Curated and live answers can differ, and many fields can be
null.
Throughput
- Parallel requests stay at or under your plan’s concurrency limit.
- Lists of more than a few dozen URLs go through a batch, not a loop.
- Your HTTP client allows at least 60 seconds per request. Most endpoints finish within 55.
Webhooks
- Your handler verifies
X-Prefetch-Signatureagainst the raw body. - It answers
2xxwithin 10 seconds and does slow work afterward. - It skips deliveries it has already handled.
Costs
- You store brand and company data instead of fetching it on every page view. See Caching.
- Each monitor’s
estimated_credits_per_monthfits your budget, and monitors you don’t need are paused. - Crawls have a sensible
limitandinclude_paths.
Content from the web
- If page text reaches a language model, treat it as untrusted. Turn on
check_prompt_injectionfor pages you don’t control. See Security.
Observability
- You log
meta.requestId, the status and theerror_codefor every failed call. - Someone watches the changelog, and your on-call team subscribes to the status page.