Stored in this browser only (localStorage) and sent only to the Adveron API.
No key yet? Create one in the Adveron console under
API keys, then paste it above.
The instructions walk through it,
and the API docs describe every endpoint on this page.
Remix this dashboard
This whole page runs on the Adveron API. Copy the setup prompt and paste it into your AI coding agent (Claude Code, Cursor, Codex…) — it walks the agent through the API and helps you build and customize your own version: your brands, your metrics, your layout.
# Build your own Adveron dashboard
The Adveron API carries what a brand publishes, what it pays for, and what the world says back — brand mentions and creative, category conversation and trends, audience panels, and the Meta, Google and LinkedIn ad libraries. Build the person in front of you their own version of this dashboard: their brands, their metrics, their layout. Don't stop at "here's some JSON".
## 1. Get a key
Create a workspace API key in the Adveron console — app.adveron.com, under API keys — and keep it in the environment rather than in the page:
```bash
export ADVERON_API_KEY="adveron_..."
```
Send it as `Authorization: Bearer $ADVERON_API_KEY`. It is long-lived: keep it out of chat, out of anything you would commit, and out of any HTML you hand back.
## 2. Read the brief before you write code
- Base URL: `[[BASE]]` — bearer only. The key sees what its workspace tracks.
- The brief written for agents is https://adveron.com/llms.txt, and the full spec is `[[BASE]]/v1/openapi.json`. Read the endpoint you are about to call rather than assuming a shape; https://adveron.com/instructions walks the same ground in prose.
- Every response is `{ "data": ..., "meta": ... }`, and errors are `{ "error": { "code", "message", "request_id" } }`. Page on `meta.next_cursor`, handed back as `?cursor=`.
- An unknown query key is rejected, never ignored: `400 validation_failed`.
## 3. Two modes, and the difference decides your design
- Live search needs no setup and costs a credit per call: `GET /v1/discover/{platform}/posts` and its siblings, for one-off "what is happening right now" questions.
- Tracked entities are free to read but must be activated by an org admin: `GET /v1/brands/{id}`, `GET /v1/categories/{id}/trends`, `GET /v1/audiences/{id}/posts` and the rest of those families. Until activation they answer `403 resource_not_activated` — a dashboard should print that as "not activated yet", with a link to the console, never as an error.
- Names are not ids. Resolve first: `GET /v1/brands?q=`, `GET /v1/categories`, `GET /v1/audiences?q=`.
## 4. Build it
Start where this page starts — `GET /v1/context` for the workspace's standing brief, then `GET /v1/balance` — and draw one brand properly before you draw six:
- `GET /v1/brands/{id}/mentions/summary` — what the world said back, with sentiment.
- `GET /v1/brands/{id}/owned-media/summary` and `GET /v1/brands/{id}/paid-media/summary` — what they published, and what they paid for.
- `GET /v1/brands/{id}/paid-media/ads` — the creative itself, which is the panel people stay on.
- `GET /v1/brands/{id}/timeseries` — the same figures over the window, for the trend lines.
Three rules this dashboard learned the hard way, worth keeping:
- Absence is a finding. No active ads, an empty mention window, a platform the brand never posts to — that is intelligence ("they have ceded paid entirely"), not an error and not a blank.
- Never round a failed read down to zero. One brand's call failing is a missing row, drawn as a dash and named underneath, not a zero in a bar chart beside real numbers.
- Disambiguate before you report. A catalog search returns several matches; confirm against the brand's description and categories before putting a number on screen.
## 5. Hand it over
One static HTML file with no build step is enough — this page is one — so there is nothing to install and nothing to run. When you want to show them the original alongside theirs, this dashboard takes its state in the fragment:
https://adveron.com/pulse#tab=pulse&window=30d&brands=Liquid+Death%2CCelsius%2COlipop