Skip to content

Reports

Generate and retrieve AI visibility intelligence reports. Reports include metrics, competitive analysis, wins/losses, and strategic recommendations.

Code example

List Reports
curl -X GET 'https://api.trakkr.ai/get-reports?brand_id=00000000-0000-4000-8000-81f286d10c3c&days=30&limit=20&offset=0' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Response · 200 OK
{
  "reports": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "brand_id": "00000000-0000-4000-8000-81f286d10c3c",
      "report_type": "executive",
      "report_name": null,
      "time_range": "7d",
      "status": "completed",
      "file_url": "https://api.trakkr.ai/get-reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890/download",
      "file_size_bytes": 245000,
      "page_count": 8,
      "error_message": null,
      "created_at": "2026-03-07T10:30:00Z",
      "expires_at": "2026-04-06T10:30:00Z"
    }
  ],
  "pagination": {
    "total": 5,
    "limit": 20,
    "offset": 0,
    "has_more": false
  }
}

Synthetic example. Values are made up.

API key required

60 req/min

List Reports

GET/get-reports

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

Request parameters

brand_idstring | nullqueryOptional

Brand UUID (required for listing)

Format: uuid

report_idstring | nullqueryOptional

Report UUID (for single report detail)

report_typestring | nullqueryOptional

Filter by report type

statusstring | nullqueryOptional

Filter by status

viewstring | nullqueryOptional

View mode: list (default), results, sentiment, mentions_time_series

daysintegerqueryOptional

Historical period (for sentiment and mentions views)

Default: 30 · Minimum: 7 · Maximum: 365

limitintegerqueryOptional

Results per page

Default: 20 · Minimum: 1 · Maximum: 100

offsetintegerqueryOptional

Pagination offset

Default: 0 · Minimum: 0

Responses and errors
200Successful Response

application/json

ReportsListPublicResponse

reportsobject[]Required

Fields in reports

Array of object.

idstringRequired

brand_idstringRequired

report_typestringRequired

report_namestring | nullOptional

time_rangestringOptional

Default: "7d"

statusstringOptional

Default: "pending"

file_urlstring | nullOptional

file_size_bytesinteger | nullOptional

page_countinteger | nullOptional

error_messagestring | nullOptional

created_atstringRequired

expires_atstring | nullOptional

paginationobjectRequired

Pagination metadata.

Fields in pagination

totalintegerRequired

limitintegerRequired

offsetintegerRequired

has_morebooleanRequired

ReportSinglePublicResponse

reportobjectRequired

Single report with full data snapshot.

Fields in report

idstringRequired

brand_idstringRequired

report_typestringRequired

report_namestring | nullOptional

time_rangestringOptional

Default: "7d"

statusstringOptional

Default: "pending"

file_urlstring | nullOptional

file_size_bytesinteger | nullOptional

page_countinteger | nullOptional

error_messagestring | nullOptional

created_atstringRequired

expires_atstring | nullOptional

report_dataobject | nullOptional

ReportResultsResponse

report_idstringRequired

brand_idstringRequired

datestringRequired

visibilitynumberRequired

presencenumberRequired

average_ranknumber | nullOptional

model_scoresobject[]Required

Fields in model_scores

Array of object.

modelstringRequired

visibilitynumberRequired

presencenumberRequired

mentionsintegerOptional

Default: 0

prompt_scoresobject[]Required

Fields in prompt_scores

Array of object.

prompt_textstringRequired

visibilitynumberRequired

presencenumberRequired

average_ranknumber | nullOptional

ReportSentimentResponse

brandobjectRequired

distributionobjectRequired

Fields in distribution

positiveintegerOptional

Default: 0

neutralintegerOptional

Default: 0

negativeintegerOptional

Default: 0

mixedintegerOptional

Default: 0

trendobject[]Required

Fields in trend

Array of object.

datestringRequired

avg_sentimentnumber | nullOptional

period_daysintegerRequired

ReportMentionsResponse

brandobjectRequired

time_seriesobject[]Required

Fields in time_series

Array of object.

datestringRequired

mentionsintegerRequired

models_mentionedintegerOptional

Default: 0

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 paginated reports for a brand, ordered by creation date (newest first). Use report_id to fetch a single report with its full data snapshot.

Report views

view=list lists reports or returns one report when report_id is supplied. Use view=results with report_id for a prompt and model breakdown.view=sentiment and view=mentions_time_series return brand history. For those two history views, days defaults to 30 and accepts 7 to 365.

Sentiment history
curl -X GET 'https://api.trakkr.ai/get-reports?brand_id=00000000-0000-4000-8000-81f286d10c3c&view=sentiment&days=30&limit=20&offset=0' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"

Get Report Detail

When report_id is provided, returns a single report including the full report_data snapshot with metrics, competitive analysis, and recommendations.

Get Report Detail
curl -X GET 'https://api.trakkr.ai/get-reports?report_id=a1b2c3d4-e5f6-7890-abcd-ef1234567890&days=30&limit=20&offset=0' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
The report_data field is only included in single-report responses. List responses omit it to keep payloads small.

Download Report PDF

GET/get-reports/{report_id}/download

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

Request parameters

report_idstringpathRequired

Responses and errors
200PDF report

application/pdf

string. Format: binary

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

Downloads PDF bytes directly. This endpoint checks the API key and current brand access on every request, so command-line and server clients do not need JavaScript or a browser URL fragment.

Download PDF
curl --fail -o 'trakkr-report.pdf' -X GET 'https://api.trakkr.ai/get-reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890/download' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
The file_url and generation responsedownload_url point to this binary endpoint. Send the same API key on the download request. The URL is not a bearer link.

Generate Report

POST/get-reports

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

JSON request body (required)

brand_idstringRequired

Format: uuid

report_typestringOptional

Default: "executive" · Options: "executive", "weekly", "full"

time_rangestringOptional

Default: "7d" · Options: "7d", "14d", "30d"

Responses and errors
200Successful Response

application/json

report_idstringRequired

statusstringRequired

download_urlstring | nullOptional

errorstring | nullOptional

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

Generates a new AI intelligence report for the brand. The report is created synchronously and includes visibility metrics, competitive analysis, wins/losses, and AI-generated strategic recommendations.

Generate Report
curl -X POST 'https://api.trakkr.ai/get-reports' \
  -H "Authorization: Bearer $TRAKKR_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"brand_id":"00000000-0000-4000-8000-81f286d10c3c","report_type":"executive","time_range":"7d"}'
Generate Response · 200 OK
{
  "report_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "completed",
  "download_url": "https://api.trakkr.ai/get-reports/a1b2c3d4-e5f6-7890-abcd-ef1234567890/download"
}

Synthetic example. Values are made up.

Report generation is computationally expensive and rate-limited to 5 requests per minute. Reports expire after 30 days.

Report Types

TypeDescription
executiveConcise executive summary with key metrics and actions
weeklyWeekly performance review with trend analysis
fullComprehensive report with all sections and detailed data