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/platform/v1/campaigns/example?filter_syntax=group';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"catalog_ids":["example"],"catalog_tags":["example"],"channel_ids":["example"],"channel_tags":["example"],"ends_at":"2026-04-15T12:00:00Z","intents":["search"],"match":{"$and":[{"brand":{"in":["nike","adidas"]}},{"lbx:price":{"gte":50,"lte":200}},{"$or":[{"condition":{"eq":"new"}},{"warranty_months":{"gte":12}}]},{"$not":{"material":{"eq":"leather"}}},{"image":{"exists":true}}]},"name":"example","rules":[{"effect":{"content_type":"product","decay_window":"example","disclosure_type":"sponsored","mode":"hard","position":1,"respect_user_filters":false,"type":"pin"},"id":"example","name":"example","record_match":{"$and":[{"brand":{"in":["nike","adidas"]}},{"lbx:price":{"gte":50,"lte":200}},{"$or":[{"condition":{"eq":"new"}},{"warranty_months":{"gte":12}}]},{"$not":{"material":{"eq":"leather"}}},{"image":{"exists":true}}]}}],"starts_at":"2026-04-15T12:00:00Z","status":"draft","surface_ids":["example"],"surface_tags":["example"],"timezone":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url 'https://api.eu1.luigisbox.ai/platform/v1/campaigns/example?filter_syntax=group' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "catalog_ids": [ "example" ], "catalog_tags": [ "example" ], "channel_ids": [ "example" ], "channel_tags": [ "example" ], "ends_at": "2026-04-15T12:00:00Z", "intents": [ "search" ], "match": { "$and": [ { "brand": { "in": [ "nike", "adidas" ] } }, { "lbx:price": { "gte": 50, "lte": 200 } }, { "$or": [ { "condition": { "eq": "new" } }, { "warranty_months": { "gte": 12 } } ] }, { "$not": { "material": { "eq": "leather" } } }, { "image": { "exists": true } } ] }, "name": "example", "rules": [ { "effect": { "content_type": "product", "decay_window": "example", "disclosure_type": "sponsored", "mode": "hard", "position": 1, "respect_user_filters": false, "type": "pin" }, "id": "example", "name": "example", "record_match": { "$and": [ { "brand": { "in": [ "nike", "adidas" ] } }, { "lbx:price": { "gte": 50, "lte": 200 } }, { "$or": [ { "condition": { "eq": "new" } }, { "warranty_months": { "gte": 12 } } ] }, { "$not": { "material": { "eq": "leather" } } }, { "image": { "exists": true } } ] } } ], "starts_at": "2026-04-15T12:00:00Z", "status": "draft", "surface_ids": [ "example" ], "surface_tags": [ "example" ], "timezone": "example" }'Partial update. An archived campaign is terminal: every update is rejected with 409, including a status change, so it can never be un-archived — create a new campaign instead. A present rules list fully replaces the rule set.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Query Parameters
Section titled “Query Parameters ”Syntax filter trees are rendered in. group is the {operator, conditions} form; map is the $and / $or / $not map syntax the Discovery API uses, in which an empty tree renders as null. Request bodies accept either syntax regardless of this setting.
Syntax filter trees are rendered in. group is the {operator, conditions} form; map is the $and / $or / $not map syntax the Discovery API uses, in which an empty tree renders as null. Request bodies accept either syntax regardless of this setting.
Request Body required
Section titled “Request Body required ”Partial update (JSON Merge Patch). Only fields present in the request are applied.
A present rules list fully replaces the campaign’s rule set, within the bounds
published on the field (a campaign is never left ruleless). Rules carrying an id
keep that id (and their analytics history); id-less rules are created new.
object
Surface Intents this campaign targets — the kind of discovery it applies to. Empty means every Intent, not none. Narrowing by Intent is mutually exclusive with narrowing by surface_ids / surface_tags: an Intent targets whole families of surfaces, so combining the two is rejected with intents_conflict. A targeted Intent no scoped catalog hosts a surface for is rejected with catalog_without_targeted_intent — it could never trigger.
A filter tree in group syntax: a boolean operator over leaves and nested groups.
not holds exactly one child. An empty and constrains nothing and an
empty or matches nothing; each endpoint says whether it accepts either.
object
Leaf conditions and nested groups.
One leaf of a group-syntax tree: a field compared against a value.
object
Object field the condition reads.
What a condition reading its value from the request’s anchors does when none carries the attribute.
fail_closed (the default) makes the whole filter tree match nothing. ignore
drops the condition instead, leaving the rest of the tree in force.
Comparison operator.
Provenance of the condition; stamped by the system, never read from a client.
Literal to compare against, or a trigger reference {trigger_ref: ...}; a scalar for eq/neq and the comparisons, a non-empty list for in/not_in, absent for exists.
Where a dynamic condition reads its value: an attribute of the request’s anchors.
object
Anchor attribute whose value the condition compares against.
Boolean combinator applied to conditions.
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 applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Nodes of which at least one must match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A rule in an update payload. An id echoed back from a prior response marks an
existing rule to keep — its fields are updated in place and its rule_id (which
analytics attribution aggregates on) is preserved. Omit id to create a new rule;
existing rules absent from the list are dropped.
object
Pin the selected product to a fixed 1-indexed position.
mode='soft' is the Soft Pin: the placement decays
over decay_window. content_type / disclosure_type /
respect_user_filters are accepted and stored but have no effect on results.
Exclude the selected product(s) from results entirely.
object
Raise matching products in the ranking. strength_pct (0–1) scales how far.
A filter tree in group syntax: a boolean operator over leaves and nested groups.
not holds exactly one child. An empty and constrains nothing and an
empty or matches nothing; each endpoint says whether it accepts either.
object
Leaf conditions and nested groups.
One leaf of a group-syntax tree: a field compared against a value.
object
Object field the condition reads.
What a condition reading its value from the request’s anchors does when none carries the attribute.
fail_closed (the default) makes the whole filter tree match nothing. ignore
drops the condition instead, leaving the rest of the tree in force.
Comparison operator.
Provenance of the condition; stamped by the system, never read from a client.
Literal to compare against, or a trigger reference {trigger_ref: ...}; a scalar for eq/neq and the comparisons, a non-empty list for in/not_in, absent for exists.
Where a dynamic condition reads its value: an attribute of the request’s anchors.
object
Anchor attribute whose value the condition compares against.
Boolean combinator applied to conditions.
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 applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Nodes of which at least one must match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Lifecycle state of a Campaign.
Responses
Section titled “ Responses ”Successful Response
Campaign response: the explicit picks the merchandiser made, round-trippable into an update.
The effective scope — those picks unioned with the current members of the picked tags —
is not here; read it from
GET /platform/v1/campaigns/{campaign_id}/effective-scope. See :class:CampaignEffectiveScope.
object
Surface Intents this campaign targets — the kind of discovery it applies to. Empty means every Intent, not none. Narrowing by Intent is mutually exclusive with narrowing by surface_ids / surface_tags: an Intent targets whole families of surfaces, so combining the two is rejected with intents_conflict. A targeted Intent no scoped catalog hosts a surface for is rejected with catalog_without_targeted_intent — it could never trigger.
A filter tree in group syntax: a boolean operator over leaves and nested groups.
not holds exactly one child. An empty and constrains nothing and an
empty or matches nothing; each endpoint says whether it accepts either.
object
Leaf conditions and nested groups.
One leaf of a group-syntax tree: a field compared against a value.
object
Object field the condition reads.
What a condition reading its value from the request’s anchors does when none carries the attribute.
fail_closed (the default) makes the whole filter tree match nothing. ignore
drops the condition instead, leaving the rest of the tree in force.
Comparison operator.
Provenance of the condition; stamped by the system, never read from a client.
Literal to compare against, or a trigger reference {trigger_ref: ...}; a scalar for eq/neq and the comparisons, a non-empty list for in/not_in, absent for exists.
Where a dynamic condition reads its value: an attribute of the request’s anchors.
object
Anchor attribute whose value the condition compares against.
Boolean combinator applied to conditions.
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 applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Nodes of which at least one must match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
object
Pin the selected product to a fixed 1-indexed position.
mode='soft' is the Soft Pin: the placement decays
over decay_window. content_type / disclosure_type /
respect_user_filters are accepted and stored but have no effect on results.
Exclude the selected product(s) from results entirely.
object
Raise matching products in the ranking. strength_pct (0–1) scales how far.
A filter tree in group syntax: a boolean operator over leaves and nested groups.
not holds exactly one child. An empty and constrains nothing and an
empty or matches nothing; each endpoint says whether it accepts either.
object
Leaf conditions and nested groups.
One leaf of a group-syntax tree: a field compared against a value.
object
Object field the condition reads.
What a condition reading its value from the request’s anchors does when none carries the attribute.
fail_closed (the default) makes the whole filter tree match nothing. ignore
drops the condition instead, leaving the rest of the tree in force.
Comparison operator.
Provenance of the condition; stamped by the system, never read from a client.
Literal to compare against, or a trigger reference {trigger_ref: ...}; a scalar for eq/neq and the comparisons, a non-empty list for in/not_in, absent for exists.
Where a dynamic condition reads its value: an attribute of the request’s anchors.
object
Anchor attribute whose value the condition compares against.
Boolean combinator applied to conditions.
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 applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Nodes of which at least one must match.
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A condition node: field names mapped to operator objects; sibling fields combine as AND.
object
Operators applied to one field. Several operators in one object combine as AND.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
A value resolved from the request’s trigger attributes at evaluation time.
object
Lifecycle state of a Campaign.
IANA timezone identifier (e.g. Europe/Bratislava) the schedule was authored in, kept so it can be re-opened in that zone. Informational only: starts_at / ends_at are the UTC instants that govern when the campaign runs, and this field never shifts them — use it when re-planning a schedule, never to compute execution times. Requires at least one of starts_at / ends_at, and is cleared when both are cleared. Because tz databases differ between releases and between server and browser (Europe/Kiev vs Europe/Kyiv), a client whose own database does not know the identifier should keep the string as it is rather than discard or rewrite it. A scheduled campaign always reads back a zone — UTC when none was authored; an unscheduled one omits the field, so a response never shows the zone-without-schedule state that writes reject.
Example
{ "intents": [ "search" ], "match": { "$and": [ { "brand": { "in": [ "nike", "adidas" ] } }, { "lbx:price": { "gte": 50, "lte": 200 } }, { "$or": [ { "condition": { "eq": "new" } }, { "warranty_months": { "gte": 12 } } ] }, { "$not": { "material": { "eq": "leather" } } }, { "image": { "exists": true } } ] }, "rules": [ { "effect": { "content_type": "product", "disclosure_type": "sponsored", "mode": "hard", "respect_user_filters": false, "type": "pin" }, "record_match": { "$and": [ { "brand": { "in": [ "nike", "adidas" ] } }, { "lbx:price": { "gte": 50, "lte": 200 } }, { "$or": [ { "condition": { "eq": "new" } }, { "warranty_months": { "gte": 12 } } ] }, { "$not": { "material": { "eq": "leather" } } }, { "image": { "exists": true } } ] } } ], "status": "draft", "timezone": "UTC"}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
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": { "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
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": { "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Resource not found
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
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": { "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}State conflict: the campaign is archived (terminal — every update is rejected, including a status change), or the requested name is already used by another campaign in the organization.
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
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": { "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Request validation failed. A targeting rejection lists every problem at once in exception_details.problems.
The canonical error body of a rejected targeting set, with problems typed.
reason and request_id are the canonical fields; exception_details carries
the typed problems list.
object
The exception_details of a rejected targeting set: every problem found at once.
object
Every targeting violation found in one pass; never truncated.
One targeting violation: a stable machine code plus the offending values.
object
Stable machine code of the violated rule.
The targeting axis the violation is about.
Human-readable explanation of the violation.
The offending values on that axis.
Human-readable, actionable error message.
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
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": "catalog_scope_required", "dimension": "catalog" } ] }}The catalog’s attribute types could not be read, so the request could not be type-checked; retryable.
Canonical error body — every non-2xx response uses this shape.
object
Machine-readable error context; empty object when there is nothing to add.
object
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": { "validation_errors": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ] }, "reason": "example", "request_id": "example"}Was this page helpful?
Thanks.