Supplying the API key
Use thex-api-key header:
401 Unauthorized. Unknown keys return 403 Forbidden.
Rate limits
Each key is provisioned with per-window quotas (defaults shown below; your allocations may differ):| Window | Default allowance | Header for limit | Header for remaining | Reset header |
|---|---|---|---|---|
| Minute | 1,000 requests | X-RateLimit-minute-limit | X-RateLimit-minute-remaining | X-RateLimit-minute-reset |
| Hour | 60,000 requests | X-RateLimit-hour-limit | X-RateLimit-hour-remaining | X-RateLimit-hour-reset |
| Day | 1,500,000 requests | X-RateLimit-day-limit | X-RateLimit-day-remaining | X-RateLimit-day-reset |
Weight-based quota system
Quota consumption varies by request type:- Single item requests: 1 quota unit (e.g., fetching one profile or one content item)
- Bulk requests: 1 quota unit per item requested (e.g., fetching 100 profiles costs 100 quota units)
- List requests: 1 quota unit per item returned (e.g.,
limit=25costs 25 quota units) - Analysis/Audience endpoints: 100 quota units per request
- Email/Socials endpoints: 10 quota units per request
GET /platforms/twitch/profiles/12345→ 1 quota unitPOST /platforms/twitch/profileswith 50 profile IDs → 50 quota unitsGET /platforms/twitch/content?limit=25→ 25 quota unitsGET /platforms/twitch/profiles/12345/analysis→ 100 quota unitsGET /platforms/twitch/profiles/12345/email→ 10 quota unitsGET /platforms/twitch/profiles/12345/socials→ 10 quota units
- The API returns
429 Too Many Requests. - Response headers still include the remaining quotas (often
0) and aRetry-Afterheader indicating seconds until the smallest exceeded window resets. - You should back off and retry after the specified time to avoid throttling loops.
Interpreting headers
Example response headers:*-limit: Your total allocation for the window.*-remaining: How many requests you can still make before the window is exhausted.*-reset: UNIX timestamp (seconds) when that window resets.
Usage logging
We log every request to an internal usage stream (Valkey). If you need exports for billing/reconciliation, contact support.Key rotation & revocation
- Keys can be rotated by the Streamforge team on request. Rotate keys used in production carefully; old keys are immediately invalid.
- If a key is compromised, we can revoke it (sets
is_active=false) and cache entries are invalidated within seconds. Expect403responses once revoked.
Best practices
- Distribute load: If you run high-concurrency jobs, stagger requests to avoid spikes at window boundaries.
- Handle 429: Implement an exponential backoff and respect
Retry-After. - Monitor usage: Build dashboards using the rate-limit headers so you know when you’re close to limits.
- Regional routing: The API is fronted in multiple regions. Use the closest region for lower latency (see the Reference section).

