Skip to content

Model performance

Get performance breakdown by AI model. See which models mention your brand most and where you rank.

Code example

Request
curl -X GET 'https://api.trakkr.ai/get-models?brand_id=00000000-0000-4000-8000-81f286d10c3c&days=30&include_trends=false' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "models": [
    {
      "model": "ChatGPT",
      "total_queries": 150,
      "mentions": 68,
      "visibility_rate": 45.3,
      "average_position": 2.1,
      "top_3_rate": 82.4,
      "top_3_count": 56
    },
    {
      "model": "Claude",
      "total_queries": 150,
      "mentions": 72,
      "visibility_rate": 48.0,
      "average_position": 1.9,
      "top_3_rate": 88.9,
      "top_3_count": 64
    },
    {
      "model": "Gemini",
      "total_queries": 150,
      "mentions": 52,
      "visibility_rate": 34.7,
      "average_position": 2.8,
      "top_3_rate": 71.2,
      "top_3_count": 37
    }
  ],
  "summary": {
    "total_results": 450,
    "total_mentions": 192,
    "overall_visibility_rate": 42.7,
    "model_count": 3,
    "period_days": 30
  }
}

Synthetic example. Values are made up.

API key required

60 req/min

Endpoint

GET/get-models

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

daysintegerqueryOptional

Analysis period in days

Default: 30 · Minimum: 7 · Maximum: 365

include_trendsbooleanqueryOptional

Include daily breakdown

Default: false

periodstring | nullqueryOptional

A frozen calendar period instead of a rolling window: a month as YYYY-MM (2026-08) or a quarter as YYYY-Qn (2026-Q3). A closed month is read from the archive frozen when it closed; the open month is computed to date. When period is given, days is ignored and the response carries a `period` block saying exactly what was resolved. Definitions: /get-metrics.

Responses and errors
200Successful Response

application/json

periodobject | nullOptional

Fields in period
PeriodMeta

keystringRequired

kindstringRequired

labelstringRequired

startstringRequired

endstringRequired

statusstringRequired

sourcestringRequired

frozen_atstring | nullOptional

pipeline_versionstring | nullOptional

restated_atstring | nullOptional

restatementsobject[]Optional

Default: []

Fields in restatements

Array of object. Default: []

object. Additional keys are allowed.

coverageobjectOptional

Default: {}

fields_computedstring[]Optional

Default: []

Fields in fields_computed

Array of string. Default: []

string.

fields_missingstring[]Optional

Default: []

Fields in fields_missing

Array of string. Default: []

string.

notesstring[]Optional

Default: []

Fields in notes

Array of string. Default: []

string.

monthsobject | nullOptional

rank_sourcestring | nullOptional

null

null.

modelsobject[]Required

Fields in models

Array of object.

modelstringRequired

total_queriesintegerRequired

Number of report observations for this model, not prompt requests

mentionsintegerRequired

Responses mentioning the tracked brand itself, excluding competitors

visibility_ratenumberRequired

presencenumber | nullOptional

average_positionnumber | nullOptional

top_3_ratenumber | nullOptional

top_3_countinteger | nullOptional

summaryobjectRequired

Models summary.

Fields in summary

total_resultsintegerRequired

total_mentionsintegerRequired

Mentions of the tracked brand itself across models, excluding competitors

overall_visibility_ratenumberRequired

model_countintegerRequired

period_daysintegerRequired

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source

Returns visibility breakdown by AI model. Use this to understand which AI platforms are most likely to recommend your brand.

This endpoint is rate limited to 60 requests per minute per API key. See the Rate Limits page for handling 429 responses.
Frozen periods. Pass period=2026-08 (a month) or period=2026-Q3 (a quarter) to read this endpoint from the monthly archive instead of a rolling window. A closed month answers identically however later it is asked; the open month is computed to date and says status: open. When period is set, days is ignored and the response carries a period block. For a period, total_queries is the number of measured days for the model, presence is filled, and average_position, top_3_rate and top_3_count are null. See Periods.
Try GET /get-models

AI Models Tracked

Trakkr tracks responses from these AI models:

Model NameProvider
ChatGPTOpenAI
ClaudeAnthropic
GeminiGoogle
PerplexityPerplexity AI
DeepSeekDeepSeek AI
GrokxAI
Meta AIMeta
AI OverviewsGoogle Search

Use Cases

  • Identify which AI models recommend your brand most
  • Track model-specific performance over time
  • Optimize content for underperforming models
  • Report on AI visibility by platform