List a brand's report artifacts
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.
/api/brands/{brand_id}/reports/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
Query Parameters
Filter to artifacts scoped to this category (brand-wide artifacts always included).
1-based page number.
Rows per page. Server-side default/cap vary per endpoint.
Filter by report type (accepts type as an alias).
Response Body
application/json
curl -X GET "https://example.com/api/brands/0/reports/"{ "results": [ { "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" } ], "permissions": { "canViewReports": true, "canGenerate": true, "canGenerateFreeReport": true, "hasFreeReport": true, "reportsReady": true, "isDemo": true }, "count": 0, "next": "string", "previous": "string"}List a brand's recommendations GET
The brand's full active recommendation set (every proposed recommendation, not just the acted-on subset). Each recommendation includes its rationale (`why`), the suggested action, expected impact, measurement plan, score and score breakdown, and lifecycle timestamps (`implementedAt` is the shipped date). Each also nests `artifacts` — the generated content produced for it, including the full `body` — and `outcomes` — the measured before/after metric values with their baselines. Requires a Pro or higher plan.
Get a report artifact (brand-scoped) GET
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.