Skip to main content
All endpoints require a bearer token and are scoped to your own campaigns. A campaign is addressed by its uuid (returned as uuid); requesting one you don’t own returns 404. Base URL: https://app.theaitracker.com/api/v1

Current user

Confirms which account a key belongs to and which plan it’s on — the quickest way to check a key works.

Campaigns

List campaigns

Paginated (page, per_page). Start here — every other endpoint needs a campaign uuid.

Get a campaign

The same fields as the list, plus a visibility_summary for the last 30 days.
score is the visibility percentage (0–100), computed exactly as in the app: a run where your brand is linked counts as 1.0, a run where it’s only mentioned counts as 0.5.

Visibility

integer
default:"30"
Window for the overall summary (1–365).
date
Start date for the per-provider breakdown (YYYY-MM-DD).
date
End date for the per-provider breakdown.
by_provider only contains platforms your plan actually runs. On Starter that’s ChatGPT (openai) alone — see Plans and billing.

Prompts

List prompts

Paginated. Each prompt carries a runs_count.

Create prompts

The only write endpoint. Adds one prompt, or several in a single request, and returns 201 with the created prompts.
string | string[]
required
One prompt, or several as a list — one per line. Leading 1., 2), (3), - or * markers are stripped. Pass a JSON array instead when a prompt itself contains newlines; array elements are never split.
string
required
Topic to file the prompts under, applied to the whole request. Matched case-insensitively against the campaign’s topics and created if there is no match.
string
default:"us"
Two-letter market code, e.g. us, gb.
string[]
Up to 8 tags, max 24 characters each. Lowercased on save.
The response carries the created prompts in data, with meta explaining what happened to the batch:
Limits. Max 2,000 characters per prompt and 50 prompts per request. Over-long prompts are skipped and reported in meta.skipped rather than failing the rest; a request where every prompt is over-long returns 422 and creates nothing.
A campaign only tracks a capped number of active prompts. Anything past the cap is still created but left inactive and will not run — check meta.inactive_count and meta.remaining_slots. Nothing is silently dropped, but nothing beyond the cap starts running either. See the active prompt cap.

Prompt runs

The raw per-provider answers over time — the actual text each AI platform returned, and the sources it cited.
integer
Limit to a single prompt.
string
Filter by provider (e.g. openai, gemini, perplexity, grok).
date
date
Answers are long. Filter by prompt_id and a date range rather than paging through everything — and remember per_page maxes out at 100.

Sentiment

string
Filter by AI platform (openai, gemini, perplexity).
date
date

Traffic

Analytics and Search Console sessions per day, source and medium. Returns nothing until the campaign has a connected integration.
date
date
string
string