{"openapi":"3.0.0","paths":{"/v1/health":{"get":{"description":"Check API availability and connectivity. Returns the current server timestamp.","operationId":"PublicHealthController_getHealth_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfHealthResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/HealthResponse"}},"required":["item"]}}}}},"summary":"Check API health","tags":["Health"]}},"/v1/projects":{"get":{"description":"List all projects belonging to your organization. Returns project metadata and the most recent completed monitoring timestamp for each project.","operationId":"PublicProjectsController_listProjects_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ListResponseOfProjectListItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProjectListItemResponse"}}},"required":["items"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"List all projects","tags":["Projects"]}},"/v1/projects/{projectId}":{"get":{"description":"Get detailed information about a specific project, including per-dimension monitoring freshness and AI monitoring prompts.","operationId":"PublicProjectsController_getProject_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfProjectDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/ProjectDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get project details","tags":["Projects"]}},"/v1/projects/{projectId}/competitors":{"get":{"description":"List all competitors monitored within a project. Includes the project's own domain (marked with `isOwn: true`) and all added competitor domains.","operationId":"PublicCompetitorsController_listCompetitors_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ListResponseOfCompetitorListItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CompetitorListItemResponse"}}},"required":["items"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"List project competitors","tags":["Competitors"]}},"/v1/projects/{projectId}/competitors/{competitorId}":{"get":{"description":"Get detailed information about a specific competitor within a project, including monitored page URLs (homepage and pricing).","operationId":"PublicCompetitorsController_getCompetitor_v1","parameters":[{"name":"competitorId","required":true,"in":"path","description":"Competitor ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfCompetitorDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/CompetitorDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get competitor details","tags":["Competitors"]}},"/v1/projects/{projectId}/tech-trust":{"get":{"description":"Get the latest tech & trust profile data for all competitors in a project. Returns security headers, trust signals, technology stack, robots.txt analysis, and DNS infrastructure.","operationId":"PublicTechTrustController_getTechTrustDashboard_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfTechTrustDashboardResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/TechTrustDashboardResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get latest tech & trust data","tags":["Tech & Trust Profile"]}},"/v1/projects/{projectId}/tech-trust/history":{"get":{"description":"Get paginated history of tech & trust monitoring runs for a project. Each entry includes run timing and summary statistics.","operationId":"PublicTechTrustController_getTechTrustHistory_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfTechTrustHistoryItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/TechTrustHistoryItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get tech & trust run history","tags":["Tech & Trust Profile"]}},"/v1/projects/{projectId}/tech-trust/history/{runId}":{"get":{"description":"Get full tech & trust data for a specific historical monitoring run, including per-competitor security headers, trust signals, technology stack, robots.txt, and DNS infrastructure.","operationId":"PublicTechTrustController_getTechTrustRunDetail_v1","parameters":[{"name":"runId","required":true,"in":"path","description":"Run ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfTechTrustRunDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/TechTrustRunDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get tech & trust data for a specific run","tags":["Tech & Trust Profile"]}},"/v1/projects/{projectId}/content":{"get":{"description":"Get the latest content intelligence data for all competitors in a project. Returns URL counts, content categorization, strategic URL analysis, and competitive gap assessment. Use this to understand the content landscape across competitors.","operationId":"PublicContentController_getContentDashboard_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfContentDashboardResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/ContentDashboardResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get latest content intelligence data","tags":["Content Intelligence"]}},"/v1/projects/{projectId}/content/history":{"get":{"description":"Get paginated history of content intelligence monitoring runs for a project. Each entry includes run timing and summary statistics with gap analysis.","operationId":"PublicContentController_getContentHistory_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfContentHistoryItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ContentHistoryItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get content intelligence run history","tags":["Content Intelligence"]}},"/v1/projects/{projectId}/content/history/{runId}":{"get":{"description":"Get full content intelligence data for a specific historical monitoring run, including per-competitor URL counts, content categorization, and strategic URL metrics.","operationId":"PublicContentController_getContentRunDetail_v1","parameters":[{"name":"runId","required":true,"in":"path","description":"Run ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfContentRunDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/ContentRunDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get content intelligence data for a specific run","tags":["Content Intelligence"]}},"/v1/projects/{projectId}/content/changelog":{"get":{"description":"Get paginated changelog of detected URL changes across competitor sitemaps. Each item shows numeric counts per category plus up to 3 sample URLs per category by default — safe for any token budget. Supports filtering by `competitorId` and `category` query parameters. Pass `allUrlsPerCategory=true` for the full URL list per category (warning: high-activity competitors can produce large responses; combine with filters to scope, and check the `truncated` flag in the response — when true, the byte cap fired and items/URLs were trimmed).","operationId":"PublicContentController_getContentChangelog_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"competitorId","required":false,"in":"query","description":"Filter by competitor ID","schema":{"example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"category","required":false,"in":"query","description":"Filter by content category (blog, docs, tools, landing, legal, caseStudies, comparison, integrations, changelog, webinars, other)","schema":{"example":"blog","type":"string"}},{"name":"allUrlsPerCategory","required":false,"in":"query","description":"By default each item returns up to 3 sample URLs per category. Set true to return the full URL list per category. High-activity competitors can produce large responses — combine with `category` and `competitorId` filters to scope. Subject to an internal byte cap; check `truncated` in the response.","schema":{"example":false,"type":"boolean"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfContentChangelogItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ContentChangelogItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"},"truncated":{"type":"boolean","description":"True when the verbose-mode byte cap fired and items/URLs were trimmed to fit the response budget. Refine your query with category/competitorId filters when seen. Always false in default mode.","example":false}},"required":["items","pagination","truncated"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get content changelog","tags":["Content Intelligence"]}},"/v1/projects/{projectId}/positioning":{"get":{"description":"Get the latest positioning data for all competitors in a project. Returns homepage messaging, value propositions, CTAs, target audience, and competitive messaging analysis.","operationId":"PublicPositioningController_getPositioningDashboard_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfPositioningDashboardResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/PositioningDashboardResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get latest positioning data","tags":["Positioning"]}},"/v1/projects/{projectId}/positioning/history":{"get":{"description":"Get paginated history of positioning monitoring runs for a project. Each entry includes run timing and summary statistics with messaging gap analysis.","operationId":"PublicPositioningController_getPositioningHistory_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfPositioningHistoryItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PositioningHistoryItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get positioning run history","tags":["Positioning"]}},"/v1/projects/{projectId}/positioning/history/{runId}":{"get":{"description":"Get full positioning data for a specific historical monitoring run, including per-competitor homepage messaging, value propositions, CTAs, and audience data.","operationId":"PublicPositioningController_getPositioningRunDetail_v1","parameters":[{"name":"runId","required":true,"in":"path","description":"Run ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfPositioningRunDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/PositioningRunDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get positioning data for a specific run","tags":["Positioning"]}},"/v1/projects/{projectId}/pricing":{"get":{"description":"Get the latest pricing intelligence data for all competitors in a project. Returns structured pricing plans, free tier availability, billing options, enterprise pricing, promotions, and competitive gap analysis.","operationId":"PublicPricingController_getPricingDashboard_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfPricingDashboardResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/PricingDashboardResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get latest pricing intelligence data","tags":["Pricing Intelligence"]}},"/v1/projects/{projectId}/pricing/history":{"get":{"description":"Get paginated history of pricing intelligence monitoring runs for a project. Each entry includes run timing and summary statistics with pricing gap analysis.","operationId":"PublicPricingController_getPricingHistory_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfPricingHistoryItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PricingHistoryItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get pricing run history","tags":["Pricing Intelligence"]}},"/v1/projects/{projectId}/pricing/history/{runId}":{"get":{"description":"Get full pricing intelligence data for a specific historical monitoring run, including per-competitor pricing plans, billing options, free tiers, and enterprise pricing.","operationId":"PublicPricingController_getPricingRunDetail_v1","parameters":[{"name":"runId","required":true,"in":"path","description":"Run ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfPricingRunDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/PricingRunDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get pricing data for a specific run","tags":["Pricing Intelligence"]}},"/v1/projects/{projectId}/ai-visibility":{"get":{"description":"Get the latest AI visibility data for a project. Returns AI Visibility Scores, mention rates, and per-provider breakdowns for all competitors found across ChatGPT, Claude, and Gemini. Use this to understand how AI models perceive and recommend your brand vs competitors.","operationId":"PublicAiVisibilityController_getAiVisibilityDashboard_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfAiVisibilityDashboardResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/AiVisibilityDashboardResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get latest AI visibility data","tags":["AI Visibility"]}},"/v1/projects/{projectId}/ai-visibility/history":{"get":{"description":"Get paginated history of AI visibility checks for a project. Each entry includes check timing and summary statistics with customer metrics, top competitor, and competitor rankings.","operationId":"PublicAiVisibilityController_getAiVisibilityHistory_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfAiVisibilityHistoryItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AiVisibilityHistoryItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get AI visibility check history","tags":["AI Visibility"]}},"/v1/projects/{projectId}/ai-visibility/history/{checkId}":{"get":{"description":"Get full AI visibility data for a specific historical check, including per-competitor rankings across all three AI providers with mention rates and AI Visibility Scores.","operationId":"PublicAiVisibilityController_getAiVisibilityCheckDetail_v1","parameters":[{"name":"checkId","required":true,"in":"path","description":"Check ID","schema":{"example":"507f1f77bcf86cd799439012","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfAiVisibilityCheckDetailResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/AiVisibilityCheckDetailResponse"}},"required":["item"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get AI visibility data for a specific check","tags":["AI Visibility"]}},"/v1/projects/{projectId}/ai-visibility/trend":{"get":{"description":"Get AI visibility trend data over time for chart visualization. Returns time-series data points with customer and top competitor mention rates and AI Visibility Scores. Optionally filter by date range or specific AI provider — the provider filter applies to mention rates only; the AI Visibility Score is a single weighted composite across all providers, so customerAiScore/topCompetitorAiScore are null when a provider filter is applied. Returns up to 200 data points — use dateFrom/dateTo to narrow the range for longer histories.","operationId":"PublicAiVisibilityController_getAiVisibilityTrend_v1","parameters":[{"name":"dateFrom","required":false,"in":"query","description":"Start date for trend data (ISO-8601)","schema":{"example":"2026-01-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","description":"End date for trend data (ISO-8601)","schema":{"example":"2026-03-15","type":"string"}},{"name":"provider","required":false,"in":"query","description":"Filter by AI provider. Omit to get aggregated trend across all providers.","schema":{"$ref":"#/components/schemas/AiProvider"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ListResponseOfAiVisibilityTrendDataPointResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AiVisibilityTrendDataPointResponse"}}},"required":["items"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get AI visibility trend data","tags":["AI Visibility"]}},"/v1/projects/{projectId}/alerts":{"get":{"description":"Get paginated competitive intelligence alerts for a project. Returns alerts generated when monitoring detects meaningful changes in competitor activity — such as pricing restructures, content strategy shifts, or technology stack changes. Supports filtering by monitoring dimension (tech-trust, content, positioning, pricing, ai-visibility), severity level (critical, high, medium, info), and specific competitor. Alerts are sorted by creation date (newest first).","operationId":"PublicAlertsController_listAlerts_v1","parameters":[{"name":"page","required":false,"in":"query","description":"Page number (1-indexed)","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"maximum":100,"default":20,"example":20,"type":"number"}},{"name":"dimension","required":false,"in":"query","description":"Filter by monitoring dimension (tech-trust, content, positioning, pricing, ai-visibility)","schema":{"example":"pricing","type":"string","enum":["tech-trust","content","positioning","pricing","ai-visibility"]}},{"name":"severity","required":false,"in":"query","description":"Filter by alert severity (critical, high, medium, info)","schema":{"example":"critical","type":"string","enum":["critical","high","medium","info"]}},{"name":"competitorId","required":false,"in":"query","description":"Filter by competitor ID","schema":{"example":"507f1f77bcf86cd799439011","type":"string"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"PaginatedResponseOfAlertListItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AlertListItemResponse"}},"pagination":{"$ref":"#/components/schemas/PaginationMeta"}},"required":["items","pagination"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"List project alerts","tags":["Alerts"]}},"/v1/projects/{projectId}/schedules":{"get":{"description":"Get monitoring schedules for all dimensions in a project. Returns the current configuration (enabled/disabled, interval) and timing (next run, last run) for each monitoring dimension. Use this to monitor scheduling health, detect stalled dimensions, or build alerting around missed runs.","operationId":"PublicSchedulesController_listSchedules_v1","parameters":[{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ListResponseOfScheduleItemResponse","type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ScheduleItemResponse"}}},"required":["items"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"List monitoring schedules","tags":["Schedules"]}},"/v1/projects/{projectId}/strategic-briefing":{"get":{"description":"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`.\n\nOnly 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.\n\n**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-` 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.\n\n**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).\n\n**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.","operationId":"PublicBriefingController_getStrategicBriefing_v1","parameters":[{"name":"sections","required":false,"in":"query","description":"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- values from the hub diagnosis pointers rather than requesting slots blind — `dimensionHealth` tells you which exist for this edition.","schema":{"example":["hub"],"type":"array","items":{"type":"string","enum":["hub","actions","competitors","deep-ai-visibility","deep-positioning","deep-pricing","deep-content","deep-tech-trust","deep-agent-readiness","deep-ai-ecosystem","deep-customer-voice","deep-funding-capital","deep-hiring-gtm","deep-landscape","deep-product-launches","deep-reliability-status","all"]}}},{"name":"includeCharts","required":false,"in":"query","description":"Include 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.","schema":{"default":false,"example":false,"type":"boolean"}},{"name":"projectId","required":true,"in":"path","description":"Project ID","schema":{"example":"507f1f77bcf86cd799439011"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefingEnvelopeResponse"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiNotFoundErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Get the latest strategic briefing","tags":["Strategic Briefing"]}},"/v1/tools/tech-stack/scans":{"post":{"description":"Start an asynchronous tech-stack detection scan for a public domain. Detects the frontend frameworks, hosting and CDN infrastructure, CMS, analytics and growth tools, and customer engagement services in use. Returns sub-second with `item: { id, status: \"queued\", createdAt, expiresAt }` — poll `GET /v1/tools/tech-stack/scans/{scanId}` until `status` is `completed` or `failed`. Most scans complete in seconds; heavy-render sites can take up to ~90 seconds. Result and error payloads are persisted for 24h, after which the scan auto-deletes and GET returns 404. No project required. Suitable for ad-hoc competitive lookups, integration into onboarding flows, and pre-sales discovery — and the only supported shape for MCP clients (Cursor / Claude Desktop hardcode 60-second tool-call timeouts).","operationId":"PublicTechStackToolController_createScan_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PTTechStackRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfTechStackScanResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/TechStackScanResponse"}},"required":["item"],"example":{"item":{"id":"6638e9a1b2c3d4e5f6a7b8c9","status":"queued","createdAt":"2026-05-17T14:30:00.000Z","expiresAt":"2026-05-18T14:30:00.000Z"}}}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiValidationErrorEnvelope"}}}},"401":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiUnauthorizedErrorEnvelope"}}}},"429":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiRateLimitErrorEnvelope"}}}},"502":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiBadGatewayErrorEnvelope"}}}}},"security":[{"CL-API-Key":[]}],"summary":"Start an async tech-stack scan","tags":["Tools"]}},"/v1/tools/tech-stack/scans/{scanId}":{"get":{"description":"Get the current state of an async tech-stack scan. Returns the scan's lifecycle (`queued` / `running` / `completed` / `failed`) along with `createdAt` and `expiresAt` always, plus `startedAt` once the runner picks it up and `completedAt` once it reaches a terminal state. On `completed` the full canonical scan response is in `item.result` (categorized technology hits with evidence). On `failed` the failure details are in `item.error` with a machine-readable `code` — currently `homepage_fetch_failed` (upstream homepage fetch threw) or `scan_failed` (any other error during scan execution). Scoped to the API key's organization — cross-tenant access, never-existed IDs, expired IDs (24h TTL), and malformed IDs all return 404 `scan_not_found` with an identical envelope to prevent existence-disclosure. Typically sub-second — safe to poll on a 2–5 second interval depending on your timeout budget.","operationId":"PublicTechStackToolController_getScan_v1","parameters":[{"name":"scanId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ItemResponseOfTechStackScanResponse","type":"object","properties":{"item":{"$ref":"#/components/schemas/TechStackScanResponse"}},"required":["item"],"example":{"item":{"id":"6638e9a1b2c3d4e5f6a7b8c9","status":"completed","createdAt":"2026-05-17T14:30:00.000Z","expiresAt":"2026-05-18T14:30:00.000Z","startedAt":"2026-05-17T14:30:00.412Z","completedAt":"2026-05-17T14:30:45.218Z","result":{"domain":"stripe.com","finalUrl":"https://stripe.com/","fetchedAt":"2026-05-17T14:30:45.000Z","totalTechnologies":3,"techStack":[{"name":"Next.js","evidenceCount":2,"evidence":[{"kind":"html","source":"/_next/static/","matched":"