Trigger topic extraction for the sources in scope
Selects the top 1000 source pages (deduped per url + month, ranked by citation count) matching the standard analytics filters (date range, countries, languages, models, queries, tags) and enqueues their cached page metadata (title + description) for vectorization into the source-topics vector store. Use /source-topics/preview to inspect the selected set first. Returns the id of the created run and the number of enqueued jobs. Every trigger creates a NEW run; extracts are serialized per project — a 409 is returned while another extraction run is in flight. Sources whose metadata was not cached at scrape time are skipped by the worker.
Headers
Project ID to specify the project context
Body
Start date (inclusive)
"2025-01-01"
End date (exclusive)
"2025-02-01"
Filter by country codes
Filter by language codes
Filter by AI models
Filter by query IDs
Filter by source presence: "sources" (only with sources), "no_sources" (only without), "all" (no filter). Legacy true/false values are still accepted.
all, sources, no_sources Filter by shopping presence: "shopping" (only with shopping), "no_shopping" (only without), "all" (no filter). Legacy true/false values are still accepted.
all, shopping, no_shopping Filter by query tag IDs (numeric — bigint column)
Filter by execution tag IDs
Filter by query tag group IDs — matches rows carrying any tag filed under a selected group. Combines with queryTagIds per queryTagMode.
Filter by execution tag group IDs — matches rows carrying any tag filed under a selected group. Combines with execTagIds per execTagMode.
Filter by query type. Include "untyped" to also match queries without a type. Results from since-deleted queries are excluded when this filter is set.
comparative, informative, perception, untyped Query tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.
and, or Execution tag matching mode: "or" matches ANY tag (default), "and" matches ALL tags.
and, or IANA timezone for date bucketing and filtering (e.g. "Europe/Brussels"). Defaults to UTC.
"Europe/Brussels"
Row grouping level for entity results. "none" = one row per entity, "division" = one row per division (entities not in a division get their own row), "group" = one row per top-level group (divisions roll up into their group). Defaults to "none".
none, division, group Deprecated — use groupBy instead. true is equivalent to groupBy="group".
false
Include entities that have only ever been seen in a single AI response. These are mostly one-off extraction noise and are hidden by default.
false
Response
Run UUID. Poll its status via GET /api/v1/source-topics/runs/{runId} (or the list endpoint) to track progress.
"019dd32e-b19e-7956-88f6-4b9a877f3697"
Number of source topic-extraction jobs enqueued (one per distinct (url, month) matching the filters). Jobs are deduped at the queue level, so re-triggering with the same scope is idempotent. Sources whose page metadata was not cached are skipped by the worker and are not represented in this count beyond their enqueue.
248