Pre-launch API. The concepts described here are settled, but the API shape is not: request and response fields, parameters and defaults can still change. Build against it, and talk to your Luigi's Box contact before you put an integration into production.
const url = 'https://api.eu1.luigisbox.ai/analytics/v1/searches/events?channel_ids=example&page=1&size=20';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"date_range":{"date_from":"2026-04-15T12:00:00Z","date_to":"2026-04-15T12:00:00Z"},"filters":{"$and":[{"applied_filter":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"consent_granted":{"eq":true},"device":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"external_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"filtered":{"eq":true},"followed_by_search":{"eq":true},"identity":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_id":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"no_results":{"eq":true},"personalized":{"eq":true},"platform":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"query":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"redirected":{"eq":true},"result_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"returning":{"eq":true},"session_rank":{"eq":1,"gt":1,"gte":1,"in":[1],"lt":1,"lte":1,"neq":1,"not_in":[1]},"traffic_source":{"eq":"direct","in":["direct"],"neq":"direct","not_in":["direct"]},"traffic_source_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_path":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]}}],"$not":{"applied_filter":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"consent_granted":{"eq":true},"device":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"external_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"filtered":{"eq":true},"followed_by_search":{"eq":true},"identity":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_id":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"no_results":{"eq":true},"personalized":{"eq":true},"platform":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"query":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"redirected":{"eq":true},"result_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"returning":{"eq":true},"session_rank":{"eq":1,"gt":1,"gte":1,"in":[1],"lt":1,"lte":1,"neq":1,"not_in":[1]},"traffic_source":{"eq":"direct","in":["direct"],"neq":"direct","not_in":["direct"]},"traffic_source_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_path":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]}},"$or":[{"applied_filter":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"consent_granted":{"eq":true},"device":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"external_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"filtered":{"eq":true},"followed_by_search":{"eq":true},"identity":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_id":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"internal_ab_test_variant":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"landing_page_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"no_results":{"eq":true},"personalized":{"eq":true},"platform":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"query":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"redirected":{"eq":true},"result_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"returning":{"eq":true},"session_rank":{"eq":1,"gt":1,"gte":1,"in":[1],"lt":1,"lte":1,"neq":1,"not_in":[1]},"traffic_source":{"eq":"direct","in":["direct"],"neq":"direct","not_in":["direct"]},"traffic_source_type":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_host":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]},"url_path":{"eq":"example","exists":true,"in":["example"],"matches":"example","neq":"example","not_in":["example"]}}]},"touchpoints":["autocomplete"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://api.eu1.luigisbox.ai/analytics/v1/searches/events?channel_ids=example&page=1&size=20' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "date_range": { "date_from": "2026-04-15T12:00:00Z", "date_to": "2026-04-15T12:00:00Z" }, "filters": { "$and": [ { "applied_filter": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "consent_granted": { "eq": true }, "device": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "external_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "filtered": { "eq": true }, "followed_by_search": { "eq": true }, "identity": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_id": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "no_results": { "eq": true }, "personalized": { "eq": true }, "platform": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "query": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "redirected": { "eq": true }, "result_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "returning": { "eq": true }, "session_rank": { "eq": 1, "gt": 1, "gte": 1, "in": [ 1 ], "lt": 1, "lte": 1, "neq": 1, "not_in": [ 1 ] }, "traffic_source": { "eq": "direct", "in": [ "direct" ], "neq": "direct", "not_in": [ "direct" ] }, "traffic_source_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_path": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] } } ], "$not": { "applied_filter": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "consent_granted": { "eq": true }, "device": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "external_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "filtered": { "eq": true }, "followed_by_search": { "eq": true }, "identity": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_id": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "no_results": { "eq": true }, "personalized": { "eq": true }, "platform": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "query": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "redirected": { "eq": true }, "result_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "returning": { "eq": true }, "session_rank": { "eq": 1, "gt": 1, "gte": 1, "in": [ 1 ], "lt": 1, "lte": 1, "neq": 1, "not_in": [ 1 ] }, "traffic_source": { "eq": "direct", "in": [ "direct" ], "neq": "direct", "not_in": [ "direct" ] }, "traffic_source_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_path": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] } }, "$or": [ { "applied_filter": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "consent_granted": { "eq": true }, "device": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "external_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "filtered": { "eq": true }, "followed_by_search": { "eq": true }, "identity": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_id": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "internal_ab_test_variant": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "landing_page_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "no_results": { "eq": true }, "personalized": { "eq": true }, "platform": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "query": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "redirected": { "eq": true }, "result_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "returning": { "eq": true }, "session_rank": { "eq": 1, "gt": 1, "gte": 1, "in": [ 1 ], "lt": 1, "lte": 1, "neq": 1, "not_in": [ 1 ] }, "traffic_source": { "eq": "direct", "in": [ "direct" ], "neq": "direct", "not_in": [ "direct" ] }, "traffic_source_type": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_host": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] }, "url_path": { "eq": "example", "exists": true, "in": [ "example" ], "matches": "example", "neq": "example", "not_in": [ "example" ] } } ] }, "touchpoints": [ "autocomplete" ] }'Each list as it was shown, for example the latest searches without results.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”One or more channel ids to aggregate over. Provide as repeated query parameters (?channel_ids=A&channel_ids=B).
One or more channel ids to aggregate over. Provide as repeated query parameters (?channel_ids=A&channel_ids=B).
1-based page number.
1-based page number.
Number of items per page.
Number of items per page.
Request Body required
Section titled “Request Body required ”Request for a page of searches, newest first; ties break on channel_id, session_id, then event_id.
object
The time range of the report.
object
Start, inclusive.
End, exclusive.
A group node: exactly one of $and, $or, $not.
object
Nodes that must all match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one whole-number field.
object
Equal to.
Greater than.
At least.
One of.
Less than.
At most.
Not equal to.
None of.
Operators on how a session arrived.
object
Equal to.
One of.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one whole-number field.
object
Equal to.
Greater than.
At least.
One of.
Less than.
At most.
Not equal to.
None of.
Operators on how a session arrived.
object
Equal to.
One of.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Nodes of which at least one must match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one whole-number field.
object
Equal to.
Greater than.
At least.
One of.
Less than.
At most.
Not equal to.
None of.
Operators on how a session arrived.
object
Equal to.
One of.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one true-or-false field.
object
Equal to.
Operators on one whole-number field.
object
Equal to.
Greater than.
At least.
One of.
Less than.
At most.
Not equal to.
None of.
Operators on how a session arrived.
object
Equal to.
One of.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Operators on one text field.
object
Equal to.
Has a value (true) or has none (false).
One of.
Contains this text.
Not equal to.
None of.
Where the lists were shown. As with channel_ids, the touchpoints are pooled: one total, one series line and one row per key across all of them, and group_by: ["touchpoint"] splits them. Pooled, the counts of searches, impressions, clicks, transactions and key events add up, and so does money; users, sessions and queries count once however many of the touchpoints they appear at; and a rate is taken over the pooled lists. searches counts the lists shown, so an autocomplete submitted as a search counts once at each touchpoint, and an average position mixes the two touchpoints’ scales. A reformulation is a change of query on the next list at the same touchpoint.
Responses
Section titled “ Responses ”Successful Response
object
The items on this page.
One search, as it was run and answered.
object
The filter values the search applied, one item per value; private filters are left out. A filter whose name starts with _ is the client’s own bookkeeping and never counts.
One filter value a search applied.
object
Filter name, e.g. color.
Value applied, e.g. red.
The channel the search ran in, as a request may cover several.
The search’s id, unique within its session.
The search applied a filter. A filter whose name starts with _ is the client’s own bookkeeping and never counts.
The search returned nothing and was not redirected.
When the search ran, in UTC.
The query, lowercased and trimmed.
A redirect rule sent the search elsewhere.
The session the search belongs to.
Where the list was shown, as a request may cover several.
1-based page number.
Number of items per page.
Total number of items across all pages.
Example
{ "items": [ { "touchpoint": "autocomplete" } ]}Malformed request
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.
Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.
One field-level reason a request was rejected.
object
Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].
What is wrong with the value at loc.
Stable machine code for the problem, e.g. missing or string_too_short.
Human-readable, actionable error message.
Example generated
{ "exception_details": { "error_code": "example", "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Missing or invalid credentials
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.
Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.
One field-level reason a request was rejected.
object
Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].
What is wrong with the value at loc.
Stable machine code for the problem, e.g. missing or string_too_short.
Human-readable, actionable error message.
Example generated
{ "exception_details": { "error_code": "example", "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Authenticated but not permitted
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.
Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.
One field-level reason a request was rejected.
object
Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].
What is wrong with the value at loc.
Stable machine code for the problem, e.g. missing or string_too_short.
Human-readable, actionable error message.
Example generated
{ "exception_details": { "error_code": "example", "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Request validation failed, or the report cannot answer it as asked (exception_details.problems).
The 422 body of a report request.
object
Machine-readable error context.
object
Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.
Why the report cannot answer the request as asked; validation_errors covers malformed fields.
One reason a report request cannot be answered.
object
Stable code of the problem; switch on it, not on message.
Where in the request, as in validation_errors[].loc, e.g. ["body", "group_by", 1].
What to change.
Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.
One field-level reason a request was rejected.
object
Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].
What is wrong with the value at loc.
Stable machine code for the problem, e.g. missing or string_too_short.
Human-readable, actionable error message.
Example
{ "exception_details": { "problems": [ { "code": "too_many_groups" } ] }}Service temporarily unavailable
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
Stable machine code naming why a well-formed request was refused: snake_case, prefixed by its domain — e.g. filter_unknown_field or cursor_mismatch. Safe to branch on; reason is not. Absent when the status code says all there is to say.
Every field-level problem found in the request, when validation is what failed. Absent when the rejection is not about a specific value.
One field-level reason a request was rejected.
object
Path to the offending value from the request root, e.g. ["body", "filters", 0, "operator"].
What is wrong with the value at loc.
Stable machine code for the problem, e.g. missing or string_too_short.
Human-readable, actionable error message.
Example generated
{ "exception_details": { "error_code": "example", "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Was this page helpful?
Thanks.