Admaxxer Pixel API — Overview

The Admaxxer Pixel API is a small, opinionated REST surface that exposes the same analytics data powering the in-app dashboards. Everything is scoped to a single workspace by API key — there are no account-wide superuser endpoints.

Base URL

https://admaxxer.com/api/v1/

What the API Does

What the API Deliberately Does Not Do (v1)

Quickstart (curl)

1. Create an API key in Settings › API Keys with the pixel:read scope. Copy the value — it is shown exactly once.

2. Verify the key works:

curl https://admaxxer.com/api/v1/me \
  -H 'Authorization: Bearer YOUR_KEY'

3. List your pixel websites:

curl https://admaxxer.com/api/v1/pixel/websites \
  -H 'Authorization: Bearer YOUR_KEY'

4. Query realtime visitors. The endpoint server-side-proxies our analytics warehouse and returns the pipe rows directly:

curl 'https://admaxxer.com/api/v1/pixel/metrics/the live-visitors feed?website_id=admx_123' \
  -H 'Authorization: Bearer YOUR_KEY'
# → { "status": "success", "data": { "data": [...rows], "meta": [...], "rows": N, "statistics": {...}, "data_status": "ok" }, "meta": { "request_id": "..." } }

5. Ship a server-to-server event (requires pixel:write):

curl -X POST https://admaxxer.com/api/v1/pixel/events \
  -H 'Authorization: Bearer YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"website_id":"admx_123","name":"pageview","path":"/pricing"}'

Design Notes

Versioning & Stability

The API version lives in the path: /api/v1/. Breaking changes bump the major version. Additive, backwards-compatible changes (new fields, new endpoints) ship on v1. Deprecations are announced with at least 90 days of notice in the changelog and via the Deprecation response header.

OpenAPI

A hand-written OpenAPI 3.1 spec is maintained at server/openapi/pixel.yaml in the Admaxxer repository. We publish a copy at /api/v1/openapi.yaml so you can generate clients with your preferred tool (openapi-typescript, openapi-generator, Speakeasy, etc.).

Support

Email support@admaxxer.com with the request_id from the response meta block. Every response carries one.

Frequently asked questions

What is the Admaxxer Pixel API?

A small REST surface mounted at https://admaxxer.com/api/v1/ that exposes the same analytics data powering the in-app dashboards. It lets you mint our analytics warehouse-backed metric responses, list your pixel websites and goals, identify visitors, and ingest events server-to-server. Every endpoint is scoped to a single workspace by API key.

What can the API do versus what is intentionally left out of v1?

It can read all analytics pipes via /pixel/metrics/{pipe}, list websites/goals/alerts/reports/share-links, look up a visitor profile, ingest server-to-server events, and identify visitors. It deliberately cannot create or mutate goals, alerts, reports, or share links (UI-only to keep the blast radius small), return raw visitor PII (emails + phone are SHA-256 hashed at ingest), or run cross-workspace queries (a key is bound to exactly one workspace).

How do I authenticate API requests?

Create an API key in Settings › API Keys with the scopes you need (pixel:read for read endpoints, pixel:write for event ingest and identify). Pass it as Authorization: Bearer YOUR_KEY on every request. See Authentication for full details.

Does the API return our analytics warehouse JWT I have to handle?

No (GL#318). The metrics endpoints server-side-proxy our analytics warehouse with the workspace admin token and return the literal pipe row payload (data, meta, rows, statistics, data_status) wrapped in the standard v1 envelope. Earlier versions returned a short-lived JWT; that pattern was retired because the signing secret was never registered with our analytics warehouse, so every minted token was rejected with 401.

How is the API versioned and how do breaking changes ship?

The version lives in the path (/api/v1/). Breaking changes bump the major version. Additive backwards-compatible changes ship on v1. Deprecations are announced with at least 90 days of notice in the changelog and via the Deprecation response header.

Is there an OpenAPI spec?

Yes. A hand-written OpenAPI 3.1 spec is maintained at server/openapi/pixel.yaml in the Admaxxer repository and published at /api/v1/openapi.yaml. Generate clients with openapi-typescript, openapi-generator, Speakeasy, or any other tool that consumes 3.1.

How do I troubleshoot a failing request?

Every response carries a meta.request_id field. Include it in any support email and the team can pull your exact request out of the server logs. The Errors page lists every error.code string with the cause and fix.

Related

Authentication · Endpoints · Errors · Rate Limits