Update a location
const url = 'https://sandbox.partners.loops.sa/v1/locations/loc_2Xf9K';const options = { method: 'PATCH', headers: { 'Loops-Merchant-Id': 'mer_7Hq2Lw8Z', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"external_ref":"BR-01","name":{"en":"example","ar":"example"},"phone":"example","email":"hello@example.com","address":{"line1":"King Fahd Road","district":"Al Olaya","city":"Riyadh","postal_code":"12214","country":"SA","latitude":24.7136,"longitude":46.6753},"opening_hours":{"sunday":[{"opens":"12:00","closes":"02:00"}],"monday":[{"opens":"12:00","closes":"02:00"}],"tuesday":[{"opens":"12:00","closes":"02:00"}],"wednesday":[{"opens":"12:00","closes":"02:00"}],"thursday":[{"opens":"12:00","closes":"02:00"}],"friday":[{"opens":"12:00","closes":"02:00"}],"saturday":[{"opens":"12:00","closes":"02:00"}]}}'};
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://sandbox.partners.loops.sa/v1/locations/loc_2Xf9K \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Loops-Merchant-Id: mer_7Hq2Lw8Z' \ --data '{ "external_ref": "BR-01", "name": { "en": "example", "ar": "example" }, "phone": "example", "email": "hello@example.com", "address": { "line1": "King Fahd Road", "district": "Al Olaya", "city": "Riyadh", "postal_code": "12214", "country": "SA", "latitude": 24.7136, "longitude": 46.6753 }, "opening_hours": { "sunday": [ { "opens": "12:00", "closes": "02:00" } ], "monday": [ { "opens": "12:00", "closes": "02:00" } ], "tuesday": [ { "opens": "12:00", "closes": "02:00" } ], "wednesday": [ { "opens": "12:00", "closes": "02:00" } ], "thursday": [ { "opens": "12:00", "closes": "02:00" } ], "friday": [ { "opens": "12:00", "closes": "02:00" } ], "saturday": [ { "opens": "12:00", "closes": "02:00" } ] } }'Send only the fields to change. opening_hours replaces the whole weekly schedule.
A location can’t move to another brand.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The location ID (loc_…).
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.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Your own ID for this object, from your system. Unique within its type for the merchant
(for menu items, within the brand). Letters, digits, -, _, . and :.
Text in English and Arabic. Delivery apps in Saudi Arabia show both, so both are required.
object
object
Where drivers pick up orders.
Weekly hours in the location’s time zone. Each day lists one or more time ranges; an empty list means closed that day.
object
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
Responses
Section titled “Responses”The updated location.
object
Text in English and Arabic.
object
object
Where drivers pick up orders.
Weekly hours in the location’s time zone. Each day lists one or more time ranges; an empty list means closed that day.
object
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
object
A time earlier than opens means the next day, e.g. 18:00–02:00.
Example
{ "id": "loc_2Xf9K", "brand_id": "brd_9Lk3Vb", "external_ref": "BR-01", "address": { "line1": "King Fahd Road", "district": "Al Olaya", "city": "Riyadh", "postal_code": "12214", "country": "SA", "latitude": 24.7136, "longitude": 46.6753 }, "timezone": "Asia/Riyadh", "opening_hours": { "sunday": [ { "opens": "12:00", "closes": "02:00" } ], "monday": [ { "opens": "12:00", "closes": "02:00" } ], "tuesday": [ { "opens": "12:00", "closes": "02:00" } ], "wednesday": [ { "opens": "12:00", "closes": "02:00" } ], "thursday": [ { "opens": "12:00", "closes": "02:00" } ], "friday": [ { "opens": "12:00", "closes": "02:00" } ], "saturday": [ { "opens": "12:00", "closes": "02:00" } ] }}The request is invalid. errors lists each problem.
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 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.
