Developer · Pixel API

Pixel API overview and quickstart

Pull the website analytics you see in Admaxxer — and send goals, payments and events from your own server — over a small JSON API at https://admaxxer.com/api/v1. Every request carries a workspace API key and only ever sees that workspace's data.

REST + JSON · Bearer API keys · One workspace per key · 60 requests per minute

What you can do with it

Base URL

https://admaxxer.com/api/v1

Pixel API paths sit under /pixel/ — for example https://admaxxer.com/api/v1/pixel/websites. Requests and responses are JSON; send Content-Type: application/json on any request with a body. The API version is part of the path.

Authentication

Send a workspace API key on every request: Authorization: Bearer wk_…. Create keys in Settings › API Keys. A key belongs to one workspace and can only do what its scopes allow — pixel:read to read, pixel:write to send data. Your workspace always comes from the key; there is no workspace parameter. Full details: Authentication.

Keep keys on your server

Anyone who has a key can use it. Call the API from your backend or a scheduled job — never from browser JavaScript or an app bundle — and keep keys out of code repositories.

Your first request

The examples read your key from an environment variable, so you set it once instead of pasting it into every command:

export ADMAXXER_API_KEY="wk_your_key_here"

1. Check the key

GET /me works with any valid key, whatever its scopes. It returns the key's name, its scopes and the workspace it belongs to:

curl https://admaxxer.com/api/v1/me \
  -H "Authorization: Bearer $ADMAXXER_API_KEY"
{
  "apiKey": {
    "id": "…",
    "name": "warehouse-etl",
    "scopes": ["pixel:read"]
  },
  "workspace": { "id": "…" }
}

2. Find your website ID

curl https://admaxxer.com/api/v1/pixel/websites \
  -H "Authorization: Bearer $ADMAXXER_API_KEY"

Each website in data has a websiteId that starts with admx_ — the same value as data-website-id on your pixel script tag. Report and write calls take it as website_id.

3. Pull a report

curl "https://admaxxer.com/api/v1/pixel/analytics/pages?website_id=admx_your_site_id&from_date=2026-09-01&to_date=2026-09-30" \
  -H "Authorization: Bearer $ADMAXXER_API_KEY"

That returns your top pages for September with views, sessions, bounces, bounce rate and average time. Every endpoint and parameter is listed on Endpoints.

How responses look

A successful call returns a status, the payload in data, and a meta.request_id that identifies the response:

{
  "status": "success",
  "data": { "…": "…" },
  "meta": { "request_id": "req_4f8e2c1a-…" }
}

Limits at a glance

What the API doesn't do

In this reference

Frequently asked questions

Q: Is the API data the same as my dashboard?

Yes — the report endpoints read the same tracked data with the same report logic the dashboard uses. The API simply returns the rows instead of drawing them.

Q: Where do I find my website ID?

It's the data-website-id value on your pixel script tag (it starts with admx_), and it's returned as websiteId by GET /pixel/websites.

Q: Can I call the API from the browser?

Don't — a key in browser code or an app bundle can be copied by anyone who loads it. Call the API from your server. To connect a browser visitor to a server-side event, read the visitor ID in the browser with window.admaxxer.getVisitorId() and send it to your server along with the order or sign-up.

Q: Which permissions does my key need?

pixel:read covers every GET endpoint. Add pixel:write only for keys that send goals, payments, events or identities, or manage saved segments. See Authentication.

Q: Why is a report empty?

Usually one of three things: the website had no tracked traffic in that range; the range starts before your plan's data retention, so it begins later than you asked; or a filter matched nothing (filter values are case-sensitive). A website_id from another workspace returns 403 forbidden rather than an empty report.