Skip to Content
DevelopersAPI ReferenceStrategic Briefing

Strategic Briefing

REST endpoints for Strategic Briefing. Base URL https://api.competlab.com; every request needs a CL-API-Key header (see Authentication). Responses wrap in { item } or { items }; errors in { error }.

Get the latest strategic briefing

GET/v1/projects/{projectId}/strategic-briefing

Get the latest finished strategic briefing for a project — the synthesized, as-of competitive read (what changed, what it means, what to do). This is the ANALYZED briefing; for the raw monitoring data use the per-dimension dashboards (e.g. /pricing), and for the monitored-competitor roster use /competitors.

Only the most recent FINISHED edition is returned (never an in-progress one). meta.availability is the state to branch on: ready (a briefing is returned), ready-refreshing (a briefing is returned and a newer edition is being generated right now), preparing (the first edition is still being generated — item is null), or none (no briefing yet). A missing or non-accessible project returns 404 project_not_found; the briefing lifecycle itself never 404s.

Sections — lean by default. sections selects what to return and defaults to ["hub"] — the executive digest AND the navigation map. Each hub diagnosis row carries a deepDive pointer naming the dimension to read next; prefix it with deep- to form the section value (a pointer of ai-visibility → request sections=deep-ai-visibility). Valid sections: hub, actions, competitors, the thirteen deep-<dimension> deep-dives, or all for the full document. Charts are off by default (includeCharts=false returns each chart’s title + note only); pass includeCharts=true for the full data series.

Always returned, regardless of sections: coverage (methodology and honest-degradation caveats for this edition — read these before quoting any figure) and dimensionHealth (per-dimension present/absent, so a skipped dimension is never read as an empty finding).

Reading the numbers: the AI Visibility Score is 0–100 (higher is better); an AI rank is ordinal (lower is better); action impact is 1–4 (higher is more critical); action effort is bucketed as effortMinutes (<30 | 30-120 | >120). Briefings refresh approximately every 30 days.

Returns · { item, meta, coverage, dimensionHealth }

Path parameters

NameTypeDescription
projectIdstringProject ID

Query parameters

NameTypeRequiredDescription
sectionsarray<string>Which sections to return. Defaults to [“hub”] — the executive digest and navigation map. Pass specific sections to go deeper (e.g. a hub diagnosis pointer of ai-visibility maps to deep-ai-visibility), or all for the full document. Prefer deriving deep-<dimension> values from the hub diagnosis pointers rather than requesting slots blind — dimensionHealth tells you which exist for this edition.
includeChartsbooleanInclude full chart series data. Defaults to false — charts return their title + note only (the heaviest part of a section is the chart series). Pass true for the full data series. Default false.

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/strategic-briefing?sections=hub&includeCharts=false" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY"

Response 200 OK

{ "item": {}, "meta": { "runId": "6a3950c06bda450a1372048e", "briefingDate": "2026-06-22T15:51:24.443Z", "availability": "ready" }, "coverage": {}, "dimensionHealth": { "deep-ai-visibility": "present", "deep-pricing": "absent" } }

Errors

StatusCodeMeaning
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.
404project_not_foundNo project matches the id in the path.

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "api_key_invalid", "message": "Invalid API key", "status": 401 } }
Last updated on