Admaxxer Pixel API — Rate Limits

The Admaxxer Pixel API enforces a token-bucket-equivalent fixed window to protect every workspace from noisy neighbors and accidental runaway loops.

Limits

If you need a higher ceiling for a large warehouse backfill, email support@admaxxer.com with the workspace ID and target QPS — we can raise the limit per workspace.

Response Headers

Every successful response includes:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1713360000

X-RateLimit-Reset is a Unix timestamp (seconds) at which the window resets.

HTTP 429 Response

HTTP/1.1 429 Too Many Requests
Retry-After: 42

{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded. Try again in 42 seconds.",
    "details": { "limit": 60, "window": "1 minute" }
  },
  "meta": { "request_id": "req_…" }
}

Client Guidance

  1. Read the headers. Prefer X-RateLimit-Remaining as a steady signal. If it drops to 0, wait until X-RateLimit-Reset.
  2. On 429, obey Retry-After. Add up to 10% jitter to avoid thundering-herd re-sync when many workers share a workspace.
  3. Batch where possible. For server-to-server event ingest, the dashboard-side pipeline is designed around our analytics warehouse batch flushes — prefer one event per meaningful user action over one event per UI click. Most integrations comfortably fit well under 60/min.
  4. Separate read and write keys. Spiky write workloads should not starve steady read dashboards.

Bulk Ingest Patterns

The v1 POST /pixel/events endpoint accepts one event per call. For bulk historical backfills:

our analytics warehouse JWT Pipes

The GET /pixel/metrics/{pipe} endpoint mints a JWT and returns it. The JWT has its own downstream rate limit enforced by our analytics warehouse (typically generous). Our API call to mint counts as one request against the 60/min budget; your subsequent direct calls to our analytics warehouse do not.

Monitoring

We emit structured log lines per rate-limit rejection. If you see unexpected 429s, check Settings › API Keys — the usage meter shows requests in the last hour per key.

Frequently asked questions

What is the Admaxxer Pixel API rate limit?

60 requests per minute per workspace across all /api/v1/* endpoints (including /me). That sustains ~3,600 requests/hour or ~86,400 requests/day. The browser pixel has separate limits — this cap only applies to the public API.

Which response headers tell me my remaining budget?

Every successful response carries X-RateLimit-Limit (60), X-RateLimit-Remaining (count left in the window), and X-RateLimit-Reset (Unix timestamp in seconds at which the window resets). Use Remaining as your steady-state signal; throttle before it hits zero.

How should I handle a 429 response?

Read the Retry-After header (in seconds) and wait at least that long. Add up to 10% jitter to avoid thundering-herd re-sync when many workers share a workspace. The response body uses the standard error envelope with error.code = "rate_limit_exceeded".

Can I raise the limit for a large warehouse backfill?

Yes — email support@admaxxer.com with the workspace ID and your target QPS. Per-workspace ceilings can be raised. For one-time historical loads we typically issue our analytics warehouse direct-append token that bypasses the public API entirely and lets you ship millions of rows in minutes.

Do read keys and write keys share the same 60/minute budget?

The budget is per-workspace, not per-key. Read and write keys for the same workspace share the same 60/minute pool. Use separate keys for separate integrations so revocation is granular, and avoid letting a spiky write workload starve a steady read dashboard.

Does our analytics warehouse-proxied metrics endpoint count against the 60/minute budget?

Yes — each call to GET /pixel/metrics/{pipe} counts as one request against the workspace budget. The endpoint server-side-proxies our analytics warehouse and returns the pipe payload directly, so there is no separate our analytics warehouse call you need to budget for.

Related

Overview · Auth · Endpoints · Errors