Create a store, or update the one already carrying this code
const url = 'https://acme.mykreezalid.com/api/partners/v1/stores';const options = { method: 'POST', headers: {Authorization: 'Basic <credentials>', 'Content-Type': 'application/json'}, body: '{"external_id":"SHOP-BRUSSELS-01","name":"Les Petits Riens - Ixelles","line1":"Rue Américaine 101","line2":"Bâtiment B","zipcode":"1050","city":"Ixelles","state":"Bruxelles-Capitale","district":"Bruxelles","country":"BE","formatted":"Rue Américaine 101, 1050 Ixelles, Belgique","lat":50.822965,"lng":4.359485,"phone":{"country_iso":"BE","phone_number":"25373026"},"is_active":true,"is_default":false,"is_pickup_point":true,"pickup_instructions":"Ring at the service entrance.","display_in_locator":true,"opening_hours":[{"day":1,"start_time":"09:00","end_time":"12:00","timezone":"Europe/Brussels"}],"pickup_hours":[{"day":1,"start_time":"09:00","end_time":"12:00","timezone":"Europe/Brussels"}]}'};
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://acme.mykreezalid.com/api/partners/v1/stores \ --header 'Authorization: Basic <credentials>' \ --header 'Content-Type: application/json' \ --data '{ "external_id": "SHOP-BRUSSELS-01", "name": "Les Petits Riens - Ixelles", "line1": "Rue Américaine 101", "line2": "Bâtiment B", "zipcode": "1050", "city": "Ixelles", "state": "Bruxelles-Capitale", "district": "Bruxelles", "country": "BE", "formatted": "Rue Américaine 101, 1050 Ixelles, Belgique", "lat": 50.822965, "lng": 4.359485, "phone": { "country_iso": "BE", "phone_number": "25373026" }, "is_active": true, "is_default": false, "is_pickup_point": true, "pickup_instructions": "Ring at the service entrance.", "display_in_locator": true, "opening_hours": [ { "day": 1, "start_time": "09:00", "end_time": "12:00", "timezone": "Europe/Brussels" } ], "pickup_hours": [ { "day": 1, "start_time": "09:00", "end_time": "12:00", "timezone": "Europe/Brussels" } ] }'Posting a store whose external_id already exists UPDATES it. This is what lets you replay your whole store list on a schedule without creating duplicates. POST /stores/add is an alias of this endpoint. Only the documented store fields are saved; opening_hours and pickup_hours each replace that schedule when sent (an empty list clears it) and are left alone when omitted. The store and its hours are saved together or not at all. The response has HTTP status 200 whether the store was saved or refused: check success.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”A place one of your vendors operates from.
object
Kreezalid’s identifier for this store, returned by GET /stores. Use it to read, update or delete the store (GET, PATCH, DELETE /stores/{id}) and to attach a listing to it (store_id). It is the only way to reach a store that has no external_id.
Example
217836Optional: YOUR OWN reference for this store, if your system names its stores. Posting a store whose external_id already exists UPDATES it instead of creating a second one, so you can replay your whole store list as often as you like. Unique per vendor: two vendors may each use “01”. Leave it out for a store you do not track on your side.
Example
SHOP-BRUSSELS-01Example
Les Petits Riens - IxellesExample
Rue Américaine 101Example
Bâtiment BExample
1050Example
IxellesTop-level subdivision: région in France, state in the US.
Example
Bruxelles-CapitaleSecond-level subdivision: département in France, county elsewhere.
Example
BruxellesISO-3166-1 alpha-2. A country name is accepted and converted — Belgique, Belgium, Bélgica and Belgien all store BE — but send the code: it is what comes back, and what the listings placed at this store will carry.
Example
BEThe address on one line, as your geocoder returned it. Shown to buyers in preference to the parts above.
Example
Rue Américaine 101, 1050 Ixelles, BelgiqueLatitude, between -90 and 90. A store with no coordinates never appears on a map and never places a listing.
Example
50.822965Longitude, between -180 and 180.
Example
4.359485The store’s phone, as a country and a number - the shape a phone attribute has. Send country_iso (ISO-3166-1 alpha-2) and phone_number as typed, national or international; it is checked for that country, and a number carrying its own country code keeps it. Read back, phone_number is the national number without its trunk zero, with e164 (to dial) and formatted (to show) beside it. Send null to remove the phone. Free text is refused. A phone stored as text before this field was structured comes back with formatted only.
object
Example
BEExample
25373026Example
+3225373026Example
+32 2 537 30 26Whether this store is in use. A store holding listings cannot be switched off: move them to another store, or unpublish them, first.
The vendor’s main store. At most one per vendor: setting it here clears it from whichever store held it.
Whether orders can be collected here. Being a collection point and being shown on the public map are two separate roles of the same place. A collection point must say when to collect: pickup_hours or pickup_instructions - either is enough, opening_hours do not count. Checked when a store is created and when a write touches is_pickup_point, pickup_instructions or pickup_hours.
Free text about collecting here, in your own words: hours written out (“Monday to Friday, 9am to 4pm”) or instructions (“ring at the service entrance”). Shown to buyers below the collection hours, or on its own when there are none.
Example
Ring at the service entrance.Whether this store appears on the marketplace’s public store map.
When the shop is open. What you send REPLACES the store’s opening hours, and leaves its pickup_hours alone. A day you do not mention is closed. Leave the field out to keep the opening hours as they are; send an empty array to remove them. Opening hours are never shown to buyers as collection hours.
One slot, on one weekday. Which hours it belongs to is said by the list it is sent in -
a store’s opening_hours or its pickup_hours - not by the slot.
A lunch break is TWO slots on the same day, not one slot with a hole in it. That is the whole reason this is a list rather than a string.
object
ISO-8601 weekday: 1 is Monday, 7 is Sunday.
Example
124-hour clock.
Example
09:00Must be later than start_time.
Example
12:00IANA name. Defaults to the marketplace’s own timezone.
Example
Europe/BrusselsWhen orders can be collected - often narrower than the opening hours. What you send REPLACES the store’s collection hours, and leaves its opening_hours alone. A day you do not mention has no collection. Leave the field out to keep them as they are; send an empty array to remove them. Shown to buyers on the product page and in the order e-mail, followed by pickup_instructions.
One slot, on one weekday. Which hours it belongs to is said by the list it is sent in -
a store’s opening_hours or its pickup_hours - not by the slot.
A lunch break is TWO slots on the same day, not one slot with a hole in it. That is the whole reason this is a list rather than a string.
object
ISO-8601 weekday: 1 is Monday, 7 is Sunday.
Example
124-hour clock.
Example
09:00Must be later than start_time.
Example
12:00IANA name. Defaults to the marketplace’s own timezone.
Example
Europe/BrusselsResponses
Section titled “Responses”The outcome, with the store as it now stands
Outcome of a store creation or update.
object
Number of results across all pages.
Number of the page returned, starting at 1.
Whether a next page exists.
Whether a previous page exists.
Number of results on this page.
Number of pages.
ID of the store, or null when nothing was saved.
Whether this call created the store (false when it updated one).
Whether the store was saved.
Store created, Store updated, or the reason of the refusal (field errors are listed as field: reason, separated by -).
A place one of your vendors operates from.
object
Kreezalid’s identifier for this store, returned by GET /stores. Use it to read, update or delete the store (GET, PATCH, DELETE /stores/{id}) and to attach a listing to it (store_id). It is the only way to reach a store that has no external_id.
Optional: YOUR OWN reference for this store, if your system names its stores. Posting a store whose external_id already exists UPDATES it instead of creating a second one, so you can replay your whole store list as often as you like. Unique per vendor: two vendors may each use “01”. Leave it out for a store you do not track on your side.
Top-level subdivision: région in France, state in the US.
Second-level subdivision: département in France, county elsewhere.
ISO-3166-1 alpha-2. A country name is accepted and converted — Belgique, Belgium, Bélgica and Belgien all store BE — but send the code: it is what comes back, and what the listings placed at this store will carry.
The address on one line, as your geocoder returned it. Shown to buyers in preference to the parts above.
Latitude, between -90 and 90. A store with no coordinates never appears on a map and never places a listing.
Longitude, between -180 and 180.
The store’s phone, as a country and a number - the shape a phone attribute has. Send country_iso (ISO-3166-1 alpha-2) and phone_number as typed, national or international; it is checked for that country, and a number carrying its own country code keeps it. Read back, phone_number is the national number without its trunk zero, with e164 (to dial) and formatted (to show) beside it. Send null to remove the phone. Free text is refused. A phone stored as text before this field was structured comes back with formatted only.
object
Whether this store is in use. A store holding listings cannot be switched off: move them to another store, or unpublish them, first.
The vendor’s main store. At most one per vendor: setting it here clears it from whichever store held it.
Whether orders can be collected here. Being a collection point and being shown on the public map are two separate roles of the same place. A collection point must say when to collect: pickup_hours or pickup_instructions - either is enough, opening_hours do not count. Checked when a store is created and when a write touches is_pickup_point, pickup_instructions or pickup_hours.
Free text about collecting here, in your own words: hours written out (“Monday to Friday, 9am to 4pm”) or instructions (“ring at the service entrance”). Shown to buyers below the collection hours, or on its own when there are none.
Whether this store appears on the marketplace’s public store map.
When the shop is open. What you send REPLACES the store’s opening hours, and leaves its pickup_hours alone. A day you do not mention is closed. Leave the field out to keep the opening hours as they are; send an empty array to remove them. Opening hours are never shown to buyers as collection hours.
One slot, on one weekday. Which hours it belongs to is said by the list it is sent in -
a store’s opening_hours or its pickup_hours - not by the slot.
A lunch break is TWO slots on the same day, not one slot with a hole in it. That is the whole reason this is a list rather than a string.
object
ISO-8601 weekday: 1 is Monday, 7 is Sunday.
24-hour clock.
Must be later than start_time.
IANA name. Defaults to the marketplace’s own timezone.
When orders can be collected - often narrower than the opening hours. What you send REPLACES the store’s collection hours, and leaves its opening_hours alone. A day you do not mention has no collection. Leave the field out to keep them as they are; send an empty array to remove them. Shown to buyers on the product page and in the order e-mail, followed by pickup_instructions.
One slot, on one weekday. Which hours it belongs to is said by the list it is sent in -
a store’s opening_hours or its pickup_hours - not by the slot.
A lunch break is TWO slots on the same day, not one slot with a hole in it. That is the whole reason this is a list rather than a string.
object
ISO-8601 weekday: 1 is Monday, 7 is Sunday.
24-hour clock.
Must be later than start_time.
IANA name. Defaults to the marketplace’s own timezone.
Example
{ "totalResultsCount": 137, "currentPage": 1, "resultOnPageCount": 25, "pageCount": 6, "id": 217836, "message": "Store created", "content": { "id": 217836, "object": "Store", "external_id": "SHOP-BRUSSELS-01", "name": "Les Petits Riens - Ixelles", "line1": "Rue Américaine 101", "line2": "Bâtiment B", "zipcode": "1050", "city": "Ixelles", "state": "Bruxelles-Capitale", "district": "Bruxelles", "country": "BE", "formatted": "Rue Américaine 101, 1050 Ixelles, Belgique", "lat": 50.822965, "lng": 4.359485, "phone": { "country_iso": "BE", "phone_number": "25373026", "e164": "+3225373026", "formatted": "+32 2 537 30 26" }, "is_active": true, "is_default": false, "is_pickup_point": true, "pickup_instructions": "Ring at the service entrance.", "display_in_locator": true, "opening_hours": [ { "day": 1, "start_time": "09:00", "end_time": "12:00", "timezone": "Europe/Brussels" } ], "pickup_hours": [ { "day": 1, "start_time": "09:00", "end_time": "12:00", "timezone": "Europe/Brussels" } ] }}Missing or wrong API credentials.
The multi-store feature is not enabled on this marketplace.