Skip to main content

Overview

Rate limits protect the Snipp API from abuse and ensure consistent performance for all users. Limits apply per user based on your API key.

Limits

ScopeLimitWindow
General API requests15 requestsPer minute
File uploads8 uploadsPer second
These limits apply across all endpoints. Exceeding the upload limit may result in a temporary suspension of upload access for your account.

Rate limit headers

Every authenticated response includes headers to help you track your usage:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp (seconds) when the window resets

Rate limit responses

When you exceed the limit, the API returns HTTP status 429:
{
  "error": "Rate limit exceeded. Please try again later."
}
The rate limit headers are still included on 429 responses so you know when to retry.

Handling rate limits

1

Check the headers

Read X-RateLimit-Remaining from each response. When it approaches 0, slow down.
2

Detect the 429 status

Check for HTTP status 429 in your API responses.
3

Wait until reset

Use the X-RateLimit-Reset header to calculate how long to wait before retrying.
4

Use exponential backoff

If requests continue to fail, double the wait time with each retry (e.g. 1s, 2s, 4s, 8s).

Best practices

  • Space out bulk uploads — if you’re uploading multiple files, add a short delay between each request rather than sending them all at once.
  • Cache user data — avoid calling /users/@me repeatedly. Fetch it once and reuse the result for the duration of your session.
  • Batch where possible — reduce the total number of API calls by combining logic on your end instead of making multiple requests for related data.
  • Monitor your usage — if you’re consistently hitting rate limits, consider whether your integration can be optimized to make fewer requests.