{"openapi":"3.1.0","info":{"title":"Lightsage Public API","description":"Public API for Lightsage CLI and external integrations.","version":"1.0.0"},"servers":[{"url":"https://api.lightsage.com","description":"Production"}],"paths":{"/v1/status":{"get":{"tags":["Status"],"summary":"Get Status","description":"Checks API liveness without authentication. Use `GET /v1/auth/status` to validate an API key.","operationId":"status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/status":{"get":{"tags":["Status"],"summary":"Get Auth Status","description":"Validates the API key and returns its organization ID, API key ID, scopes, and authentication status.","operationId":"auth_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"LightsageApiKeyAuth":[]}]}},"/v1/prompts":{"get":{"tags":["Prompts"],"summary":"List Prompts","description":"Returns active and inactive prompts by default. Set `include_archived` to include archived prompts.","operationId":"prompts_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"topic_id","in":"query","required":false,"schema":{"type":"string","title":"Topic Id"},"description":"Topic ID from GET /v1/prompts/config."},{"name":"status","in":"query","required":false,"schema":{"enum":["active","inactive","archived"],"type":"string","title":"Status"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Prompts"],"summary":"Create Prompts","description":"Creates prompts in a batch. Each item is validated independently, so the response can be `200` even when `errors` contains failed items.","operationId":"prompts_create","security":[{"LightsageApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublicPromptsBatchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPromptBatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prompts/config":{"get":{"tags":["Prompts"],"summary":"Retrieve Prompt Config","description":"Returns prompt topics, supported platforms, languages, regions, and organization defaults.","operationId":"prompts_config_retrieve","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPromptConfigResponse"}}}}},"security":[{"LightsageApiKeyAuth":[]}]}},"/v1/prompts/topics":{"post":{"tags":["Prompts"],"summary":"Create Topic","description":"Creates a prompt topic and returns the saved topic.","operationId":"prompts_topics_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptTopicRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPromptTopic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"LightsageApiKeyAuth":[]}]}},"/v1/prompts/topics/{topic_id}":{"patch":{"tags":["Prompts"],"summary":"Update Topic","description":"Renames a prompt topic and returns the updated topic.","operationId":"prompts_topics_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"},"description":"Topic ID from GET /v1/prompts/config."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptTopicRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPromptTopic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Delete Topic","description":"Archives a prompt topic. If it still contains prompts, set `archive_prompts` to archive them too; otherwise the request fails with `400`.","operationId":"prompts_topics_delete","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"},"description":"Topic ID from GET /v1/prompts/config."},{"name":"archive_prompts","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Archive Prompts"},"description":"Archive the topic's remaining prompts so the topic can be deleted."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prompts/{prompt_id}":{"get":{"tags":["Prompts"],"summary":"Retrieve Prompt","description":"Returns a prompt, including its topic, platforms, tags, and lifecycle status.","operationId":"prompts_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","title":"Prompt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPrompt"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Prompts"],"summary":"Update Prompt","description":"Updates a prompt's text, topic, platforms, or lifecycle status. Omitted fields remain unchanged.","operationId":"prompts_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","title":"Prompt Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePublicPromptRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPrompt"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Prompts"],"summary":"Delete Prompt","description":"Archives the prompt and excludes it from normal listings while preserving its historical data.","operationId":"prompts_delete","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","title":"Prompt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/opportunities":{"get":{"tags":["Opportunities"],"summary":"List Opportunities","description":"Returns ranked opportunities from stored prompt visibility results.\n\nThe default window is the previous 30 days. Each opportunity includes an\n`execution_prompt` with the context an AI agent needs to address it. Results\nare recomputed for the requested window, but this endpoint does not run new\nprompts.","operationId":"opportunities_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","title":"Since"},"description":"The relative or absolute window start, such as `30d`, `72h`, or `2026-06-01`. Ignored when `start_date` is set."},{"name":"start_date","in":"query","required":false,"schema":{"type":"string","title":"Start Date"},"description":"Inclusive analysis start date (YYYY-MM-DD)."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","title":"End Date"},"description":"Inclusive analysis end date (YYYY-MM-DD). Defaults to today."},{"name":"category","in":"query","required":false,"schema":{"enum":["quick_wins","growth","refresh","citations"],"type":"string","title":"Category"}},{"name":"opportunity_type","in":"query","required":false,"schema":{"enum":["almost_winning","negative_sentiment","lost_wins","competitor_gaps","untapped_topics","platform_blind_spots","content_gaps","declining_visibility","volatile_visibility","citation_gaps","high_citation_sources","listicle_targets"],"type":"string","title":"Opportunity Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOpportunitiesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks":{"get":{"tags":["Tasks"],"summary":"List Tasks","description":"Returns the organization's persisted daily tasks.\n\nThe response includes per-status counts that are not narrowed by the\n`status` filter. Each task includes an `execution_prompt` with the context\nan AI agent needs to execute it. If `action_date` is omitted, the response\nspans all generation dates. This endpoint does not generate a new batch.","operationId":"tasks_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"action_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Action Date"},"description":"The queue date to read in `YYYY-MM-DD` format. Omit it to include all generation dates."},{"name":"status","in":"query","required":false,"schema":{"enum":["active","todo","new","in_progress","completed","done","dismissed","all"],"type":"string","default":"active","title":"Status"},"description":"The queue slice to return. `active` includes `new` and `in_progress`; only `all` includes `added_to_sheet` and `snoozed` tasks."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTasksResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tasks/{task_id}":{"get":{"tags":["Tasks"],"summary":"Retrieve Task","description":"Returns one persisted task and its execution prompt.","operationId":"tasks_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTask"}}}},"404":{"description":"The task does not exist or is not visible to this API key.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Task not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Tasks"],"summary":"Update Task","description":"Updates the status and delegation of a single daily task.\n\nMove a task through its lifecycle (for example to `in_progress`,\n`done`, or `dismissed`), reprioritize it (`priority`), delegate it to a\nteammate (`assignee_user_id`), or change its `action_type`. Only the fields\nsent are changed; sending `null` clears an assignee or action type. Send at\nleast one field.","operationId":"tasks_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTask"}}}},"404":{"description":"The task does not exist or is not visible to this API key.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Task not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/eval-runs":{"post":{"tags":["Eval Jobs"],"summary":"Start Eval Job","description":"Queues a durable eval job and returns immediately with its polling ID.\n\nFor prompt evals, provide explicit `targets` to override the configured\nprompt targets, or omit `targets` to use the organization's configured\nscheduled prompt targets. For API Performance evals, explicit `targets` or\n`models` override the stored configuration; when omitted, Lightsage uses\nconfigured scheduled targets or legacy configured models. For eval runs\nwith `source_type` set to `custom_evals`, `custom_eval_ids` identify the evals\nto run, while `targets`\nspecify the text models or coding-agent harness and model combinations used\nfor the run. Omit `custom_eval_ids` to use the configured eval set.\n\nFor API Performance source types backed by a source (`rest_api`, `sdk`, or\n`cli`), provide `source_id` from `api-performance sources list`, or omit it\nwhen `operation_ids`, `eval_ids`, or the requested `source_type` identify a\nsingle source. `operation_ids` are Lightsage API Performance operation IDs,\nnot OpenAPI operationId strings.\n\nEvery run is queued through the durable job queue. The response `id` is the\n`eval_run_id` to pass to `GET /v1/eval-runs/{eval_run_id}`. When Lightsage can\ndetermine the runnable work, the response also includes `dispatch_id` and\ninitial queued progress for the child jobs. If neither the request nor the\nsaved configuration identifies runnable work, the request fails with `400`.\nIf the organization lacks the estimated credits, it fails with `402` before\ndispatching work.\nAn environment containing an empty or placeholder credential also fails with\n`400` before any evaluation is dispatched.","operationId":"eval_runs_create","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PublicPromptEvalRunRequest"},{"$ref":"#/components/schemas/PublicApiPerformanceEvalRunRequest"}],"title":"Request","discriminator":{"propertyName":"type","mapping":{"prompts":"#/components/schemas/PublicPromptEvalRunRequest","api_performance":"#/components/schemas/PublicApiPerformanceEvalRunRequest"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalRunResponse"}}}},"400":{"description":"The request is valid, but Lightsage could not determine what to run from either the request payload or saved configuration.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object","required":["detail"]},"examples":{"missing_prompt_targets":{"summary":"No configured prompt targets","value":{"detail":"No configured prompt targets were found for this organization. Configure prompt targets first or choose targets for this run."}},"missing_api_performance_targets":{"summary":"No configured API Performance targets","value":{"detail":"No configured API Performance targets or models were found for cli. Configure eval targets for this source or include targets/models in the request."}},"ambiguous_api_performance_source":{"summary":"API Performance source is ambiguous","value":{"detail":"source_id is required for source_type=cli unless operation_ids or eval_ids identify a single source. Get source IDs from api-performance sources list or api-performance evals list."}},"missing_custom_eval_ids":{"summary":"No configured evals","value":{"detail":"No eval IDs were provided and no configured evals were found for this organization. Configure evals or include custom_eval_ids in the request."}},"invalid_environment_credentials":{"summary":"Environment credentials are missing","value":{"detail":"Environment profile 'Production' contains empty or placeholder values for: ACME_API_KEY. Update those values before running the evaluation."}}}}}},"403":{"description":"One or more requested targets are unavailable on the organization's current plan.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object","required":["detail"]},"example":{"detail":"Your current plan does not include: cursor"}}}},"402":{"description":"The organization does not currently have enough credits for the requested run.","content":{"application/json":{"schema":{"properties":{"detail":{"properties":{"error":{"type":"string","example":"Insufficient credits"},"required":{"type":"number","description":"Usage-based credits the requested run needs."},"balance":{"type":"number","description":"The organization's current credit balance."}},"type":"object","required":["error","required","balance"]}},"type":"object","required":["detail"]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"eval_jobs","x-speakeasy-name-override":"create"}},"/v1/eval-runs/{eval_run_id}":{"get":{"tags":["Eval Jobs"],"summary":"Poll Eval Job","description":"Returns the status and progress of a durable eval job.\n\nThe `eval_run_id` is the `id` returned by `POST /v1/eval-runs`. Progress is\ncomputed from the parent job, its dispatch, and child jobs. Poll this\nendpoint until `status` reaches a terminal value.","operationId":"eval_runs_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"eval_run_id","in":"path","required":true,"schema":{"type":"string","title":"Eval Run Id"},"description":"The ID returned by `POST /v1/eval-runs`, not a result ID from `GET /v1/api-performance/runs`."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalRunResponse"}}}},"404":{"description":"The eval job does not exist or is not visible to this API key.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Eval run not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_jobs","x-speakeasy-name-override":"retrieve"}},"/v1/site-audit/website":{"get":{"tags":["Site Audit"],"summary":"List Website Audit Results","description":"Returns every audited page and its actionable issues.\n\nEach page includes its score, priority, issue descriptions, supporting\nevidence, and recommended fixes. The response is empty when no website\naudit exists. This reads existing data and does not start a crawl.","operationId":"site_audit_website_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicSiteAuditListResponse"}}}},"404":{"description":"No configured company was found for this organization.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object","required":["detail"]},"examples":{"missing_company":{"summary":"Missing company","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}}},"security":[{"LightsageApiKeyAuth":[]}]}},"/v1/site-audit/{site_id}":{"get":{"tags":["Site Audit"],"summary":"Retrieve Site Audit Result","description":"Returns one audited page with its score, priority, supporting evidence, and recommended fixes.","operationId":"site_audit_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"site_id","in":"path","required":true,"schema":{"type":"string","title":"Site Id"},"description":"An ID returned by `GET /v1/site-audit/website`; site IDs cannot be constructed."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicSiteAuditPage"}}}},"404":{"description":"The site result or configured company was not found.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"site_not_found":{"summary":"Unknown site result","value":{"detail":"Site audit result not found"}},"missing_company":{"summary":"Missing company","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/visibility/current":{"get":{"tags":["Visibility"],"summary":"Retrieve Current Visibility","description":"Returns current visibility metrics for the organization.\n\nReturns recommendation score, visibility score, ranks,\nand date-range metadata for the configured primary company. The calculation\nuses currently active prompts only. When the selected range has no\nprompt-run data, metric values are `null` and `has_data` is `false`.","operationId":"visibility_current_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Start Date"},"description":"The inclusive start date in `YYYY-MM-DD` format. Defaults to 30 days before `end_date`. The range may span at most 90 days."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"End Date"},"description":"The inclusive end date in `YYYY-MM-DD` format. Defaults to today."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCurrentVisibilityResponse"}}}},"400":{"description":"The requested date range is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"invalid_date_range":{"summary":"Invalid date range","value":{"detail":"start_date must be on or before end_date"}}}}}},"404":{"description":"No configured company was found for this organization.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"missing_company":{"summary":"Missing company","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/visibility/overview":{"get":{"tags":["Visibility"],"summary":"Retrieve Visibility Overview","description":"Returns the visibility overview for the organization.\n\nThe response contains an aggregate `snapshot`, a daily visibility\n`timeseries`, per-platform visibility and citation series in `by_platform`,\nand a `competitors` comparison. Values are calculated from currently active\nprompts. When the selected range has no prompt-run data, snapshot values are\n`null` and `has_data` is `false`.","operationId":"visibility_overview_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Start Date"},"description":"The inclusive start date in `YYYY-MM-DD` format. Defaults to 30 days before `end_date`. The range may span at most 90 days."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"End Date"},"description":"The inclusive end date in `YYYY-MM-DD` format. Defaults to today."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicVisibilityOverviewResponse"}}}},"400":{"description":"The requested date range is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"invalid_date_range":{"summary":"Invalid date range","value":{"detail":"start_date must be on or before end_date"}}}}}},"404":{"description":"No configured company was found for this organization.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"missing_company":{"summary":"Missing company","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/visibility/citations":{"get":{"tags":["Visibility"],"summary":"List Top Cited Urls","description":"Returns the most cited URLs for GEO analysis and outreach.\n\nReturns URL-level citation counts ranked from most to least cited. Results\ncan be filtered to a single answer platform such as ChatGPT and to owned or\nexternal sources. Counts include only runs from currently active prompts.","operationId":"visibility_citations_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Start Date"},"description":"Optional start date. Defaults to 30 days before the end date."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"End Date"},"description":"Optional end date. Defaults to today."},{"name":"platform","in":"query","required":false,"schema":{"type":"string","title":"Platform"},"description":"Optional platform ID, name, or slug, such as `ChatGPT` or `chatgpt`. Matching is case-insensitive."},{"name":"source_type","in":"query","required":false,"schema":{"enum":["all","owned","external"],"type":"string","default":"all","title":"Source Type"},"description":"Limit results to all cited URLs, owned company URLs, or external URLs."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"},"description":"Maximum number of cited URLs to return."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTopCitedUrlsResponse"}}}},"400":{"description":"The requested date range is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"invalid_date_range":{"summary":"Invalid date range","value":{"detail":"start_date must be on or before end_date"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/visibility/prompts":{"get":{"tags":["Visibility"],"summary":"Retrieve Prompt Visibility Report","description":"Returns the prompt visibility report for the organization.\n\nReturns an overall summary, topic rows, and nested active prompt rows. Each\nrow includes recommendation score, recommendation score rank, visibility score, average\nposition, owned-domain citations, and prompt runs for the selected date\nrange. Active prompts without runs remain in the response with `null`\nvisibility metrics and zero counts.","operationId":"visibility_prompts_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"start_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"Start Date"},"description":"The inclusive start date in `YYYY-MM-DD` format. Defaults to 30 days before `end_date`. The range may span at most 90 days."},{"name":"end_date","in":"query","required":false,"schema":{"type":"string","format":"date","title":"End Date"},"description":"The inclusive end date in `YYYY-MM-DD` format. Defaults to today."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPromptVisibilityReportResponse"}}}},"400":{"description":"The requested date range is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"invalid_date_range":{"summary":"Invalid date range","value":{"detail":"start_date must be on or before end_date"}}}}}},"404":{"description":"No configured company was found for this organization.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"missing_company":{"summary":"Missing company","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-performance/targets":{"get":{"tags":["Eval Setup"],"summary":"List Targets","description":"Returns the supported text-model and coding-agent targets. To schedule a target, copy its `target` object into `targets` on `PUT /v1/api-performance/config` and add `frequency` and `enabled`.","operationId":"api_performance_targets_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPerformanceTargetsResponse"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"eval_setup.targets","x-speakeasy-name-override":"list"}},"/v1/api-performance/runs":{"get":{"tags":["Eval Results"],"summary":"List Eval Results","description":"Returns evaluation results ordered newest first with limit-and-offset pagination. Custom eval results are available from `GET /v1/api-performance/custom-evals/history`. This response contains summary fields only; retrieve an individual result to view prompts, output, logs, and tool calls.","operationId":"api_performance_runs_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"type":"string","title":"Since"},"description":"Relative window such as 7d or 72h, or an ISO 8601 date or timestamp."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"},"description":"Maximum number of matching results to return per page."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"},"description":"Number of matching results to skip."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvalRunsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_results","x-speakeasy-name-override":"list"}},"/v1/api-performance/runs/{run_id}":{"get":{"tags":["Eval Results"],"summary":"Retrieve Eval Result","description":"Returns one evaluation result, including the prompts, output, logs, and tool calls omitted from the list response. Custom eval results are supported.","operationId":"api_performance_runs_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"},"description":"A result ID, not an eval job ID."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvalRunResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_results","x-speakeasy-name-override":"retrieve"}},"/v1/api-performance/diagnose":{"post":{"tags":["Eval Results"],"summary":"Diagnose Eval Results","description":"Analyzes recorded evaluation results in the requested window and returns ranked failure patterns. This endpoint does not start new evaluations.","operationId":"api_performance_diagnose","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnoseEvalRunsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagnoseEvalRunsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"eval_results","x-speakeasy-name-override":"diagnose"}},"/v1/api-performance/config":{"get":{"tags":["Eval Setup"],"summary":"Retrieve Eval Config","description":"Returns the saved evaluation configuration. Secret values are never returned; environment variables appear by name only.","operationId":"api_performance_config_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"type":"string","title":"Source Id"},"description":"Source ID from GET /v1/api-performance/sources. An unknown ID returns an empty configuration, not an error."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalConfigResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.config","x-speakeasy-name-override":"retrieve"},"put":{"tags":["Eval Setup"],"summary":"Update Eval Config","description":"Updates and returns the saved evaluation configuration. Environment variable values are write-only, and valid target combinations come from `GET /v1/api-performance/targets`.","operationId":"api_performance_config_update","security":[{"LightsageApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalConfigUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalConfigResponse"}}}},"403":{"description":"One or more configured targets are unavailable on the organization's current plan.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"example":{"detail":"Your current plan does not include: cursor"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.config","x-speakeasy-name-override":"update"}},"/v1/api-performance/sources":{"get":{"tags":["Eval Setup"],"summary":"List Sources","description":"Returns the configured API Performance sources and their evaluation targets. Set `include_system` to include Lightsage-managed sources.","operationId":"api_performance_sources_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"include_system","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include System"},"description":"Include Lightsage-managed sources such as the built-in `use_cases` source."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPerformanceSourcesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.sources","x-speakeasy-name-override":"list"}},"/v1/api-performance/skills":{"get":{"tags":["Eval Setup"],"summary":"List Skills","description":"Returns enabled, non-stale skills by default.","operationId":"api_performance_skills_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"type":"string","title":"Source Id"},"description":"Source ID from GET /v1/api-performance/sources."},{"name":"skill_source_id","in":"query","required":false,"schema":{"type":"string","title":"Skill Source Id"}},{"name":"enabled","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Enabled"},"description":"Filter by enabled state. Defaults to true."},{"name":"stale","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Stale"},"description":"Filter by stale state. Defaults to false."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPerformanceSkillsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.skills","x-speakeasy-name-override":"list"}},"/v1/api-performance/evals":{"get":{"tags":["Eval Configuration"],"summary":"List Eval Configurations","description":"Returns all eval configurations matching the optional source and enabled filters. Configurations for user-created evals are included when `source_id` is omitted and have `source_id` set to null.","operationId":"api_performance_evals_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"type":"string","title":"Source Id"},"description":"Source ID from GET /v1/api-performance/sources. Setting it excludes configurations for user-created evals, which have no source."},{"name":"enabled","in":"query","required":false,"schema":{"type":"boolean","title":"Enabled"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalDefinitionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"api_evals","x-speakeasy-name-override":"list"}},"/v1/api-performance/evals/{eval_id}":{"get":{"tags":["Eval Configuration"],"summary":"Retrieve Eval Configuration","description":"Returns one eval configuration, including its prompt, graders, source, and runtime settings.","operationId":"api_performance_evals_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"eval_id","in":"path","required":true,"schema":{"type":"string","title":"Eval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalDefinition"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"api_evals","x-speakeasy-name-override":"retrieve"},"patch":{"tags":["Eval Configuration"],"summary":"Update Eval Configuration","description":"Updates an eval configuration and returns the saved version. Omitted fields retain their existing values. Configurations with `source_id` set to null belong to user-created evals and can also be updated through the eval's `eval` field.","operationId":"api_performance_evals_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"eval_id","in":"path","required":true,"schema":{"type":"string","title":"Eval Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalDefinitionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicEvalDefinition"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"api_evals","x-speakeasy-name-override":"update"}},"/v1/api-performance/custom-evals":{"get":{"tags":["Evals"],"summary":"List Evals","description":"Returns all user-created evals and their eval configurations.","operationId":"api_performance_custom_evals_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEvalsResponse"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"custom_evals","x-speakeasy-name-override":"list"},"post":{"tags":["Evals"],"summary":"Create Eval","description":"Creates an eval and saves its eval configuration. This endpoint does not start an eval job. To run it, call `POST /v1/eval-runs` with `source_type` set to `custom_evals`, include the returned ID in `custom_eval_ids`, and provide `targets` or use saved target configuration.","operationId":"api_performance_custom_evals_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEvalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEval"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"custom_evals","x-speakeasy-name-override":"create"}},"/v1/api-performance/custom-evals/history":{"get":{"tags":["Eval Results"],"summary":"List Eval History","description":"Returns eval result history with limit-and-offset pagination, filtering, and sorting. Runs that ended because of infrastructure failures are excluded.","operationId":"api_performance_custom_evals_history_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"custom_eval_id","in":"query","required":false,"schema":{"type":"string","title":"Custom Eval Id"},"description":"Filter results to one eval from GET /v1/api-performance/custom-evals. This filter also limits the target and category facet values."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":25,"title":"Limit"},"description":"Maximum number of results to return."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"},"description":"Number of matching results to skip."},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200,"title":"Search"},"description":"Case-insensitive substring match on prompt, description, category, target labels, and prompt_sent."},{"name":"result_filter","in":"query","required":false,"schema":{"enum":["all","passed","failed"],"type":"string","default":"all","title":"Result Filter"},"description":"Filter returned results by pass or fail status. Facet counts remain based on all results for the selected evals."},{"name":"target_key","in":"query","required":false,"schema":{"type":"string","title":"Target Key"},"description":"Filter by a public target key returned in `facets.targets`."},{"name":"category_id","in":"query","required":false,"schema":{"type":"string","title":"Category Id"},"description":"Filter by a category ID returned in `facets.categories`."},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["time","use_case","target","result","score","tool_calls","latency"],"type":"string","default":"time","title":"Sort By"},"description":"Field used to order results. `time` uses `run_at`, `use_case` uses the prompt, `target` uses the display label, and `result` uses the pass/fail value."},{"name":"sort_dir","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Sort Dir"},"description":"Sort results in ascending or descending order."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEvalHistoryResponse"}}}},"404":{"description":"The organization does not have a configured API Performance scope.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]},"examples":{"organization_not_configured":{"summary":"Organization configuration not found","value":{"detail":"Configured API Performance scope not found for this organization"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_results.custom_evals","x-speakeasy-name-override":"list"}},"/v1/api-performance/custom-evals/{custom_eval_id}":{"get":{"tags":["Evals"],"summary":"Retrieve Eval","description":"Returns one eval and its eval configuration.","operationId":"api_performance_custom_evals_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"custom_eval_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Eval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEval"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"custom_evals","x-speakeasy-name-override":"retrieve"},"patch":{"tags":["Evals"],"summary":"Update Eval","description":"Updates an eval and returns the saved version. Omitted fields retain their existing values. Use the `eval` field to update its eval configuration.","operationId":"api_performance_custom_evals_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"custom_eval_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Eval Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEvalUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEval"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"custom_evals","x-speakeasy-name-override":"update"},"delete":{"tags":["Evals"],"summary":"Delete Eval","description":"Deletes an eval and returns its final saved representation.","operationId":"api_performance_custom_evals_delete","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"custom_eval_id","in":"path","required":true,"schema":{"type":"string","title":"Custom Eval Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCustomEval"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"custom_evals","x-speakeasy-name-override":"delete"}},"/v1/api-performance/starter-projects":{"get":{"tags":["Eval Setup"],"summary":"List Starter Projects","description":"Returns starter projects available to coding-agent evaluations. Set `source_id` to limit results to one API Performance source.","operationId":"api_performance_starter_projects_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"type":"string","title":"Source Id"},"description":"Source ID from GET /v1/api-performance/sources. Excludes projects with no source."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProjectsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.starter_projects","x-speakeasy-name-override":"list"},"post":{"tags":["Eval Setup"],"summary":"Create Starter Project","description":"Creates a starter project from a repository location and returns the saved project.","operationId":"api_performance_starter_projects_create","security":[{"LightsageApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.starter_projects","x-speakeasy-name-override":"create"}},"/v1/api-performance/starter-projects/{starter_project_id}":{"get":{"tags":["Eval Setup"],"summary":"Retrieve Starter Project","description":"Returns one starter project by ID.","operationId":"api_performance_starter_projects_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"starter_project_id","in":"path","required":true,"schema":{"type":"string","title":"Starter Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.starter_projects","x-speakeasy-name-override":"retrieve"},"patch":{"tags":["Eval Setup"],"summary":"Update Starter Project","description":"Updates a starter project and returns the saved project. Omitted fields remain unchanged.","operationId":"api_performance_starter_projects_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"starter_project_id","in":"path","required":true,"schema":{"type":"string","title":"Starter Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProjectUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.starter_projects","x-speakeasy-name-override":"update"},"delete":{"tags":["Eval Setup"],"summary":"Delete Starter Project","description":"Deletes a starter project and returns its final saved representation.","operationId":"api_performance_starter_projects_delete","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"starter_project_id","in":"path","required":true,"schema":{"type":"string","title":"Starter Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicStartingProject"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_setup.starter_projects","x-speakeasy-name-override":"delete"}},"/v1/api-performance/actions":{"get":{"tags":["Eval Actions"],"summary":"List Actions","description":"Returns actions ordered by priority, with `critical` first. Status, priority, and limit affect only `data`; `counts` summarizes all matching action types, while the run-impact totals in `summary` cover every action matching the filters, counting each eval run once.","operationId":"api_performance_actions_list","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"source_id","in":"query","required":false,"schema":{"type":"string","title":"Source Id"},"description":"Source ID from GET /v1/api-performance/sources. Excludes actions with no source."},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"},"description":"Filter returned actions by status. This does not change `counts`."},{"name":"action_type","in":"query","required":false,"schema":{"type":"string","title":"Action Type"},"description":"Filter returned actions and aggregate counts by action type."},{"name":"priority","in":"query","required":false,"schema":{"type":"string","title":"Priority"},"description":"Filter returned actions by priority. This does not change `counts`."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"},"description":"Maximum number of actions to return."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicApiPerformanceActionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_actions","x-speakeasy-name-override":"list"}},"/v1/api-performance/actions/refresh":{"post":{"tags":["Eval Actions"],"summary":"Refresh Actions","description":"Regenerates actions from current eval results and reports `generated`, `updated`, `unchanged`, and `total_candidates`.","operationId":"api_performance_actions_refresh","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRefreshActionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicRefreshActionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"LightsageApiKeyAuth":[]}],"x-speakeasy-group":"eval_actions","x-speakeasy-name-override":"refresh"}},"/v1/api-performance/actions/{action_id}":{"get":{"tags":["Eval Actions"],"summary":"Retrieve Action","description":"Returns one action. Set `include_prompt` to include a paste-ready remediation prompt.","operationId":"api_performance_actions_retrieve","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}},{"name":"include_prompt","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Prompt"},"description":"Include a paste-ready remediation prompt in the response."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicActionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_actions","x-speakeasy-name-override":"retrieve"},"patch":{"tags":["Eval Actions"],"summary":"Update Action","description":"Updates an eval action's status, owner, ignored reason, or note and returns the saved action. Omitted fields remain unchanged.","operationId":"api_performance_actions_update","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicUpdateActionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicActionDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_actions","x-speakeasy-name-override":"update"}},"/v1/api-performance/actions/{action_id}/verify":{"post":{"tags":["Eval Actions"],"summary":"Verify Action","description":"Checks whether the recommended fix is now observable and reports it in `url_check`.","operationId":"api_performance_actions_verify","security":[{"LightsageApiKeyAuth":[]}],"parameters":[{"name":"action_id","in":"path","required":true,"schema":{"type":"string","title":"Action Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicVerifyActionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-speakeasy-group":"eval_actions","x-speakeasy-name-override":"verify"}}},"components":{"schemas":{"CreatePromptTopicRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"CreatePromptTopicRequest"},"CreatePublicPromptRequest":{"properties":{"topic_id":{"type":"string","title":"Topic Id","description":"Topic ID from GET /v1/prompts/config."},"text":{"type":"string","minLength":1,"title":"Text"},"platform_ids":{"items":{"type":"string"},"type":"array","title":"Platform Ids","description":"Platform IDs from GET /v1/prompts/config. Omit to attach none."}},"additionalProperties":false,"type":"object","required":["topic_id","text"],"title":"CreatePublicPromptRequest"},"CreatePublicPromptsBatchRequest":{"properties":{"prompts":{"items":{"$ref":"#/components/schemas/CreatePublicPromptRequest"},"type":"array","maxItems":100,"minItems":1,"title":"Prompts"}},"type":"object","required":["prompts"],"title":"CreatePublicPromptsBatchRequest"},"DiagnoseEvalRunsRequest":{"properties":{"since":{"type":"string","title":"Since","description":"The lookback window, such as `20d`, `72h`, or an ISO 8601 timestamp.","default":"20d"},"format":{"type":"string","enum":["json","markdown","md"],"title":"Format","default":"json"},"include_examples":{"type":"boolean","title":"Include Examples","default":true},"max_examples":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Examples","default":10}},"type":"object","title":"DiagnoseEvalRunsRequest"},"DiagnoseEvalRunsResponse":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"since":{"type":"string","title":"Since"},"summary":{"$ref":"#/components/schemas/DiagnosisSummary"},"failure_analysis":{"$ref":"#/components/schemas/FailureAnalysisSnapshot"},"examples":{"items":{"$ref":"#/components/schemas/EvalRunDetail"},"type":"array","title":"Examples","description":"Example failed results, included only when `include_examples` is true."},"markdown":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Markdown","description":"The Markdown report, or null when `format` is `json`."}},"type":"object","required":["company","since","summary","failure_analysis"],"title":"DiagnoseEvalRunsResponse"},"DiagnosisSummary":{"properties":{"total_runs":{"type":"integer","title":"Total Runs","default":0},"failed_runs":{"type":"integer","title":"Failed Runs","default":0},"passed_runs":{"type":"integer","title":"Passed Runs","default":0},"failure_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Failure Rate"},"top_failed_endpoints":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Failed Endpoints"},"top_failed_models":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Failed Models"},"top_failure_reasons":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Failure Reasons"}},"type":"object","title":"DiagnosisSummary"},"EvalRunDetail":{"properties":{"id":{"type":"string","title":"Id","description":"Result ID, not an eval job ID."},"endpoint":{"anyOf":[{"$ref":"#/components/schemas/PublicEndpoint"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Endpoint"},"source":{"anyOf":[{"$ref":"#/components/schemas/EvalRunSource"},{"type":"null"}]},"eval_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Type","description":"The evaluation type, such as `integration`."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Public model ID, such as `openai/gpt-5.4` or `anthropic/claude-sonnet-5`."},"model_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Type","description":"The model type: `agent` or `text`."},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding-agent harness, such as `pi`, `kilo`, `codex`, or `claude-code`; null for text-model runs."},"passed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Passed"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"A score from 0 to 1. Use `passed`, not this score, for the verdict."},"failure_reasons":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Failure Reasons","description":"Labels of scoring checks that did not pass, such as `exit_code_zero` or `task_completed`. Populated whenever a check failed, including on results that passed overall, and null when every check passed. Deductions from checks that passed, such as a judge scoring 0.98, are not listed here; read `grader_results[].deductions` on the retrieved result."},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run At"},"environment":{"anyOf":[{"$ref":"#/components/schemas/PublicEvalRunEnvironment"},{"type":"null"}],"description":"The environment the run used, without secret values. Null for runs without an environment or queued before this was recorded."},"prompt_sent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Sent"},"response_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Text"},"execution_stdout":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Stdout","description":"Output of executing the agent's code."},"execution_stderr":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execution Stderr","description":"Errors from executing the agent's code."},"exit_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exit Code","description":"The process exit code, or null for evals that do not execute code."},"tool_calls":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"One entry per tool invocation, in call order. Each carries `tool_name`, `tool_id`, `input`, and `output`; a call and its result are merged into one entry, so the list length is the invocation count the app shows as tool calls."},"grader_results":{"items":{"$ref":"#/components/schemas/PublicGraderResult"},"type":"array","title":"Grader Results","description":"Per-check verdicts behind `score`, including deductions recorded by passing checks. Not populated in diagnosis examples; retrieve the result."},"raw":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Raw"}},"type":"object","required":["id"],"title":"EvalRunDetail"},"EvalRunResponse":{"properties":{"data":{"$ref":"#/components/schemas/EvalRunDetail"}},"type":"object","required":["data"],"title":"EvalRunResponse"},"EvalRunSource":{"properties":{"id":{"type":"string","title":"Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"The source type: `rest_api`, `python_sdk`, `node_sdk`, or `cli`."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Public source metadata such as `api_base_url` and `docs_url`; secret values are never included."}},"type":"object","required":["id"],"title":"EvalRunSource"},"EvalRunSummary":{"properties":{"id":{"type":"string","title":"Id","description":"Result ID, not an eval job ID."},"endpoint":{"anyOf":[{"$ref":"#/components/schemas/PublicEndpoint"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Endpoint"},"source":{"anyOf":[{"$ref":"#/components/schemas/EvalRunSource"},{"type":"null"}]},"eval_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Type","description":"The evaluation type, such as `integration`."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Public model ID, such as `openai/gpt-5.4` or `anthropic/claude-sonnet-5`."},"model_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Type","description":"The model type: `agent` or `text`."},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding-agent harness, such as `pi`, `kilo`, `codex`, or `claude-code`; null for text-model runs."},"passed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Passed"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"A score from 0 to 1. Use `passed`, not this score, for the verdict."},"failure_reasons":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Failure Reasons","description":"Labels of scoring checks that did not pass, such as `exit_code_zero` or `task_completed`. Populated whenever a check failed, including on results that passed overall, and null when every check passed. Deductions from checks that passed, such as a judge scoring 0.98, are not listed here; read `grader_results[].deductions` on the retrieved result."},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms","description":"Not populated on list rows; retrieve the result."},"run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run At"}},"type":"object","required":["id"],"title":"EvalRunSummary"},"EvalRunsListMeta":{"properties":{"limit":{"type":"integer","title":"Limit"},"count":{"type":"integer","title":"Count","description":"The number of items in `data`, not the total available."},"offset":{"type":"integer","title":"Offset","description":"Number of matching results skipped."},"total":{"type":"integer","title":"Total","description":"Total matching results across all pages."},"has_more":{"type":"boolean","title":"Has More","description":"Whether another page of results is available."}},"type":"object","required":["limit","count","offset","total","has_more"],"title":"EvalRunsListMeta"},"EvalRunsListResponse":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"data":{"items":{"$ref":"#/components/schemas/EvalRunSummary"},"type":"array","title":"Data"},"meta":{"$ref":"#/components/schemas/EvalRunsListMeta"}},"type":"object","required":["company","data","meta"],"title":"EvalRunsListResponse"},"FailureAnalysisSnapshot":{"properties":{"total_runs":{"type":"integer","title":"Total Runs","default":0},"failed_runs":{"type":"integer","title":"Failed Runs","default":0},"failure_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Failure Rate"},"patterns":{"items":{"$ref":"#/components/schemas/FailurePatternSnapshot"},"type":"array","title":"Patterns"},"top_failure_reasons":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Top Failure Reasons"},"endpoints_by_failure_count":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Endpoints By Failure Count"}},"type":"object","title":"FailureAnalysisSnapshot"},"FailurePatternSnapshot":{"properties":{"pattern":{"type":"string","title":"Pattern"},"label":{"type":"string","title":"Label"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"count":{"type":"integer","title":"Count"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"},"severity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"},"example_reasons":{"items":{"type":"string"},"type":"array","title":"Example Reasons"},"affected_endpoints":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Affected Endpoints"},"affected_models":{"items":{"type":"string"},"type":"array","title":"Affected Models"},"run_ids":{"items":{"type":"string"},"type":"array","title":"Run Ids","description":"Result IDs, usable with `GET /v1/api-performance/runs/{run_id}`."}},"type":"object","required":["pattern","label","count"],"title":"FailurePatternSnapshot"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ListOpportunitiesResponse":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Window start actually used, after resolving `start_date`, `since`, or the default."},"end_date":{"type":"string","title":"End Date"},"data":{"items":{"$ref":"#/components/schemas/PublicPromptOpportunity"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count","description":"Capped by `limit`; not the total available."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Breakdowns of the returned items only; each sums to `count`."}},"type":"object","required":["start_date","end_date","count"],"title":"ListOpportunitiesResponse"},"ListPromptsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicPrompt"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["data","count"],"title":"ListPromptsResponse"},"ListTasksResponse":{"properties":{"action_date":{"type":"string","title":"Action Date","description":"The requested action date. It defaults to today in UTC even when `data` spans every date."},"status":{"type":"string","enum":["active","todo","new","in_progress","completed","done","dismissed","all"],"title":"Status","description":"The requested queue slice; this value is not itself a task status."},"batch_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Batch Number"},"latest_batch_number":{"type":"integer","title":"Latest Batch Number","default":0},"data":{"items":{"$ref":"#/components/schemas/PublicTask"},"type":"array","title":"Data"},"count":{"type":"integer","title":"Count"},"active_count":{"type":"integer","title":"Active Count","default":0},"in_progress_count":{"type":"integer","title":"In Progress Count","default":0},"completed_count":{"type":"integer","title":"Completed Count","default":0},"done_count":{"type":"integer","title":"Done Count","default":0},"dismissed_count":{"type":"integer","title":"Dismissed Count","default":0},"history_count":{"type":"integer","title":"History Count","default":0},"has_history":{"type":"boolean","title":"Has History","default":false},"can_fetch_next_batch":{"type":"boolean","title":"Can Fetch Next Batch","default":false},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At"}},"type":"object","required":["action_date","status","count"],"title":"ListTasksResponse"},"PromptBatchError":{"properties":{"index":{"type":"integer","title":"Index","description":"Zero-based index into the submitted `prompts` array."},"text":{"type":"string","title":"Text"},"error":{"type":"string","title":"Error"}},"type":"object","required":["index","text","error"],"title":"PromptBatchError"},"PublicActionDetailResponse":{"properties":{"data":{"$ref":"#/components/schemas/PublicApiPerformanceAction"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Null unless `include_prompt=true`."}},"type":"object","required":["data"],"title":"PublicActionDetailResponse"},"PublicApiEvalTarget":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"The saved target ID, or null for targets derived from the legacy model selection."},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id","description":"Source ID from GET /v1/api-performance/sources."},"target_type":{"type":"string","enum":["text","agent"],"title":"Target Type"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding agent ID from GET /v1/api-performance/targets; required only for agent targets."},"model_id":{"type":"string","title":"Model Id","description":"text_models[].id for text targets, or an id from the agent's models list, both from GET /v1/api-performance/targets."},"frequency":{"type":"string","enum":["daily","every_other_day","weekly","manual"],"title":"Frequency","description":"The run schedule. `manual` keeps the target available without scheduling it.","default":"daily"},"enabled":{"type":"boolean","title":"Enabled","default":true},"next_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Run At"},"last_run_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run At"},"last_skipped_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Skipped At"},"skip_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Skip Reason"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["target_type","model_id"],"title":"PublicApiEvalTarget"},"PublicApiPerformanceAction":{"properties":{"id":{"type":"string","title":"Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id","description":"Null when not tied to one source; the list's `source_id` filter then excludes it."},"action_type":{"type":"string","title":"Action Type","description":"Such as `broken_url` (a page in your inventory that returns 404), `agent_guessed_url` (a path the agent invented that never existed), `api_auth_or_quota_issue`, `transient_or_infra_error`, `page_not_llm_readable`, or `high_traffic_working_url`."},"status":{"type":"string","title":"Status","description":"`open`, `in_progress`, `ignored`, `fixed`, or `verified`."},"priority":{"type":"string","title":"Priority","description":"`critical`, `high`, `medium`, or `low`."},"confidence":{"type":"number","title":"Confidence"},"effort":{"type":"string","title":"Effort","description":"Such as `low` or `medium`."},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"primary_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Url"},"affected_urls":{"items":{"type":"string"},"type":"array","title":"Affected Urls"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","description":"Keys: `models`, `endpoints`, `run_ids` (runs that visited the URL), `issue_run_ids` (runs that hit this issue), `failed_run_ids` and `recovered_run_ids` (issue runs whose eval failed or still passed), `sample_runs`, `status_codes`, `failure_kinds`, `failure_kind`, `category`, `category_label`, `url_provenance`, `suggested_url`, `guess_pattern`, `initial_url_check`, `last_url_check`. `category` separates a broken documented page from an agent-guessed URL or an API auth/quota rejection; `url_provenance` is `documented`, `agent_invented`, or `unknown`. Lists are truncated to 10 endpoints and 10 sample runs; use `impact` for totals."},"recommendation":{"additionalProperties":true,"type":"object","title":"Recommendation","description":"Carries `summary`, ordered `steps` of `key`/`label` pairs, and `verification`."},"impact":{"additionalProperties":true,"type":"object","title":"Impact","description":"`affected_runs` (unique eval runs that hit this issue), `failed_evaluations` (affected runs whose eval outcome failed; `failed_runs` is a deprecated alias), `recovered_runs` (affected runs that still passed), `failed_requests` (individual failed fetches), `affected_endpoints`, `affected_models`, and raw visit tallies `visit_count`, `failed_visit_count`, `revisit_count`, and `error_occurrences`."},"source":{"type":"string","title":"Source","description":"Generating pipeline, such as `api_eval_runs`; not the API Performance source."},"fingerprint":{"type":"string","title":"Fingerprint","description":"Stable 64-character hex hash of the issue; differs per `action_type` on the same URL."},"owner_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner User Id"},"ignored_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ignored Reason"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At","description":"Retained across refreshes; can precede `created_at`."},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"resolved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved At"},"verified_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verified At"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","action_type","status","priority","confidence","effort","title","description","source","fingerprint"],"title":"PublicApiPerformanceAction"},"PublicApiPerformanceActionsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceAction"},"type":"array","title":"Data"},"counts":{"additionalProperties":true,"type":"object","title":"Counts","description":"Per status, per priority, and `total`, for the `source_id` and `action_type` scope; `status`, `priority`, and `limit` do not narrow it."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"`total`, `open`, `critical`, `high` for the same scope as `counts`, plus run impact across every action matching the filters (not only the `limit`ed `data`). `failed_requests` counts individual failed fetches. The run counts are unique eval runs, each counted once even when several actions share it: `affected_runs` hit any issue, `failed_evaluations` also had a failed eval outcome, and `recovered_runs` hit an issue but passed. `affected_failed_runs` is a deprecated alias of `failed_evaluations`. `by_action_type` maps each action type to its `actions` count and the same four fields, with runs counted once within that type; a run can hit several types, so per-type run counts can add up to more than the overall totals."}},"type":"object","required":["data"],"title":"PublicApiPerformanceActionsResponse"},"PublicApiPerformanceCodingAgent":{"properties":{"id":{"type":"string","title":"Id","description":"Use as `agent_id` on an agent target."},"label":{"type":"string","title":"Label"},"cost_estimate_per_eval":{"type":"number","title":"Cost Estimate Per Eval","description":"The estimated cost in USD for one evaluation."},"default_model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Model Id","description":"Public model ID used by the default target."},"target":{"anyOf":[{"$ref":"#/components/schemas/PublicApiPerformanceTargetSpec"},{"type":"null"}]},"models":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceCodingAgentModel"},"type":"array","title":"Models"}},"type":"object","required":["id","label","cost_estimate_per_eval"],"title":"PublicApiPerformanceCodingAgent"},"PublicApiPerformanceCodingAgentModel":{"properties":{"id":{"type":"string","title":"Id","description":"Public model ID supported by this coding-agent harness."},"label":{"type":"string","title":"Label"},"target":{"$ref":"#/components/schemas/PublicApiPerformanceTargetSpec"}},"type":"object","required":["id","label","target"],"title":"PublicApiPerformanceCodingAgentModel"},"PublicApiPerformanceEvalRunRequest":{"properties":{"type":{"type":"string","const":"api_performance","title":"Type"},"source_type":{"type":"string","enum":["rest_api","sdk","cli","custom_evals"],"title":"Source Type","description":"Use `custom_evals` to run evals selected by `custom_eval_ids`; the other values run a configured API Performance source."},"source_id":{"type":"string","title":"Source Id","description":"Source ID from GET /v1/api-performance/sources. Required unless operation_ids, eval_ids, or source_type identify one source."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Legacy model selection; prefer `targets`."},"targets":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicApiPerformanceEvalRunTarget"},"type":"array"},{"type":"null"}],"title":"Targets","description":"Targets for the selected evals. Agent targets pair an `agent_id` harness with a supported `model_id`; text targets use `model_id` only. Omit to use saved configuration."},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"},"operation_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Operation Ids","description":"operation_id values from GET /v1/api-performance/evals, not OpenAPI operationIds."},"operation_paths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Operation Paths","description":"METHOD:path filters, such as GET:/v1/items."},"eval_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Eval Ids","description":"Eval configuration IDs from GET /v1/api-performance/evals."},"custom_eval_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Eval Ids","description":"Eval IDs from GET /v1/api-performance/custom-evals identifying which evals to run. Used only when source_type is custom_evals."},"eval_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Eval Types","description":"eval_type values from GET /v1/api-performance/evals."},"env_profile_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Env Profile Ids","description":"Environment profile IDs from `env_profiles[].id` in `GET /v1/api-performance/config`."},"eval_overrides":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Eval Overrides"}},"type":"object","required":["type","source_type"],"title":"PublicApiPerformanceEvalRunRequest"},"PublicApiPerformanceEvalRunTarget":{"properties":{"target_type":{"type":"string","enum":["text","agent"],"title":"Target Type","description":"Use `text` for a `text_models` entry or `agent` for a `coding_agents` entry from `GET /v1/api-performance/targets`. Under Pricing V2, coding-agent targets are usage-based. Legacy agent targets cost 5 credits. Text targets cost 1 credit."},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding agent ID from GET /v1/api-performance/targets; required only for agent targets."},"model_id":{"type":"string","title":"Model Id","description":"text_models[].id for a text target, or an id from the agent's models list, both from GET /v1/api-performance/targets."},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["target_type","model_id"],"title":"PublicApiPerformanceEvalRunTarget"},"PublicApiPerformanceSkill":{"properties":{"id":{"type":"string","title":"Id"},"skill_source_id":{"type":"string","title":"Skill Source Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"path":{"type":"string","title":"Path"},"entrypoint_path":{"type":"string","title":"Entrypoint Path"},"content_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Hash"},"enabled":{"type":"boolean","title":"Enabled"},"stale":{"type":"boolean","title":"Stale"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"skill_source":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Skill Source"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","skill_source_id","slug","name","path","entrypoint_path","enabled","stale"],"title":"PublicApiPerformanceSkill"},"PublicApiPerformanceSkillsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceSkill"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Carries `count`."}},"type":"object","required":["data"],"title":"PublicApiPerformanceSkillsResponse"},"PublicApiPerformanceSource":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type","description":"The source type: `rest_api`, `python_sdk`, `node_sdk`, or `cli`."},"label":{"type":"string","title":"Label"},"metadata":{"$ref":"#/components/schemas/PublicApiPerformanceSourceMetadata"},"targets":{"items":{"$ref":"#/components/schemas/PublicApiEvalTarget"},"type":"array","title":"Targets"},"operation_count":{"type":"integer","title":"Operation Count","default":0},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","type","label"],"title":"PublicApiPerformanceSource"},"PublicApiPerformanceSourceMetadata":{"properties":{"api_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base Url"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url","description":"Given to agents in the eval prompt."},"default_env_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Env Profile Id"},"env_var_keys":{"items":{"type":"string"},"type":"array","title":"Env Var Keys","description":"Environment variable names; values are never returned."},"env_profiles":{"items":{"$ref":"#/components/schemas/PublicEvalEnvProfileSummary"},"type":"array","title":"Env Profiles"},"models":{"items":{"type":"string"},"type":"array","title":"Models","description":"Legacy model selection superseded by `targets`."},"eval_types":{"items":{"type":"string"},"type":"array","title":"Eval Types"}},"type":"object","title":"PublicApiPerformanceSourceMetadata"},"PublicApiPerformanceSourceRef":{"properties":{"id":{"type":"string","title":"Id"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type","description":"The source type: `rest_api`, `python_sdk`, `node_sdk`, or `cli`."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["id"],"title":"PublicApiPerformanceSourceRef"},"PublicApiPerformanceSourcesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceSource"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata containing `count`."}},"type":"object","required":["data"],"title":"PublicApiPerformanceSourcesResponse"},"PublicApiPerformanceTargetSpec":{"properties":{"target_type":{"type":"string","enum":["text","agent"],"title":"Target Type"},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding agent ID from `coding_agents[].id`; required only for agent targets."},"model_id":{"type":"string","title":"Model Id","description":"Public model ID from the corresponding model entry in this response."}},"type":"object","required":["target_type","model_id"],"title":"PublicApiPerformanceTargetSpec"},"PublicApiPerformanceTargetsResponse":{"properties":{"text_models":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceTextModel"},"type":"array","title":"Text Models"},"coding_agents":{"items":{"$ref":"#/components/schemas/PublicApiPerformanceCodingAgent"},"type":"array","title":"Coding Agents"},"frequencies":{"items":{"type":"string","enum":["daily","every_other_day","weekly","manual"]},"type":"array","title":"Frequencies"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Response metadata containing `text_model_count` and `coding_agent_count`."}},"type":"object","required":["text_models","coding_agents","frequencies"],"title":"PublicApiPerformanceTargetsResponse"},"PublicApiPerformanceTextModel":{"properties":{"id":{"type":"string","title":"Id","description":"Public model ID, such as `openai/gpt-5.4` or `deepseek/deepseek-v3.2`."},"label":{"type":"string","title":"Label"},"cost_per_1m_input":{"type":"number","title":"Cost Per 1M Input","description":"The cost in USD per one million input tokens."},"cost_per_1m_output":{"type":"number","title":"Cost Per 1M Output","description":"The cost in USD per one million output tokens."},"target":{"$ref":"#/components/schemas/PublicApiPerformanceTargetSpec"}},"type":"object","required":["id","label","cost_per_1m_input","cost_per_1m_output","target"],"title":"PublicApiPerformanceTextModel"},"PublicCitedUrl":{"properties":{"url":{"type":"string","title":"Url","description":"Most frequently observed variant of the cited URL."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Domain of the cited URL."},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title","description":"Page title, when available."},"favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon Url","description":"Page favicon URL, when available."},"is_company_link":{"type":"boolean","title":"Is Company Link","description":"Whether the URL belongs to an owned company domain."},"citation_count":{"type":"integer","title":"Citation Count","description":"Number of citations to this normalized URL in the date range."},"prompt_count":{"type":"integer","title":"Prompt Count","description":"Number of distinct active prompts that cited this URL."},"platform_names":{"items":{"type":"string"},"type":"array","title":"Platform Names","description":"Platforms that cited this URL in the selected date range."}},"type":"object","required":["url","is_company_link","citation_count","prompt_count"],"title":"PublicCitedUrl"},"PublicCitedUrlDateRange":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Start date used for the calculation."},"end_date":{"type":"string","title":"End Date","description":"End date used for the calculation."},"active_prompts_only":{"type":"boolean","title":"Active Prompts Only","description":"Whether only currently active prompts were included.","default":true}},"type":"object","required":["start_date","end_date"],"title":"PublicCitedUrlDateRange"},"PublicCompany":{"properties":{"name":{"type":"string","title":"Name"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"relationship":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relationship","description":"The company relationship: `primary` for the organization's own company or `competitor` for a tracked competitor."}},"type":"object","required":["name"],"title":"PublicCompany"},"PublicCompetitorRow":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"recommendation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recommendation Score","description":"Mean recommendation strength across successful prompt runs, from 0 to 1. Each run contributes the company's recommendation strength (0 to 1) when it is mentioned and 0 when it is not. Failed provider runs are excluded. `null` unless the organization turns on Recommendation Score under Settings › Navigation. Rows do not sum to 1."},"recommendation_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recommendation Score Rank"},"visibility_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Visibility Score","description":"Fraction of successful prompt runs that mention the company, from 0 to 1; for example, 0.25 means one in four runs. Failed provider runs are excluded. A run can mention several companies, so rows do not sum to 1."},"visibility_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visibility Score Rank"},"share_of_voice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Of Voice","description":"The company's share of all mentions of tracked companies (your company plus configured competitors) in the same prompt runs, from 0 to 1; tracked companies add up to 1. Each company counts once per run. `null` for companies you do not track. Not the `share_of_voice` field removed in October 2026, which held the mention rate now returned as `visibility_score`."},"share_of_voice_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Share Of Voice Rank","description":"Rank by `share_of_voice` among tracked companies, highest first."},"average_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Position","description":"Mean mention position in AI responses; 1 is first and lower is better. 0 when never mentioned."},"average_position_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Average Position Rank","description":"Companies with an `average_position` of 0 rank last."}},"type":"object","required":["company"],"title":"PublicCompetitorRow"},"PublicCoverage":{"properties":{"comparable":{"type":"boolean","title":"Comparable","description":"Whether totals can be compared between the two periods. False when either period has a missing or short day or runs per day differ by more than 20%; compare per-run rates instead."},"notes":{"items":{"type":"string"},"type":"array","title":"Notes","description":"Why the periods are not comparable, in plain sentences."},"current":{"$ref":"#/components/schemas/PublicPeriodCoverage"},"previous":{"$ref":"#/components/schemas/PublicPeriodCoverage"},"days":{"items":{"$ref":"#/components/schemas/PublicCoverageDay"},"type":"array","title":"Days"}},"type":"object","required":["comparable","current","previous"],"title":"PublicCoverage"},"PublicCoverageDay":{"properties":{"date":{"type":"string","title":"Date"},"period":{"type":"string","enum":["current","previous"],"title":"Period"},"runs":{"type":"integer","title":"Runs","description":"Successful prompt runs of active prompts that day."},"expected_runs":{"type":"integer","title":"Expected Runs","description":"Median daily runs over the 7 days before; 0 when no daily runs are expected."},"status":{"type":"string","enum":["ok","short","missing","in_progress","not_expected"],"title":"Status","description":"`missing`: no runs on a day that expected some. `short`: under half the expected runs. `in_progress`: today, before its runs finished."}},"type":"object","required":["date","period","runs","expected_runs","status"],"title":"PublicCoverageDay"},"PublicCriterionVerdict":{"properties":{"criterion":{"type":"string","title":"Criterion","description":"One mandatory requirement from the judge criteria."},"verdict":{"type":"string","enum":["PASS","FAIL","NOT_VERIFIED","NOT_APPLICABLE"],"title":"Verdict","description":"`PASS` when the evidence shows the requirement was met, `FAIL` when it shows it was not, and `NOT_VERIFIED` when the evidence cannot confirm it. Any `FAIL` or `NOT_VERIFIED` fails the run, whatever the score. `NOT_APPLICABLE` when the requirement states its own condition (\"If X is used, ...\") and that condition did not occur; it neither passes nor fails the run."},"evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence","description":"Short evidence the judge gave for the verdict."}},"type":"object","required":["criterion","verdict"],"title":"PublicCriterionVerdict"},"PublicCurrentVisibilityResponse":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"recommendation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recommendation Score","description":"Mean recommendation strength across successful prompt runs, from 0 to 1. Each run contributes the company's recommendation strength (0 to 1) when it is mentioned and 0 when it is not. Failed provider runs are excluded. `null` unless the organization turns on Recommendation Score under Settings › Navigation."},"recommendation_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recommendation Score Rank"},"visibility_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Visibility Score","description":"Fraction of successful prompt runs that mention the company, from 0 to 1; for example, 0.25 means one in four runs. Failed provider runs are excluded."},"visibility_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visibility Score Rank"},"share_of_voice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Of Voice","description":"The company's share of all mentions of tracked companies (your company plus configured competitors) in the same prompt runs, from 0 to 1; tracked companies add up to 1. Each company counts once per run. `null` for companies you do not track. Not the `share_of_voice` field removed in October 2026, which held the mention rate now returned as `visibility_score`."},"share_of_voice_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Share Of Voice Rank","description":"Rank by `share_of_voice` among tracked companies, highest first."},"average_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Position","description":"Mean mention position in AI responses; 1 is first and lower is better."},"average_position_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Average Position Rank"},"date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date","description":"Latest prompt-run date in the range."},"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"active_prompts_only":{"type":"boolean","title":"Active Prompts Only","default":true},"has_data":{"type":"boolean","title":"Has Data"},"period":{"anyOf":[{"$ref":"#/components/schemas/PublicResolvedPeriod"},{"type":"null"}],"description":"The resolved period and the previous period it is compared with."},"previous":{"anyOf":[{"$ref":"#/components/schemas/PublicPreviousVisibility"},{"type":"null"}],"description":"The same metrics for the previous period."},"coverage":{"anyOf":[{"$ref":"#/components/schemas/PublicCoverage"},{"type":"null"}],"description":"Runs per day against expected runs for both periods. Check `comparable` before comparing totals."},"rates":{"anyOf":[{"$ref":"#/components/schemas/PublicRates"},{"type":"null"}],"description":"Runs, owned citations, and per-run rates for both periods. Lead with `headline_metric`."}},"type":"object","required":["company","start_date","end_date","has_data"],"title":"PublicCurrentVisibilityResponse"},"PublicCustomEval":{"properties":{"id":{"type":"string","title":"Id"},"prompt":{"type":"string","title":"Prompt","description":"Rendered from `prompt_template` when one is set."},"prompt_template":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Template","description":"Variables: {{company_name}}, {{company_domain}}."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Display description for the eval; it does not affect grading."},"tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tag"},"persona":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Persona","description":"Persona whose workflow or perspective this eval represents."},"competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competitor","description":"Null unless this is a competitor variant."},"prompt_competitor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Competitor"},"prompt_competitor_group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Competitor Group","description":"Base eval of this variant; null on the base itself."},"category":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Category","description":"Carries `id`, `name`, and `slug`."},"eval":{"anyOf":[{"$ref":"#/components/schemas/PublicEvalDefinition"},{"type":"null"}],"description":"Eval configuration for this eval. Targets are selected separately."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","prompt"],"title":"PublicCustomEval"},"PublicCustomEvalHistoryCategory":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"sort_order":{"type":"integer","title":"Sort Order","default":0}},"type":"object","required":["id","name","slug"],"title":"PublicCustomEvalHistoryCategory"},"PublicCustomEvalHistoryEndpoint":{"properties":{"id":{"type":"string","title":"Id","description":"The eval's ID."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Stored prompt, before the instructions appended in `prompt_sent`."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"What counts as success."},"category":{"anyOf":[{"$ref":"#/components/schemas/PublicCustomEvalHistoryCategory"},{"type":"null"}]}},"type":"object","required":["id"],"title":"PublicCustomEvalHistoryEndpoint"},"PublicCustomEvalHistoryFacets":{"properties":{"targets":{"items":{"$ref":"#/components/schemas/PublicCustomEvalHistoryFilterOption"},"type":"array","title":"Targets","description":"`value` is a `target_key`."},"categories":{"items":{"$ref":"#/components/schemas/PublicCustomEvalHistoryFilterOption"},"type":"array","title":"Categories","description":"`value` is a `category_id`."}},"type":"object","title":"PublicCustomEvalHistoryFacets"},"PublicCustomEvalHistoryFilterOption":{"properties":{"value":{"type":"string","title":"Value"},"label":{"type":"string","title":"Label"},"count":{"type":"integer","title":"Count","description":"Not narrowed by `search`, `result_filter`, `target_key`, or `category_id`."}},"type":"object","required":["value","label","count"],"title":"PublicCustomEvalHistoryFilterOption"},"PublicCustomEvalHistoryResponse":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/PublicCustomEvalHistoryRun"},"type":"array","title":"Runs"},"total":{"type":"integer","title":"Total","description":"Ignores `limit` and `offset`."},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"hide_infra_errors":{"type":"boolean","title":"Hide Infra Errors","description":"Always `true` on the public API.","default":true},"facets":{"$ref":"#/components/schemas/PublicCustomEvalHistoryFacets","description":"Narrowed by `custom_eval_id` only."}},"type":"object","required":["runs","total","limit","offset"],"title":"PublicCustomEvalHistoryResponse"},"PublicCustomEvalHistoryRun":{"properties":{"id":{"type":"string","title":"Id","description":"Result ID, not an eval job ID."},"endpoint":{"$ref":"#/components/schemas/PublicCustomEvalHistoryEndpoint","description":"The eval, not an API endpoint."},"target_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Key","description":"`text:{model_id}` or `agent:{agent_id}:{model_id}`."},"eval_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eval Type"},"prompt_sent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Sent","description":"The eval prompt plus the instructions Lightsage appends."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Public model ID, such as `openai/gpt-5.4` or `anthropic/claude-sonnet-5`."},"model_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Type","description":"`agent` or `text`."},"agent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Agent Id","description":"Coding-agent harness, such as `pi`, `kilo`, `codex`, or `claude-code`; null for text-model runs."},"passed":{"type":"boolean","title":"Passed"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"0 to 1."},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms","description":"Whole agent run, not a single API call."},"tool_call_count":{"type":"integer","title":"Tool Call Count","description":"Tool invocations the agent made, counting a call and its result once. Matches the length of `tool_calls` on the retrieved result."},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"is_infra_error":{"type":"boolean","title":"Is Infra Error","description":"Always `false` here; such rows are withheld.","default":false},"run_at":{"type":"string","title":"Run At"},"harness_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Harness Label"},"model_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Label"},"run_context_sent":{"additionalProperties":true,"type":"object","title":"Run Context Sent","description":"Skills, environment profile, starter project, docs inclusion, and `run_source` (`manual`, `scheduled`, `public_api`, or `github_pr_bot`)."}},"type":"object","required":["id","endpoint","passed","tool_call_count","run_at"],"title":"PublicCustomEvalHistoryRun"},"PublicCustomEvalRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Workflow the eval should test."},"prompt_template":{"type":"string","title":"Prompt Template","description":"Rendered into prompt before storing. Variables: {{company_name}}, {{company_domain}}."},"category_name":{"type":"string","title":"Category Name"},"description":{"type":"string","title":"Description","description":"Display description for the eval. Judging criteria belong in `eval.graders`."},"tag":{"type":"string","title":"Tag"},"persona":{"type":"string","title":"Persona","description":"Persona whose workflow or perspective this eval represents."},"competitor":{"type":"string","title":"Competitor","description":"Competitor ID; renders the prompt against that competitor."},"prompt_competitor_group":{"type":"string","title":"Prompt Competitor Group","description":"Base eval ID this competitor variant belongs to."},"eval":{"anyOf":[{"$ref":"#/components/schemas/PublicEvalDefinitionUpdate"},{"type":"null"}],"description":"Optional grader, prompt, and runtime configuration. Select targets when starting an eval job or in API Performance config."}},"type":"object","required":["prompt"],"title":"PublicCustomEvalRequest"},"PublicCustomEvalUpdateRequest":{"properties":{"prompt":{"type":"string","title":"Prompt"},"prompt_template":{"type":"string","title":"Prompt Template","description":"Rendered into prompt before storing. Variables: {{company_name}}, {{company_domain}}."},"category_name":{"type":"string","title":"Category Name"},"description":{"type":"string","title":"Description","description":"Display description for the eval. Judging criteria belong in `eval.graders`."},"tag":{"type":"string","title":"Tag"},"persona":{"type":"string","title":"Persona","description":"Persona whose workflow or perspective this eval represents."},"competitor":{"type":"string","title":"Competitor","description":"Competitor ID; renders the prompt against that competitor."},"prompt_competitor_group":{"type":"string","title":"Prompt Competitor Group","description":"Base eval ID this competitor variant belongs to."},"eval":{"anyOf":[{"$ref":"#/components/schemas/PublicEvalDefinitionUpdate"},{"type":"null"}],"description":"Updates the eval configuration. Target selection is configured separately."}},"type":"object","title":"PublicCustomEvalUpdateRequest"},"PublicCustomEvalsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicCustomEval"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Carries `count`."}},"type":"object","required":["data"],"title":"PublicCustomEvalsResponse"},"PublicEndpoint":{"properties":{"id":{"type":"string","title":"Id","description":"Same value as `operation_id` on eval configurations."},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"category":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Category","description":"The category object containing `id`, `name`, `slug`, and `sort_order`; null on list rows."}},"type":"object","required":["id"],"title":"PublicEndpoint"},"PublicEvalConfigResponse":{"properties":{"models":{"items":{"type":"string"},"type":"array","title":"Models","description":"Legacy model selection superseded by `targets`."},"targets":{"items":{"$ref":"#/components/schemas/PublicApiEvalTarget"},"type":"array","title":"Targets"},"operation_ids":{"items":{"type":"string"},"type":"array","title":"Operation Ids"},"custom_eval_ids":{"items":{"type":"string"},"type":"array","title":"Custom Eval Ids"},"env_var_keys":{"items":{"type":"string"},"type":"array","title":"Env Var Keys","description":"Environment variable names; values are never returned."},"env_profiles":{"items":{"$ref":"#/components/schemas/PublicEvalEnvProfileSummary"},"type":"array","title":"Env Profiles"},"default_env_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Env Profile Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id"},"api_base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Base Url"},"can_configure_per_model_schedules":{"type":"boolean","title":"Can Configure Per Model Schedules","default":false}},"type":"object","required":["models","operation_ids"],"title":"PublicEvalConfigResponse"},"PublicEvalConfigUpdateRequest":{"properties":{"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Legacy model selection; prefer `targets`."},"targets":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicApiEvalTarget"},"type":"array"},{"type":"null"}],"title":"Targets"},"operation_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Operation Ids","description":"operation_id values from GET /v1/api-performance/evals."},"custom_eval_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Custom Eval Ids","description":"IDs from GET /v1/api-performance/custom-evals."},"env_vars":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Env Vars","description":"Environment variable values are write-only; reads return their names in `env_var_keys`."},"env_profiles":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicEvalEnvProfileRequest"},"type":"array"},{"type":"null"}],"title":"Env Profiles","description":"The brand's environment profiles, shared by every source. Replaces the list: profiles left out are deleted, and an ID the brand does not have creates a new profile."},"default_env_profile_id":{"type":"string","title":"Default Env Profile Id","description":"An ID from `env_profiles`: the default for `source_id`, or the brand default when no source is given."},"source_id":{"type":"string","title":"Source Id","description":"Source ID from GET /v1/api-performance/sources."},"api_base_url":{"type":"string","title":"Api Base Url"}},"type":"object","title":"PublicEvalConfigUpdateRequest"},"PublicEvalDefinition":{"properties":{"id":{"type":"string","title":"Id"},"operation_id":{"type":"string","title":"Operation Id","description":"For a user-created eval, equals the eval ID when `source_id` is null."},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id","description":"Null for a user-created eval configuration."},"source":{"anyOf":[{"$ref":"#/components/schemas/PublicApiPerformanceSourceRef"},{"type":"null"}]},"eval_type":{"type":"string","title":"Eval Type"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt","description":"Overrides `prompt` when set."},"expected_behavior":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Behavior","description":"Deprecated compatibility view of the primary judge criterion. Use `graders` for the canonical configuration.","deprecated":true},"graders":{"items":{"$ref":"#/components/schemas/PublicGraderDefinition"},"type":"array","title":"Graders","description":"Canonical grader definitions used to score the eval."},"starting_project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starting Project Id"},"docs_mode":{"type":"string","enum":["default","include","exclude"],"title":"Docs Mode","description":"`include` adds the organization's docs to the agent's context; `exclude` withholds them.","default":"default"},"include_env_vars":{"type":"boolean","title":"Include Env Vars","description":"Names only, never values.","default":true},"env_profile_ids":{"items":{"type":"string"},"type":"array","title":"Env Profile Ids"},"model_ids":{"items":{"type":"string"},"type":"array","title":"Model Ids","description":"Empty means the config-level models are used."},"compare_skills":{"type":"boolean","title":"Compare Skills","description":"Whether to run an additional comparison with skill context enabled.","default":false},"skills_mode":{"type":"string","enum":["none","all","selected"],"title":"Skills Mode","description":"`selected` uses `skill_ids`; `all` uses every skill; `none` supplies no skill context.","default":"none"},"skills_enabled":{"type":"boolean","title":"Skills Enabled","default":false},"skill_ids":{"items":{"type":"string"},"type":"array","title":"Skill Ids"},"mcp_enabled":{"type":"boolean","title":"Mcp Enabled","default":false},"search_grounding":{"$ref":"#/components/schemas/SearchGroundingMode","description":"Web-retrieval policy: disabled, enabled, or platform default.","default":"default"},"grounding_enabled":{"type":"boolean","title":"Grounding Enabled","description":"Whether native web search and URL retrieval tools are available to the agent. When false, configured brand docs are also withheld.","default":true},"run_context":{"additionalProperties":true,"type":"object","title":"Run Context"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["id","operation_id","eval_type"],"title":"PublicEvalDefinition"},"PublicEvalDefinitionUpdate":{"properties":{"custom_prompt":{"type":"string","title":"Custom Prompt","description":"Overrides the stored prompt."},"expected_behavior":{"type":"string","title":"Expected Behavior","description":"Deprecated compatibility alias for a judge criterion. Prefer `graders`; this value updates the primary judge grader.","deprecated":true},"graders":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicGraderDefinition"},"type":"array"},{"type":"null"}],"title":"Graders","description":"Complete grader definitions used to score the eval. Supplying this field replaces the stored grader array."},"starting_project_id":{"type":"string","title":"Starting Project Id","description":"ID from GET /v1/api-performance/starter-projects. Empty string clears it."},"docs_mode":{"type":"string","enum":["default","include","exclude"],"title":"Docs Mode","description":"include adds the organization's docs to the agent's context; exclude withholds them."},"include_env_vars":{"type":"boolean","title":"Include Env Vars","description":"Names only, never values."},"env_profile_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Env Profile Ids","description":"IDs from env_profiles in GET /v1/api-performance/config. Empty list clears the selection."},"model_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Model Ids","description":"IDs from GET /v1/api-performance/targets. Empty list falls back to the config-level models."},"compare_skills":{"type":"boolean","title":"Compare Skills","description":"Run an additional comparison with skill context enabled."},"skills_mode":{"type":"string","enum":["none","all","selected"],"title":"Skills Mode","description":"selected uses skill_ids; all uses every skill; none supplies no skill context."},"skill_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Skill Ids","description":"IDs from GET /v1/api-performance/skills; used when skills_mode is selected."},"mcp_enabled":{"type":"boolean","title":"Mcp Enabled"},"search_grounding":{"anyOf":[{"$ref":"#/components/schemas/SearchGroundingMode"},{"type":"null"}],"description":"Web-retrieval policy: disabled, enabled, or platform default."},"grounding_enabled":{"type":"boolean","title":"Grounding Enabled","description":"Allow native web search and URL retrieval tools during agent runs. When false, configured brand docs are also withheld."},"run_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Run Context"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","title":"PublicEvalDefinitionUpdate"},"PublicEvalDefinitionsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicEvalDefinition"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Carries `count`."}},"type":"object","required":["data"],"title":"PublicEvalDefinitionsResponse"},"PublicEvalEnvProfileRequest":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"env_vars":{"additionalProperties":{"type":"string"},"type":"object","title":"Env Vars","description":"Environment variable values are write-only; reads return names only."}},"type":"object","required":["id","name"],"title":"PublicEvalEnvProfileRequest"},"PublicEvalEnvProfileSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"env_var_keys":{"items":{"type":"string"},"type":"array","title":"Env Var Keys","description":"Environment variable names; values are never returned."},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"When this environment's name or variables last changed; null if unchanged since this field was introduced."}},"type":"object","required":["id","name"],"title":"PublicEvalEnvProfileSummary"},"PublicEvalRunEnvironment":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Environment ID, as listed by the environments operation."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Environment name when the run was queued."},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At","description":"Environment version the run used: when its name or variables last changed before the run was queued. Null if the environment had not changed since versioning was introduced."},"queued_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Queued At","description":"When the run was queued with this environment."},"variable_names":{"items":{"type":"string"},"type":"array","title":"Variable Names","description":"Variable names supplied to the run. Values are never returned."},"inline":{"type":"boolean","title":"Inline","description":"True when variables were supplied inline with the run request instead of from a saved environment.","default":false},"changed_since_queued":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Changed Since Queued","description":"True when the saved environment has been edited or deleted since the run was queued, so a rerun would use different values. Null when unknown or for inline environments."}},"type":"object","title":"PublicEvalRunEnvironment","description":"Non-secret summary of the environment an eval run was queued with."},"PublicEvalRunProgress":{"properties":{"total":{"type":"integer","title":"Total","default":0},"queued":{"type":"integer","title":"Queued","default":0},"running":{"type":"integer","title":"Running","default":0},"completed":{"type":"integer","title":"Completed","default":0},"failed":{"type":"integer","title":"Failed","default":0},"cancelled":{"type":"integer","title":"Cancelled","default":0},"retrying":{"type":"integer","title":"Retrying","description":"Recoverable child jobs waiting to be retried. These remain active and are excluded from `percent`.","default":0},"interrupted":{"type":"integer","title":"Interrupted","description":"Deprecated compatibility alias for `retrying`; use `retrying`.","default":0,"deprecated":true},"percent":{"type":"number","title":"Percent","description":"The percentage of child jobs in a final state (`completed`, `failed`, or `cancelled`). It can reach `100` while the parent job is still summarizing, so use `status` to detect completion.","default":0}},"type":"object","title":"PublicEvalRunProgress"},"PublicEvalRunResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Job ID for polling; not a result ID from `GET /v1/api-performance/runs`."},"job_id":{"type":"string","title":"Job Id","description":"The parent job ID. It currently contains the same polling ID as `id`."},"type":{"type":"string","enum":["prompts","api_performance"],"title":"Type"},"source_type":{"type":"string","enum":["prompts","rest_api","sdk","cli","custom_evals"],"title":"Source Type"},"status":{"anyOf":[{"type":"string","enum":["pending","running","summarizing","completed","failed","cancelled","interrupted"]},{"type":"string"}],"title":"Status","description":"Terminal values: `completed`, `failed`, and `cancelled`. Recoverable interruptions are reported as `running` with stage `retrying`."},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage","description":"Current lifecycle stage, including `retrying` while interrupted child jobs wait to be reclaimed."},"dispatch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispatch Id"},"progress":{"$ref":"#/components/schemas/PublicEvalRunProgress"},"estimated_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Cost","description":"Estimated credits for the run, worked out when it was queued. Credits actually used can differ by agent and model. Null when no estimate is available."},"eval_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eval Count"},"model_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Model Count"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At","description":"Can be set while `status` is still `summarizing`; use `status` to detect completion."}},"type":"object","required":["id","job_id","type","source_type","status"],"title":"PublicEvalRunResponse"},"PublicGraderDefinition":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"needle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Needle"},"needles":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Needles"},"pattern":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern"},"case_sensitive":{"type":"boolean","title":"Case Sensitive","default":false},"criteria":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Criteria"},"weight":{"type":"number","title":"Weight","default":1.0},"blocking":{"type":"boolean","title":"Blocking","default":false}},"additionalProperties":true,"type":"object","required":["name","type"],"title":"PublicGraderDefinition"},"PublicGraderResult":{"properties":{"name":{"type":"string","title":"Name","description":"Grader name as configured on the eval."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Display name for the check, when the grader sets one."},"passed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Passed","description":"Whether this check passed."},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"Score from 0 to 1 for checks that score partially, such as judges; null for pass/fail checks."},"deductions":{"items":{"type":"string"},"type":"array","title":"Deductions","description":"Specific shortcomings the check recorded, even when it passed. A judge can pass with a score below 1 and still list deductions here; those checks do not appear in `failure_reasons`."},"details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Details","description":"Reasoning or check output explaining the verdict."},"criteria_verdicts":{"items":{"$ref":"#/components/schemas/PublicCriterionVerdict"},"type":"array","title":"Criteria Verdicts","description":"Judges only: a verdict for each mandatory requirement in the judge criteria. Empty for other checks and for runs graded before per-requirement verdicts were recorded."},"not_applicable":{"type":"boolean","title":"Not Applicable","description":"Judges only: true when every requirement was `NOT_APPLICABLE`. The check is left out of the run's score and does not fail the run.","default":false}},"type":"object","required":["name"],"title":"PublicGraderResult"},"PublicOkResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"}},"type":"object","required":["ok"],"title":"PublicOkResponse"},"PublicPeriodCoverage":{"properties":{"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"runs":{"type":"integer","title":"Runs"},"expected_runs":{"type":"integer","title":"Expected Runs"},"complete_days":{"type":"integer","title":"Complete Days","description":"Days in the period other than today in progress."},"runs_per_day":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Runs Per Day","description":"Runs per complete day."},"missing_days":{"items":{"type":"string"},"type":"array","title":"Missing Days"},"short_days":{"items":{"type":"string"},"type":"array","title":"Short Days"}},"type":"object","required":["start_date","end_date","runs","expected_runs","complete_days"],"title":"PublicPeriodCoverage"},"PublicPeriodRates":{"properties":{"runs":{"type":"integer","title":"Runs"},"owned_citations":{"type":"integer","title":"Owned Citations","description":"Citations of the organization's own domains."},"owned_citations_per_run":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Owned Citations Per Run"},"brand_mention_runs":{"type":"integer","title":"Brand Mention Runs","description":"Runs that mention the primary company."},"mention_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mention Rate","description":"Share of runs that mention the primary company, from 0 to 1."}},"type":"object","required":["runs","owned_citations","brand_mention_runs"],"title":"PublicPeriodRates"},"PublicPlatformRef":{"properties":{"platform_id":{"type":"string","title":"Platform Id"},"name":{"type":"string","title":"Name"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"mention_count":{"type":"integer","title":"Mention Count","description":"Prompt runs where the company was mentioned on this platform in the date range.","default":0},"prompt_run_count":{"type":"integer","title":"Prompt Run Count","description":"Total prompt runs on this platform in the date range.","default":0}},"type":"object","required":["platform_id","name"],"title":"PublicPlatformRef"},"PublicPreviousVisibility":{"properties":{"recommendation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recommendation Score","description":"Mean recommendation strength across successful prompt runs, from 0 to 1. Each run contributes the company's recommendation strength (0 to 1) when it is mentioned and 0 when it is not. Failed provider runs are excluded. `null` unless the organization turns on Recommendation Score under Settings › Navigation."},"visibility_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Visibility Score","description":"Fraction of successful prompt runs that mention the company, from 0 to 1; for example, 0.25 means one in four runs. Failed provider runs are excluded."},"share_of_voice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Of Voice","description":"The company's share of all mentions of tracked companies (your company plus configured competitors) in the same prompt runs, from 0 to 1; tracked companies add up to 1. Each company counts once per run. `null` for companies you do not track. Not the `share_of_voice` field removed in October 2026, which held the mention rate now returned as `visibility_score`."},"average_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Position"},"has_data":{"type":"boolean","title":"Has Data","default":false}},"type":"object","title":"PublicPreviousVisibility"},"PublicPrompt":{"properties":{"id":{"type":"string","title":"Id"},"topic_id":{"type":"string","title":"Topic Id"},"text":{"type":"string","title":"Text"},"is_branded":{"type":"boolean","title":"Is Branded","description":"Whether the prompt text names your own brand. Detected when the prompt is created, and can be set explicitly.","default":false},"language_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Id"},"region_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Id"},"status":{"type":"string","enum":["active","inactive","archived"],"title":"Status","description":"The prompt lifecycle status. Only `active` prompts run on schedule."},"topic":{"anyOf":[{"$ref":"#/components/schemas/PublicPromptTopic"},{"type":"null"}]},"platforms":{"items":{"$ref":"#/components/schemas/PublicPromptPlatform"},"type":"array","title":"Platforms"},"tags":{"items":{"$ref":"#/components/schemas/PublicPromptTag"},"type":"array","title":"Tags"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","topic_id","text","status"],"title":"PublicPrompt"},"PublicPromptBatchResponse":{"properties":{"created":{"items":{"$ref":"#/components/schemas/PublicPrompt"},"type":"array","title":"Created"},"count":{"type":"integer","title":"Count"},"errors":{"items":{"$ref":"#/components/schemas/PromptBatchError"},"type":"array","title":"Errors"}},"type":"object","required":["created","count"],"title":"PublicPromptBatchResponse"},"PublicPromptConfigResponse":{"properties":{"topics":{"items":{"$ref":"#/components/schemas/PublicPromptTopic"},"type":"array","title":"Topics"},"platforms":{"items":{"$ref":"#/components/schemas/PublicPromptPlatformCatalogItem"},"type":"array","title":"Platforms"},"languages":{"items":{"$ref":"#/components/schemas/PublicPromptLanguage"},"type":"array","title":"Languages"},"regions":{"items":{"$ref":"#/components/schemas/PublicPromptRegion"},"type":"array","title":"Regions"},"defaults":{"$ref":"#/components/schemas/PublicPromptDefaults"}},"type":"object","required":["topics","platforms","languages","regions","defaults"],"title":"PublicPromptConfigResponse"},"PublicPromptDefaults":{"properties":{"language_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language Id"},"region_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region Id"}},"type":"object","title":"PublicPromptDefaults"},"PublicPromptEvalRunRequest":{"properties":{"type":{"type":"string","const":"prompts","title":"Type"},"prompt_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Prompt Ids","description":"Omit to run all active prompts."},"targets":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicPromptEvalRunTarget"},"type":"array"},{"type":"null"}],"title":"Targets","description":"Omit to use the configured scheduled targets."},"force":{"type":"boolean","title":"Force","description":"Re-run even if the prompt already ran today on that platform and model.","default":false}},"type":"object","required":["type"],"title":"PublicPromptEvalRunRequest"},"PublicPromptEvalRunTarget":{"properties":{"target_kind":{"type":"string","enum":["answer_engine","coding_agent"],"title":"Target Kind","description":"The execution mode for this target. Use `credits_per_prompt` from `GET /v1/prompts/config` for its current credit cost."},"execution_platform":{"type":"string","title":"Execution Platform"},"prompt_platform_id":{"type":"string","title":"Prompt Platform Id","description":"Platform ID from GET /v1/prompts/config."},"model_id":{"type":"string","title":"Model Id"},"prompt_topic_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Topic Id","description":"Topic ID from GET /v1/prompts/config."},"search_grounding":{"$ref":"#/components/schemas/SearchGroundingMode","description":"Controls live retrieval for this target. `disabled` requests a zero-retrieval run, `enabled` requires observed live retrieval, and `default` preserves normal platform behavior. For coding agents, `default` uses each prompt's saved web access setting. Answer engines other than `claude` always search the web, so they accept only `default` and `enabled`.","default":"default"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["target_kind","execution_platform","prompt_platform_id","model_id"],"title":"PublicPromptEvalRunTarget"},"PublicPromptLanguage":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code","description":"IETF language tag, such as `zh-CN`."}},"type":"object","required":["id","name"],"title":"PublicPromptLanguage"},"PublicPromptOpportunity":{"properties":{"id":{"type":"string","title":"Id","description":"Stable across requests and windows for the same finding. There is no retrieve endpoint."},"type":{"type":"string","title":"Type","description":"Determines which undeclared extra fields the object carries, such as `winner_brand_name` on `almost_winning`."},"category":{"type":"string","title":"Category"},"priority":{"type":"string","title":"Priority"},"title":{"type":"string","title":"Title"},"description":{"type":"string","title":"Description"},"action":{"type":"string","title":"Action"},"execution_prompt":{"type":"string","title":"Execution Prompt"},"impact_score":{"type":"number","title":"Impact Score","description":"Out of 100. Recomputed per window, so the same `id` can score differently across windows."},"created_at":{"type":"string","title":"Created At","description":"Time of the request, since opportunities are computed per call."}},"additionalProperties":true,"type":"object","required":["id","type","category","priority","title","description","action","execution_prompt","impact_score","created_at"],"title":"PublicPromptOpportunity"},"PublicPromptPlatform":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"PublicPromptPlatform"},"PublicPromptPlatformCatalogItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"credits_per_prompt":{"type":"integer","title":"Credits Per Prompt"}},"type":"object","required":["id","name","credits_per_prompt"],"title":"PublicPromptPlatformCatalogItem"},"PublicPromptRegion":{"properties":{"id":{"type":"string","title":"Id"},"country":{"type":"string","title":"Country"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"ISO 3166-1 alpha-2 country code, such as `AR`."}},"type":"object","required":["id","country"],"title":"PublicPromptRegion"},"PublicPromptTag":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"PublicPromptTag"},"PublicPromptTopic":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"PublicPromptTopic"},"PublicPromptVisibilityDateRange":{"properties":{"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"latest_run_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Run Date"},"active_prompts_only":{"type":"boolean","title":"Active Prompts Only","default":true}},"type":"object","required":["start_date","end_date"],"title":"PublicPromptVisibilityDateRange"},"PublicPromptVisibilityMetrics":{"properties":{"recommendation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recommendation Score","description":"Mean recommendation strength across successful prompt runs, from 0 to 1. Each run contributes the company's recommendation strength (0 to 1) when it is mentioned and 0 when it is not. Failed provider runs are excluded. `null` unless the organization turns on Recommendation Score under Settings › Navigation."},"recommendation_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recommendation Score Rank"},"visibility_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Visibility Score","description":"Fraction of successful prompt runs that mention the company, from 0 to 1; for example, 0.25 means one in four runs. Failed provider runs are excluded."},"share_of_voice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Of Voice","description":"The company's share of all mentions of tracked companies (your company plus configured competitors) in the same prompt runs, from 0 to 1; tracked companies add up to 1. Each company counts once per run. `null` for companies you do not track. Not the `share_of_voice` field removed in October 2026, which held the mention rate now returned as `visibility_score`."},"average_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Position","description":"Mean mention position in AI responses; 1 is first and lower is better. 0 when runs produced no mentions."},"citation_count":{"type":"integer","title":"Citation Count","description":"Owned-domain citations only.","default":0},"run_count":{"type":"integer","title":"Run Count","description":"One per prompt, platform, and run date.","default":0}},"type":"object","title":"PublicPromptVisibilityMetrics"},"PublicPromptVisibilityReportResponse":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"date_range":{"$ref":"#/components/schemas/PublicPromptVisibilityDateRange"},"has_data":{"type":"boolean","title":"Has Data"},"summary":{"$ref":"#/components/schemas/PublicPromptVisibilitySummary"},"topics":{"items":{"$ref":"#/components/schemas/PublicTopicVisibilityRow"},"type":"array","title":"Topics"},"period":{"anyOf":[{"$ref":"#/components/schemas/PublicResolvedPeriod"},{"type":"null"}],"description":"The resolved period and the previous period it is compared with."},"coverage":{"anyOf":[{"$ref":"#/components/schemas/PublicCoverage"},{"type":"null"}],"description":"Runs per day against expected runs for both periods. Check `comparable` before comparing totals."},"rates":{"anyOf":[{"$ref":"#/components/schemas/PublicRates"},{"type":"null"}],"description":"Runs, owned citations, and per-run rates for both periods. Lead with `headline_metric`."}},"type":"object","required":["company","date_range","has_data","summary"],"title":"PublicPromptVisibilityReportResponse"},"PublicPromptVisibilityRow":{"properties":{"id":{"type":"string","title":"Id"},"text":{"type":"string","title":"Text"},"metrics":{"$ref":"#/components/schemas/PublicPromptVisibilityMetrics"}},"type":"object","required":["id","text","metrics"],"title":"PublicPromptVisibilityRow"},"PublicPromptVisibilitySummary":{"properties":{"prompt_count":{"type":"integer","title":"Prompt Count"},"topic_count":{"type":"integer","title":"Topic Count"},"metrics":{"$ref":"#/components/schemas/PublicPromptVisibilityMetrics"}},"type":"object","required":["prompt_count","topic_count","metrics"],"title":"PublicPromptVisibilitySummary"},"PublicRateChanges":{"properties":{"owned_citations":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Owned Citations","description":"Relative change from the previous period; 0.25 means 25% higher."},"owned_citations_per_run":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Owned Citations Per Run","description":"Relative change from the previous period."},"mention_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mention Rate","description":"Relative change from the previous period."}},"type":"object","title":"PublicRateChanges"},"PublicRates":{"properties":{"headline_metric":{"type":"string","enum":["owned_citations","owned_citations_per_run"],"title":"Headline Metric","description":"The number to lead with: owned citations when the periods are comparable, otherwise owned citations per run."},"current":{"$ref":"#/components/schemas/PublicPeriodRates"},"previous":{"$ref":"#/components/schemas/PublicPeriodRates"},"change":{"$ref":"#/components/schemas/PublicRateChanges"}},"type":"object","required":["headline_metric","current","previous","change"],"title":"PublicRates"},"PublicRefreshActionsRequest":{"properties":{"source_id":{"type":"string","title":"Source Id","description":"Source ID from GET /v1/api-performance/sources."},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","title":"PublicRefreshActionsRequest"},"PublicRefreshActionsResponse":{"properties":{"generated":{"type":"integer","title":"Generated"},"updated":{"type":"integer","title":"Updated"},"unchanged":{"type":"integer","title":"Unchanged"},"total_candidates":{"type":"integer","title":"Total Candidates"}},"type":"object","required":["generated","updated","unchanged","total_candidates"],"title":"PublicRefreshActionsResponse"},"PublicResolvedPeriod":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"The `period` requested, or null when the range came from `start_date` and `end_date`."},"start_date":{"type":"string","title":"Start Date","description":"First day of the period (UTC), inclusive."},"end_date":{"type":"string","title":"End Date","description":"Last day of the period (UTC), inclusive."},"days":{"type":"integer","title":"Days","description":"Days in the period, counting both ends."},"previous_start_date":{"type":"string","title":"Previous Start Date","description":"First day of the previous period it is compared with."},"previous_end_date":{"type":"string","title":"Previous End Date","description":"Last day of the previous period. While a calendar week, month, or quarter is in progress, the previous one is cut to the same number of days."},"previous_days":{"type":"integer","title":"Previous Days","description":"Days in the previous period."},"partial":{"type":"boolean","title":"Partial","description":"Whether the period includes today, so its last day is still in progress."},"timezone":{"type":"string","const":"UTC","title":"Timezone","default":"UTC"}},"type":"object","required":["start_date","end_date","days","previous_start_date","previous_end_date","previous_days","partial"],"title":"PublicResolvedPeriod"},"PublicSeriesPoint":{"properties":{"date":{"type":"string","title":"Date","description":"Only dates with prompt runs appear, so a series can be shorter than the range."},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"}},"type":"object","required":["date"],"title":"PublicSeriesPoint"},"PublicSiteAuditIssue":{"properties":{"id":{"type":"string","title":"Id","description":"Check identifier such as `canonical-url`; the same id recurs on every page failing that check."},"category":{"type":"string","title":"Category","description":"One of `access`, `delivery`, `discoverability`, `metadata`, or `quality`."},"severity":{"type":"string","enum":["warning","error"],"title":"Severity"},"message":{"type":"string","title":"Message"},"recommendation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recommendation"},"evidence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence"}},"type":"object","required":["id","category","severity","message"],"title":"PublicSiteAuditIssue"},"PublicSiteAuditListResponse":{"properties":{"audit":{"anyOf":[{"$ref":"#/components/schemas/PublicSiteAuditSnapshot"},{"type":"null"}]},"pages":{"items":{"$ref":"#/components/schemas/PublicSiteAuditPage"},"type":"array","title":"Pages"}},"type":"object","title":"PublicSiteAuditListResponse"},"PublicSiteAuditPage":{"properties":{"site_id":{"type":"string","title":"Site Id"},"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score","description":"The page audit score, from 0 to 100."},"grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grade"},"status":{"type":"string","title":"Status","description":"Health band from the findings, not a processing state."},"priority":{"type":"string","title":"Priority"},"issue_count":{"type":"integer","title":"Issue Count"},"issues":{"items":{"$ref":"#/components/schemas/PublicSiteAuditIssue"},"type":"array","title":"Issues"}},"type":"object","required":["site_id","url","status","priority","issue_count"],"title":"PublicSiteAuditPage"},"PublicSiteAuditSnapshot":{"properties":{"url":{"type":"string","title":"Url"},"status":{"type":"string","title":"Status","description":"Processing status of the audit run, unlike the per-page health `status`."},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score","description":"The overall audit score, from 0 to 100; it is not the mean of the per-page scores."},"grade":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grade"},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At"},"total_pages":{"type":"integer","title":"Total Pages"},"pages_with_issues":{"type":"integer","title":"Pages With Issues"},"failed_pages":{"type":"integer","title":"Failed Pages","description":"Pages whose processing failed, not pages with issues."}},"type":"object","required":["url","status","total_pages","pages_with_issues","failed_pages"],"title":"PublicSiteAuditSnapshot"},"PublicStartingProject":{"properties":{"id":{"type":"string","title":"Id"},"source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Id","description":"Null when not scoped to one source; the list's `source_id` filter then excludes it."},"name":{"type":"string","title":"Name"},"repo_url":{"type":"string","title":"Repo Url"},"ref":{"type":"string","title":"Ref"},"subdir":{"type":"string","title":"Subdir","default":""},"install_steps":{"items":{"type":"string"},"type":"array","title":"Install Steps"},"framework":{"type":"string","enum":["fastify","nuxt","express","spa-js","angular","react","fastapi","vite","nextjs","custom"],"title":"Framework","default":"custom"},"enabled":{"type":"boolean","title":"Enabled"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","repo_url","ref","enabled"],"title":"PublicStartingProject"},"PublicStartingProjectRequest":{"properties":{"name":{"type":"string","title":"Name"},"repo_url":{"type":"string","title":"Repo Url"},"ref":{"type":"string","title":"Ref","description":"Branch, tag, or commit SHA.","default":"main"},"subdir":{"type":"string","title":"Subdir","description":"Project root inside the repository; empty for the root.","default":""},"install_steps":{"items":{"type":"string"},"type":"array","title":"Install Steps"},"source_id":{"type":"string","title":"Source Id","description":"Source ID from GET /v1/api-performance/sources."},"framework":{"type":"string","enum":["fastify","nuxt","express","spa-js","angular","react","fastapi","vite","nextjs","custom"],"title":"Framework","default":"custom"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"type":"object","required":["name","repo_url"],"title":"PublicStartingProjectRequest"},"PublicStartingProjectUpdateRequest":{"properties":{"name":{"type":"string","title":"Name"},"repo_url":{"type":"string","title":"Repo Url"},"ref":{"type":"string","title":"Ref","description":"Branch, tag, or commit SHA."},"subdir":{"type":"string","title":"Subdir","description":"Empty string means the repository root."},"install_steps":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Install Steps"},"source_id":{"type":"string","title":"Source Id","description":"Source ID from GET /v1/api-performance/sources."},"framework":{"type":"string","enum":["fastify","nuxt","express","spa-js","angular","react","fastapi","vite","nextjs","custom"],"title":"Framework"},"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","title":"PublicStartingProjectUpdateRequest"},"PublicStartingProjectsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PublicStartingProject"},"type":"array","title":"Data"},"meta":{"additionalProperties":true,"type":"object","title":"Meta","description":"Carries `count`."}},"type":"object","required":["data"],"title":"PublicStartingProjectsResponse"},"PublicTask":{"properties":{"id":{"type":"string","title":"Id"},"action_date":{"type":"string","title":"Action Date"},"batch_number":{"type":"integer","title":"Batch Number"},"rank":{"type":"integer","title":"Rank","description":"Sort order within the batch, ascending; values need not start at 1."},"source_key":{"type":"string","title":"Source Key","description":"A finding key namespaced by source, such as `api_perf:https://example.com/docs/cli`."},"task_type":{"type":"string","title":"Task Type","description":"A free-form label such as `Redirect` or `Docs`; this field is not an enum."},"title":{"type":"string","title":"Title"},"why":{"type":"string","title":"Why"},"next_action":{"type":"string","title":"Next Action"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"execution_prompt":{"type":"string","title":"Execution Prompt"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content","description":"The task's Markdown write-up covering what went wrong, how to fix it, the impact, and the evidence. Null until the write-up is generated; see `content_status`."},"target_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Url","description":"The page the fix should be made on, when the task targets one."},"content_status":{"type":"string","enum":["none","writing","ready","failed"],"title":"Content Status","description":"Progress of the Markdown write-up in `content`.","default":"none"},"content_written_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Written At","description":"When the write-up in `content` was last generated."},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","description":"Supporting evidence with keys such as `expected_lift`, `failure_traces`, `source_prompts`, and `source_urls`."},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"Planner impact score; manually created tasks may be unscored."},"effort":{"type":"string","title":"Effort","description":"A free-form effort estimate such as `Low` or `Medium`; this field is not an enum."},"priority":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Priority"},"status":{"type":"string","title":"Status","description":"The workflow status. New tasks start as `new`. A task is `in_review` while its content waits to go live, as an open pull request or a CMS draft; it is listed with `in_progress` tasks. `added_to_sheet` and `snoozed` tasks are listed only when `status=all`."},"assignee_user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Assignee User Id"},"function_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Function Area"},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Type","description":"A free-form source type such as `api_performance`; manually created tasks may not have a source."},"source_refs":{"additionalProperties":true,"type":"object","title":"Source Refs","description":"Source references. For `api_performance` tasks, keys include `kind`, `brand_id`, `failed_url`, `fail_count`, and per-run `traces`."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Additional task metadata, including `source_key`, `impact_score`, `disposition`, `target_urls`, `edit_locations` (where on the target page each change goes: `url`, `anchor` heading, `placement` of `in`, `after`, or `before`, and `change`), `evidence_summary`, `source_start_date`, and `source_end_date`."},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["id","action_date","batch_number","rank","source_key","task_type","title","why","next_action","execution_prompt","effort","status"],"title":"PublicTask"},"PublicTopCitedUrlsResponse":{"properties":{"date_range":{"$ref":"#/components/schemas/PublicCitedUrlDateRange"},"platform":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Platform","description":"Platform selector applied to the results, or null for all platforms."},"source_type":{"type":"string","enum":["all","owned","external"],"title":"Source Type","description":"Whether the results include all, owned, or external URLs."},"has_data":{"type":"boolean","title":"Has Data","description":"Whether any citations matched the selected filters."},"count":{"type":"integer","title":"Count","description":"Number of URL rows returned."},"data":{"items":{"$ref":"#/components/schemas/PublicCitedUrl"},"type":"array","title":"Data","description":"Cited URLs ranked by citation count in descending order."},"period":{"anyOf":[{"$ref":"#/components/schemas/PublicResolvedPeriod"},{"type":"null"}],"description":"The resolved period and the previous period it is compared with."},"coverage":{"anyOf":[{"$ref":"#/components/schemas/PublicCoverage"},{"type":"null"}],"description":"Runs per day against expected runs for both periods. Check `comparable` before comparing totals."},"rates":{"anyOf":[{"$ref":"#/components/schemas/PublicRates"},{"type":"null"}],"description":"Runs, owned citations, and per-run rates for both periods. Lead with `headline_metric`."}},"type":"object","required":["date_range","source_type","has_data","count"],"title":"PublicTopCitedUrlsResponse"},"PublicTopicVisibilityRow":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"prompt_count":{"type":"integer","title":"Prompt Count"},"metrics":{"$ref":"#/components/schemas/PublicPromptVisibilityMetrics"},"prompts":{"items":{"$ref":"#/components/schemas/PublicPromptVisibilityRow"},"type":"array","title":"Prompts"}},"type":"object","required":["id","name","prompt_count","metrics"],"title":"PublicTopicVisibilityRow"},"PublicUpdateActionRequest":{"properties":{"status":{"type":"string","title":"Status","description":"open, in_progress, ignored, fixed, or verified."},"owner_user_id":{"type":"string","title":"Owner User Id"},"ignored_reason":{"type":"string","title":"Ignored Reason"},"note":{"type":"string","title":"Note","description":"Recorded but never returned by any read endpoint."}},"type":"object","title":"PublicUpdateActionRequest"},"PublicVerifyActionResponse":{"properties":{"status":{"type":"string","title":"Status"},"action":{"anyOf":[{"$ref":"#/components/schemas/PublicApiPerformanceAction"},{"type":"null"}]},"url_check":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Url Check"}},"type":"object","required":["status"],"title":"PublicVerifyActionResponse"},"PublicVisibilityByPlatform":{"properties":{"platforms":{"items":{"$ref":"#/components/schemas/PublicPlatformRef"},"type":"array","title":"Platforms"},"recommendation_score":{"additionalProperties":{"items":{"$ref":"#/components/schemas/PublicSeriesPoint"},"type":"array"},"type":"object","title":"Recommendation Score","description":"Recommendation score series keyed by `platform_id`. Empty unless the organization turns on Recommendation Score under Settings › Navigation."},"visibility_score":{"additionalProperties":{"items":{"$ref":"#/components/schemas/PublicSeriesPoint"},"type":"array"},"type":"object","title":"Visibility Score","description":"Visibility score series keyed by `platform_id`: the share of that platform's prompt runs each day that mention the company (0 to 1)."},"citations":{"additionalProperties":{"items":{"$ref":"#/components/schemas/PublicSeriesPoint"},"type":"array"},"type":"object","title":"Citations","description":"Owned-domain citation counts keyed by platform_id."}},"type":"object","title":"PublicVisibilityByPlatform"},"PublicVisibilityDateRange":{"properties":{"start_date":{"type":"string","title":"Start Date"},"end_date":{"type":"string","title":"End Date"},"granularity":{"type":"string","title":"Granularity","default":"day"},"latest_run_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Run Date"},"active_prompts_only":{"type":"boolean","title":"Active Prompts Only","default":true}},"type":"object","required":["start_date","end_date"],"title":"PublicVisibilityDateRange"},"PublicVisibilityOverviewResponse":{"properties":{"company":{"$ref":"#/components/schemas/PublicCompany"},"date_range":{"$ref":"#/components/schemas/PublicVisibilityDateRange"},"has_data":{"type":"boolean","title":"Has Data"},"snapshot":{"$ref":"#/components/schemas/PublicVisibilitySnapshot"},"timeseries":{"$ref":"#/components/schemas/PublicVisibilityTimeseries"},"by_platform":{"$ref":"#/components/schemas/PublicVisibilityByPlatform"},"competitors":{"items":{"$ref":"#/components/schemas/PublicCompetitorRow"},"type":"array","title":"Competitors","description":"Includes the primary company."},"period":{"anyOf":[{"$ref":"#/components/schemas/PublicResolvedPeriod"},{"type":"null"}],"description":"The resolved period and the previous period it is compared with."},"coverage":{"anyOf":[{"$ref":"#/components/schemas/PublicCoverage"},{"type":"null"}],"description":"Runs per day against expected runs for both periods. Check `comparable` before comparing totals."},"rates":{"anyOf":[{"$ref":"#/components/schemas/PublicRates"},{"type":"null"}],"description":"Runs, owned citations, and per-run rates for both periods. Lead with `headline_metric`."}},"type":"object","required":["company","date_range","has_data","snapshot","timeseries","by_platform"],"title":"PublicVisibilityOverviewResponse"},"PublicVisibilitySnapshot":{"properties":{"recommendation_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Recommendation Score","description":"Mean recommendation strength across successful prompt runs, from 0 to 1. Each run contributes the company's recommendation strength (0 to 1) when it is mentioned and 0 when it is not. Failed provider runs are excluded. `null` unless the organization turns on Recommendation Score under Settings › Navigation."},"recommendation_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recommendation Score Rank"},"visibility_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Visibility Score","description":"Fraction of successful prompt runs that mention the company, from 0 to 1; for example, 0.25 means one in four runs. Failed provider runs are excluded."},"visibility_score_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Visibility Score Rank"},"share_of_voice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Of Voice","description":"The company's share of all mentions of tracked companies (your company plus configured competitors) in the same prompt runs, from 0 to 1; tracked companies add up to 1. Each company counts once per run. `null` for companies you do not track. Not the `share_of_voice` field removed in October 2026, which held the mention rate now returned as `visibility_score`."},"share_of_voice_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Share Of Voice Rank","description":"Rank by `share_of_voice` among tracked companies, highest first."},"average_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Position","description":"Mean mention position in AI responses; 1 is first and lower is better."},"average_position_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Average Position Rank"},"total_citations":{"type":"integer","title":"Total Citations","description":"Owned-domain citations across all platforms; 0, not `null`, with no prompt runs.","default":0}},"type":"object","title":"PublicVisibilitySnapshot"},"PublicVisibilityTimeseries":{"properties":{"recommendation_score":{"items":{"$ref":"#/components/schemas/PublicSeriesPoint"},"type":"array","title":"Recommendation Score","description":"Company recommendation score per day. Empty unless the organization turns on Recommendation Score under Settings › Navigation."},"visibility_score":{"items":{"$ref":"#/components/schemas/PublicSeriesPoint"},"type":"array","title":"Visibility Score","description":"Company visibility score per day: the share of prompt runs that mention the company (0 to 1)."}},"type":"object","title":"PublicVisibilityTimeseries"},"SearchGroundingMode":{"type":"string","enum":["disabled","enabled","default"],"title":"SearchGroundingMode","description":"Requested web-retrieval behavior for an eval run."},"UpdatePromptTopicRequest":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"UpdatePromptTopicRequest"},"UpdatePublicPromptRequest":{"properties":{"text":{"type":"string","minLength":1,"title":"Text"},"topic_id":{"type":"string","title":"Topic Id","description":"Topic ID from GET /v1/prompts/config."},"platform_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Platform Ids","description":"Replaces the platform list. IDs from GET /v1/prompts/config."},"status":{"type":"string","enum":["active","inactive"],"title":"Status"},"is_branded":{"type":"boolean","title":"Is Branded","description":"Marks the prompt as branded or unbranded. Omit to keep the current value; changing `text` does not change it."}},"additionalProperties":false,"type":"object","title":"UpdatePublicPromptRequest"},"UpdateTaskRequest":{"properties":{"status":{"type":"string","enum":["new","in_progress","added_to_sheet","done","dismissed","snoozed"],"title":"Status","description":"The new task status. `added_to_sheet` and `snoozed` tasks are listed only when `status=all`."},"priority":{"type":"string","enum":["urgent","high","medium","low"],"title":"Priority"},"assignee_user_id":{"type":"string","title":"Assignee User Id"},"action_type":{"type":"string","enum":["agent_discovery","agent_usability"],"title":"Action Type"}},"additionalProperties":false,"type":"object","title":"UpdateTaskRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"LightsageApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Lightsage-Api-Key"}}},"tags":[{"name":"Status","description":"Check API health and validate the calling API key."},{"name":"Prompts","description":"Create and manage the Visibility prompts tracked across AI platforms, along with their topics."},{"name":"Opportunities","description":"Review ranked content and visibility opportunities derived from prompt results. Each opportunity includes an execution prompt."},{"name":"Tasks","description":"Manage the persisted daily action queue. Each task includes an execution prompt and moves through a workflow status."},{"name":"Eval Jobs","description":"Start and poll eval jobs. `POST /v1/eval-runs` is the single entry point for every eval type, including Visibility prompt runs, API operation evals, and user-created evals, and returns a job ID to poll. Job IDs are a separate ID space from the result rows returned by Eval Results."},{"name":"Site Audit","description":"Review per-page audit scores and the actionable issues found on each page."},{"name":"Visibility","description":"Measure recommendation score, visibility score, and competitor ranking across tracked AI platforms."},{"name":"Eval Setup","description":"Configure API sources, evaluation targets, environment profiles, skills, and starter projects."},{"name":"Eval Configuration","description":"Manage the prompts, expected behavior, and runtime settings used by API operation evals and user-created evals."},{"name":"Evals","description":"Create and manage end-to-end eval workflows."},{"name":"Eval Results","description":"Review completed evaluations and diagnose failure patterns over a time window. Result IDs are separate from the job IDs returned by `POST /v1/eval-runs`."},{"name":"Eval Actions","description":"Manage prioritized fixes generated from eval results, including status tracking and verification."}]}