Get a report artifact (brand-scoped)
Equivalent to `GET /api/reports/{id}/`, additionally enforcing that the artifact belongs to the `{brand_id}` in the path — defense-in-depth against an id-mismatch link.
/api/brands/{brand_id}/reports/{artifact_id}/Personal Access Token (create one from Settings -> API Keys in the dashboard). Send as Authorization: Bearer gr_live_.... An X-API-Key: gr_live_... header (see the apiKeyAuth scheme) is accepted as an equivalent alternative — send ONE of the two, not both.
In: header
Path Parameters
Response Body
application/json
curl -X GET "https://example.com/api/brands/0/reports/0/"{ "id": "string", "brandId": "string", "categoryId": "string", "reportType": "string", "reportTypeLabel": "string", "status": "string", "format": "string", "createdAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "downloadUrl": "string", "viewUrl": "string", "errorMessage": "string", "agentName": "", "agentVersion": "", "costUsd": "string", "kgGenerationJob": "string", "evidenceRefsCount": 0, "isBranded": true, "abortedReason": "string", "generatedByEmail": "string"}List a brand's report artifacts GET
List artifacts for a brand. Filters: ?reportType=, ?categoryId=. Response shape (paginator-augmented): { "count": int, "next": url|null, "previous": url|null, "results": ReportArtifact[], "permissions": { "canViewReports": bool, "canGenerate": bool, "canGenerateFreeReport": bool, "hasFreeReport": bool, "reportsReady": bool, "isDemo": bool } } `permissions` is appended to the paginator response so the frontend can render the upsell card (when canViewReports=False) and decide whether to show the Generate cards (canGenerate=False on demo brands or read-only tiers) without a second round-trip.
Get the latest report artifact of a type GET
Latest artifact for a brand of a specific report type. Query string: ?type=<report_type> (required) Tenant + tier gating mirrors :class:`BrandReportsListView`. 404s rather than emitting a sentinel so the frontend can fall through to its "no reports yet" empty state without a separate flag in the response.