Publish a brand's menu
const url = 'https://sandbox.partners.loops.sa/v1/brands/brd_9Lk3Vb/menu/publish';const options = { method: 'POST', headers: { 'Loops-Merchant-Id': 'mer_7Hq2Lw8Z', 'Idempotency-Key': '6f1c2a9e-3b7d-4c55-9a40-2d8e1f7b9c31', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"location_ids":["loc_2Xf9K"]}'};
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://sandbox.partners.loops.sa/v1/brands/brd_9Lk3Vb/menu/publish \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: 6f1c2a9e-3b7d-4c55-9a40-2d8e1f7b9c31' \ --header 'Loops-Merchant-Id: mer_7Hq2Lw8Z' \ --data '{ "location_ids": [ "loc_2Xf9K" ] }'Sends the brand’s current menu to the delivery apps of its locations: every active channel connection, or only the locations you list. Each delivery app applies the menu on its own schedule, so publishing runs in the background and reports a result for each location and delivery app.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The brand ID (brd_…).
Header Parameters
Section titled “Header Parameters”The merchant you are acting for (mer_…). Required for platform applications;
optional for direct integrations, which have a single merchant.
A unique value (a UUID) for this request. If you retry with the same key within 24 hours, you get the original response instead of a second change.
Request Body
Section titled “Request Body”object
Only these locations. Omit to publish to every location of the brand.
Responses
Section titled “Responses”Publishing started.
object
pending and running while in progress. succeeded: everything applied.
partially_failed: some results failed (publish only). failed: nothing applied.
For a failed import, every problem found. An import is all or nothing.
object
The menu item the problem is about, if any.
For a publish, one result per location and delivery app.
object
Items the delivery app rejected, and why.
object
The menu item the problem is about, if any.
Example
{ "id": "job_01J9R2K7TN", "type": "menu_import", "status": "pending", "errors": [ { "external_ref": "PRD-CHICKEN-BURGER", "field": "image_url", "code": "image_unreachable", "message": "The image URL returned 404." } ], "results": [ { "status": "pending", "errors": [ { "external_ref": "PRD-CHICKEN-BURGER", "field": "image_url", "code": "image_unreachable", "message": "The image URL returned 404." } ] } ]}The access token is missing, expired or invalid.
RFC 9457 Problem Details with a stable code.
object
Stable machine-readable error code. Switch on this, not on title.
For external_ref_conflict, the ID of the object that already uses the reference.
Field errors, for invalid_request.
object
Example
{ "type": "https://docs.partners.loops.sa/errors/external_ref_conflict", "title": "External reference already used", "status": 409, "code": "invalid_request", "detail": "A location with external_ref BR-01 already exists.", "request_id": "req_01J9X7P2QK", "existing_id": "loc_2Xf9K", "errors": [ { "field": "products[3].price", "message": "Required unless the product has variants." } ]}Not allowed: the scope isn’t approved or granted, the connection is not active,
or your application is suspended. See code.
RFC 9457 Problem Details with a stable code.
object
Stable machine-readable error code. Switch on this, not on title.
For external_ref_conflict, the ID of the object that already uses the reference.
Field errors, for invalid_request.
object
Example
{ "type": "https://docs.partners.loops.sa/errors/external_ref_conflict", "title": "External reference already used", "status": 409, "code": "invalid_request", "detail": "A location with external_ref BR-01 already exists.", "request_id": "req_01J9X7P2QK", "existing_id": "loc_2Xf9K", "errors": [ { "field": "products[3].price", "message": "Required unless the product has variants." } ]}Not found, or not accessible with this connection.
RFC 9457 Problem Details with a stable code.
object
Stable machine-readable error code. Switch on this, not on title.
For external_ref_conflict, the ID of the object that already uses the reference.
Field errors, for invalid_request.
object
Example
{ "type": "https://docs.partners.loops.sa/errors/external_ref_conflict", "title": "External reference already used", "status": 409, "code": "invalid_request", "detail": "A location with external_ref BR-01 already exists.", "request_id": "req_01J9X7P2QK", "existing_id": "loc_2Xf9K", "errors": [ { "field": "products[3].price", "message": "Required unless the product has variants." } ]}The request conflicts with the current state, for example an external_ref already in use,
or a business profile that is in review. See code.
RFC 9457 Problem Details with a stable code.
object
Stable machine-readable error code. Switch on this, not on title.
For external_ref_conflict, the ID of the object that already uses the reference.
Field errors, for invalid_request.
object
Example
{ "type": "https://docs.partners.loops.sa/errors/external_ref_conflict", "title": "External reference already used", "status": 409, "code": "invalid_request", "detail": "A location with external_ref BR-01 already exists.", "request_id": "req_01J9X7P2QK", "existing_id": "loc_2Xf9K", "errors": [ { "field": "products[3].price", "message": "Required unless the product has variants." } ]}© 2026 Loops Technologies | شركة لووبز للتقنيات. All rights reserved.
