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/sponsored-providers/example';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"config":{"aliases":{"additionalProperty":"example"},"area":"example","base_url":"example","change_item_url":false,"domain":"example","platform":"cruxo","position_path":"example","product_id_path":"example","service_path":"example","size":"example","test":1,"use_page":true},"credentials":{"additionalProperty":"example"},"name":"example","status":"active"}'};
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/sponsored-providers/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "config": { "aliases": { "additionalProperty": "example" }, "area": "example", "base_url": "example", "change_item_url": false, "domain": "example", "platform": "cruxo", "position_path": "example", "product_id_path": "example", "service_path": "example", "size": "example", "test": 1, "use_page": true }, "credentials": { "additionalProperty": "example" }, "name": "example", "status": "active" }'Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”Partial update (JSON Merge Patch). Only present fields are applied.
organization_id is immutable — a different organization is a different account —
so it is not accepted: sending it, or any field not listed here, is rejected with 422.
The platform is immutable too: it lives inside config and a present config must
re-state platform, so changing it is a different account. A present config or
credentials replaces that map as a whole ({} clears the credentials), and each
is validated as one unit.
object
The connection-level half of a cruxo config — everything tied to the account itself.
None of it varies by channel or surface. An account needing both a search and a
product variant is two providers.
object
object
object
Lifecycle state of a sponsored-products provider or placement.
Only an active one serves sponsored objects. A disabled one stops
serving shortly after the change and stays editable over the API.
Responses
Section titled “ Responses ”Successful Response
Provider response. credentials is write-only and surfaces only as credentials_set.
The platform is reported inside config (the platform discriminator), not as a
separate top-level field.
object
The connection-level half of a cruxo config — everything tied to the account itself.
None of it varies by channel or surface. An account needing both a search and a
product variant is two providers.
object
object
Lifecycle state of a sponsored-products provider or placement.
Only an active one serves sponsored objects. A disabled one stops
serving shortly after the change and stays editable over the API.
Example
{ "config": { "change_item_url": false, "platform": "cruxo", "use_page": true }, "status": "active"}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
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"}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
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
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.