Profound External API

The programmatic interface to Profound's Answer Engine Optimization data: brand visibility, citations, sentiment, query fan-outs, FactCheck accuracy, shopping visibility, YouTube social reports, AI crawler (bot) and human referral traffic, plus knowledge bases, documents, projects, content optimization and runnable Profound Agents. 125 operations across v1 and v2, with server-sent-event /stream variants on every v2 query endpoint. Authentication is an X-API-Key header; access is Enterprise-only on request.

OpenAPI Specification

profound-external-api-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"title":"External API","version":"6551bd49db665ffb7f80780b3e150b8e8b780cc3"},"servers":[{"url":"https://api.tryprofound.com","description":"Production Server"}],"paths":{"/v1/org":{"get":{"tags":["Organization"],"summary":"List organizations","description":"Return every organization the caller's API key grants access to. Use this to discover organization IDs before calling endpoints that accept an `organization_id` filter.","operationId":"list_organizations_v1_org_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Organization"},"type":"array","title":"Response List Organizations V1 Org Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/org/regions":{"get":{"tags":["Organization"],"summary":"Get Regions","description":"Get the organization regions.","operationId":"get_regions_v1_org_regions_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to.","title":"Organization Ids"},"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NamedResource"},"title":"Response Get Regions V1 Org Regions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/models":{"get":{"tags":["Organization"],"summary":"Get Models","description":"Get the organization models.","operationId":"get_models_v1_org_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/NamedResource"},"type":"array","title":"Response Get Models V1 Org Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/org/domains":{"get":{"tags":["Organization"],"summary":"Get Domains","description":"Get the organization domains.","operationId":"get_domains_v1_org_domains_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to.","title":"Organization Ids"},"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DomainWithOrganization"},"title":"Response Get Domains V1 Org Domains Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/assets":{"get":{"tags":["Organization"],"summary":"Get Assets","description":"Get the organization assets, one row per (asset, organization) pair.\n\nAn asset's category can belong to multiple organizations; one asset row is\nemitted per owning org so no association is silently dropped.","operationId":"get_assets_v1_org_assets_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to.","title":"Organization Ids"},"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationAssetsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/personas":{"get":{"tags":["Organization"],"summary":"Get Personas","description":"Get the organization personas, one row per (persona, organization) pair.\n\nSame (item, org) fan-out as ``get_assets``: a persona's category can be\nowned by multiple orgs, and each owning org gets its own row so no\nassociation is silently dropped.","operationId":"get_personas_v1_org_personas_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to.","title":"Organization Ids"},"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationPersonasWithCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories":{"get":{"tags":["Organization","Categories"],"summary":"Get Categories","description":"Get the organization categories, one row per (category, organization) pair.","operationId":"get_categories_v1_org_categories_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"organization_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to.","title":"Organization Ids"},"description":"Restrict results to one or more organizations the caller belongs to. Repeat the parameter to target multiple orgs (e.g. `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return data from every organization the caller has access to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryWithOrganization"},"title":"Response Get Categories V1 Org Categories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/topics":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Topics","description":"Get the topics for a specific category.","operationId":"get_category_topics_v1_org_categories__category_id__topics_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Topic"},"title":"Response Get Category Topics V1 Org Categories  Category Id  Topics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/tags":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Tags","description":"Get the tags for a specific category.","operationId":"get_category_tags_v1_org_categories__category_id__tags_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"},"title":"Response Get Category Tags V1 Org Categories  Category Id  Tags Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/regions":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Regions","description":"Get the regions for a specific category.","operationId":"get_category_regions_v1_org_categories__category_id__regions_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NamedResource"},"title":"Response Get Category Regions V1 Org Categories  Category Id  Regions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/citation-categories":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Citation Categories","description":"Get the citation categories for a category: the built-in buckets plus any custom categories.","operationId":"get_category_citation_categories_v1_org_categories__category_id__citation_categories_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationCategoriesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/citation-tags":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Citation Tags","description":"Get the custom citation tags defined for a category.","operationId":"get_category_citation_tags_v1_org_categories__category_id__citation_tags_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationTagsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/prompts":{"get":{"tags":["Organization","Categories"],"summary":"List prompts","description":"Retrieve prompts in a category with optional filtering by type, topic, tag, region, platform, or persona. Supports cursor-based pagination.","operationId":"get_category_prompts_v1_org_categories__category_id__prompts_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"exclusiveMinimum":0,"description":"Maximum number of prompts to return.","default":10000,"title":"Limit"},"description":"Maximum number of prompts to return."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pagination cursor from a previous response.","title":"Cursor"},"description":"Pagination cursor from a previous response."},{"name":"order_by","in":"query","required":false,"schema":{"$ref":"#/components/schemas/PromptOrderBy","description":"Field used to order prompts.","default":"created_at"},"description":"Field used to order prompts."},{"name":"order_dir","in":"query","required":false,"schema":{"$ref":"#/components/schemas/OrderByDirection","description":"Sort direction for the selected order field.","default":"desc"},"description":"Sort direction for the selected order field."},{"name":"analysis_type","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnalysisType"},"description":"Filter by analysis type (visibility, sentiment, accuracy).","default":[],"title":"Analysis Type"},"description":"Filter by analysis type (visibility, sentiment, accuracy)."},{"name":"prompt_type","in":"query","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/PromptType"},"description":"Deprecated. Use analysis_type instead.","deprecated":true,"default":[],"title":"Prompt Type"},"description":"Deprecated. Use analysis_type instead.","deprecated":true},{"name":"status","in":"query","required":false,"schema":{"type":"array","items":{"enum":["active","disabled"],"type":"string"},"description":"Filter by prompt status. Defaults to `active` only.","default":["active"],"title":"Status"},"description":"Filter by prompt status. Defaults to `active` only."},{"name":"topic_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter by topic IDs.","default":[],"title":"Topic Id"},"description":"Filter by topic IDs."},{"name":"tag_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter by tag IDs.","default":[],"title":"Tag Id"},"description":"Filter by tag IDs."},{"name":"region_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter by region IDs.","default":[],"title":"Region Id"},"description":"Filter by region IDs."},{"name":"platform_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter by platform IDs.","default":[],"title":"Platform Id"},"description":"Filter by platform IDs."},{"name":"persona_id","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Filter by persona IDs.","default":[],"title":"Persona Id"},"description":"Filter by persona IDs."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryPromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Organization","Categories"],"summary":"Create prompts","description":"Create one or more prompts in a category. Topics and tags are auto-created if referenced by name and not yet existing. Use dry_run to preview without persisting.","operationId":"create_category_prompts_v1_org_categories__category_id__prompts_post","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Organization","Categories"],"summary":"Update prompts","description":"Update one or more existing prompts. Only provided fields are changed. Dimension fields (regions, platforms, personas, tags) replace the full set when provided. Use dry_run to preview without persisting.","operationId":"update_category_prompts_v1_org_categories__category_id__prompts_patch","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/prompts/status":{"patch":{"tags":["Organization","Categories"],"summary":"Update prompt status","description":"Bulk-update the status of one or more prompts. Prompts already in the target status are skipped. Use dry_run to preview without persisting.\n\nStatus options:\n- 'active': Prompts will run daily.\n- 'disabled': Prompts will not run moving forward, but historical data is preserved.\n- 'deleted': Prompts are deleted along with historical data","operationId":"update_category_prompt_status_v1_org_categories__category_id__prompts_status_patch","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptStatusBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromptStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/assets":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Assets","operationId":"get_category_assets_v1_org_categories__category_id__assets_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryAsset"},"title":"Response Get Category Assets V1 Org Categories  Category Id  Assets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/org/categories/{category_id}/personas":{"get":{"tags":["Organization","Categories"],"summary":"Get Category Personas","operationId":"get_category_personas_v1_org_categories__category_id__personas_get","security":[{"APIKeyHeader":[]},{"BearerAuth":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryPersonasResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prompts/answers":{"post":{"tags":["Prompts"],"summary":"Get Answers","operationId":"get_answers_v1_prompts_answers_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswersQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/citations":{"post":{"tags":["Reports","Reports"],"summary":"Query Citations","description":"Get citations for a given category.\n\nThe ``mentioned`` filter supports ``is true`` and ``is false``. It uses the\nlatest page analysis available at or before ``end_date``; pages without an\nanalysis by then are excluded from both values. ``citation_share`` keeps all\notherwise eligible citations in its denominator when this filter is used.","operationId":"query_citations_v1_reports_citations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationsQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/citations/stream":{"post":{"tags":["Reports","Reports"],"summary":"Stream Citations","description":"Stream citations with the same filter semantics as the non-streaming route.","operationId":"stream_citations_v1_reports_citations_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamCitationsQuery"}}},"required":true},"responses":{"200":{"description":"Server-sent events stream. Emits a `summary` event first, then one `row` event per streamed row.","content":{"text/event-stream":{"schema":{"oneOf":[{"properties":{"query":{"additionalProperties":true,"type":"object","title":"Query","description":"The normalized query used to build the stream."},"total_rows":{"type":"integer","title":"Total Rows","description":"Total number of rows available before pagination is applied."}},"type":"object","required":["query","total_rows"],"title":"SSESummaryEventData"},{"additionalProperties":true,"type":"object","description":"A streamed citations report row payload."}]},"examples":{"summary":{"summary":"Initial summary event payload","value":{"query":{"category_id":"12345678-1234-5678-1234-567812345678","metrics":["count"],"dimensions":["model"]},"total_rows":2}},"row":{"summary":"Streamed row event payload","value":{"model":{"id":"11111111-1111-1111-1111-111111111111","name":"GPT-4"},"count":42}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/visibility":{"post":{"tags":["Reports","Reports"],"summary":"Query Visibility","description":"Query visibility report.","operationId":"query_visibility_v1_reports_visibility_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/visibility/stream":{"post":{"tags":["Reports","Reports"],"summary":"Stream Visibility","operationId":"stream_visibility_v1_reports_visibility_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamVisibilityQuery"}}},"required":true},"responses":{"200":{"description":"Server-sent events stream. Emits a `summary` event first, then one `row` event per streamed row.","content":{"text/event-stream":{"schema":{"oneOf":[{"properties":{"query":{"additionalProperties":true,"type":"object","title":"Query","description":"The normalized query used to build the stream."},"total_rows":{"type":"integer","title":"Total Rows","description":"Total number of rows available before pagination is applied."}},"type":"object","required":["query","total_rows"],"title":"SSESummaryEventData"},{"additionalProperties":true,"type":"object","description":"A streamed visibility report row payload."}]},"examples":{"summary":{"summary":"Initial summary event payload","value":{"query":{"category_id":"12345678-1234-5678-1234-567812345678","metrics":["count"],"dimensions":["model"]},"total_rows":2}},"row":{"summary":"Streamed row event payload","value":{"asset":{"id":"11111111-1111-1111-1111-111111111111","name":"Brand A"},"mentions_count":7}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/sentiment":{"post":{"tags":["Reports","Reports"],"summary":"Query Sentiment","description":"Get citations for a given category.","operationId":"query_sentiment_v1_reports_sentiment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentimentQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/sentiment/stream":{"post":{"tags":["Reports","Reports"],"summary":"Stream Sentiment","operationId":"stream_sentiment_v1_reports_sentiment_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamSentimentQuery"}}},"required":true},"responses":{"200":{"description":"Server-sent events stream. Emits a `summary` event first, then one `row` event per streamed row.","content":{"text/event-stream":{"schema":{"oneOf":[{"properties":{"query":{"additionalProperties":true,"type":"object","title":"Query","description":"The normalized query used to build the stream."},"total_rows":{"type":"integer","title":"Total Rows","description":"Total number of rows available before pagination is applied."}},"type":"object","required":["query","total_rows"],"title":"SSESummaryEventData"},{"additionalProperties":true,"type":"object","description":"A streamed sentiment report row payload."}]},"examples":{"summary":{"summary":"Initial summary event payload","value":{"query":{"category_id":"12345678-1234-5678-1234-567812345678","metrics":["count"],"dimensions":["model"]},"total_rows":2}},"row":{"summary":"Streamed row event payload","value":{"theme":"price","occurrences":12}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/sentiment-v2":{"post":{"tags":["Reports","Reports"],"summary":"Query Sentiment V2","operationId":"query_sentiment_v2_v1_reports_sentiment_v2_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentimentV2ReportQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SentimentV2ReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/web-search-results":{"post":{"tags":["Reports","Reports"],"summary":"Query Web Search Results","description":"Get web search results for a given category.","operationId":"query_web_search_results_v1_reports_web_search_results_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchResultsQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebSearchResultsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/web-search-results/stream":{"post":{"tags":["Reports","Reports"],"summary":"Stream Web Search Results","operationId":"stream_web_search_results_v1_reports_web_search_results_stream_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StreamWebSearchResultsQuery"}}},"required":true},"responses":{"200":{"description":"Server-sent events stream. Emits a `summary` event first, then one `row` event per streamed row.","content":{"text/event-stream":{"schema":{"oneOf":[{"properties":{"query":{"additionalProperties":true,"type":"object","title":"Query","description":"The normalized query used to build the stream."},"total_rows":{"type":"integer","title":"Total Rows","description":"Total number of rows available before pagination is applied."}},"type":"object","required":["query","total_rows"],"title":"SSESummaryEventData"},{"additionalProperties":true,"type":"object","description":"A streamed web-search-results report row payload."}]},"examples":{"summary":{"summary":"Initial summary event payload","value":{"query":{"category_id":"12345678-1234-5678-1234-567812345678","metrics":["count"],"dimensions":["model"]},"total_rows":2}},"row":{"summary":"Streamed row event payload","value":{"model":{"id":"11111111-1111-1111-1111-111111111111","name":"GPT-4"},"count":42}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/referrals":{"post":{"tags":["Reports","Human Referrals"],"summary":"Get Referrals Report V1","description":"Get referral traffic report from the daily aggregated materialized view.\n\nThis endpoint queries pre-aggregated daily referral data, making it efficient\nfor large date ranges and high-traffic sites.","operationId":"get_referrals_report_v1_v1_reports_referrals_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralsQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth":[]}]}},"/v1/reports/bots":{"post":{"tags":["Reports","Bot Traffic Reports"],"summary":"Get Bots Report V1","description":"Get bot traffic report from the daily aggregated materialized view.\n\nThis endpoint queries pre-aggregated daily bot data, making it efficient\nfor large date ranges and high-traffic sites.\n\nMetrics:\n- count: unique bot visits\n- citations: unique citation events\n- indexing: unique indexing events\n- training: unique training events\n- last_visit: most recent visit timestamp","operationId":"get_bots_report_v1_v1_reports_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotsReportQuery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]},{"BearerAuth

# --- truncated at 32 KB (449 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/profound/refs/heads/main/openapi/profound-external-api-openapi.json