Push resolved prices
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Put, RequestUri = new Uri("https://api.slflo.com/api/integration/v1/price-lists/RETAIL/prices?mode=merge"), Headers = { { "Idempotency-Key", "example" }, { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"prices\": [ { \"min_price\": 120, \"price\": 125.5, \"product_ref\": \"ITEM-1001\", \"unit_ref\": \"cs\", \"valid_from\": \"2026-10-01\", \"valid_to\": null } ] }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.slflo.com/api/integration/v1/price-lists/RETAIL/prices?mode=merge")) .header("Idempotency-Key", "example") .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("PUT", HttpRequest.BodyPublishers.ofString("{ \"prices\": [ { \"min_price\": 120, \"price\": 125.5, \"product_ref\": \"ITEM-1001\", \"unit_ref\": \"cs\", \"valid_from\": \"2026-10-01\", \"valid_to\": null } ] }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'https://api.slflo.com/api/integration/v1/price-lists/RETAIL/prices?mode=merge';const options = { method: 'PUT', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"prices":[{"min_price":120,"price":125.5,"product_ref":"ITEM-1001","unit_ref":"cs","valid_from":"2026-10-01","valid_to":null}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url 'https://api.slflo.com/api/integration/v1/price-lists/RETAIL/prices?mode=merge' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "prices": [ { "min_price": 120, "price": 125.5, "product_ref": "ITEM-1001", "unit_ref": "cs", "valid_from": "2026-10-01", "valid_to": null } ] }'Up to 500 rows; mode=replace removes the list’s other prices, merge (default) leaves them. Unknown refs refuse the whole call with each one in details. Needs prices:write. Send an Idempotency-Key header; a retry with the same key and body answers the first answer again, with Idempotent-Replayed: true.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Your key for the price list.
Example
RETAILQuery Parameters
Section titled “Query Parameters”Header Parameters
Section titled “Header Parameters”Your key for this write, at most 100 characters (an order id or journal id works well). Required on every write; kept 7 days. Same key and body: the first answer again. Same key, other body: 422 IDEMPOTENCY_KEY_REUSED.
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Example
{ "prices": [ { "min_price": 120, "price": 125.5, "product_ref": "ITEM-1001", "unit_ref": "cs", "valid_from": "2026-10-01", "valid_to": null } ]}Responses
Section titled “Responses”Push resolved prices
object
object
Example
{ "data": { "external_ref": "RETAIL", "list_id": "PL0000002", "removed": 0, "unchanged": 480, "written": 1 }}default
Section titled “default”An error: the code says what, retryable whether to try again.
object
object
Stable code, e.g. SCOPE_MISSING, UNKNOWN_REFERENCE.
Field-level problems: {field, code}.
object
What happened and how to fix it.
Quote it to support; it finds the server log.
Whether the same call may succeed later.
Example
{ "error": { "code": "SCOPE_MISSING", "details": [], "message": "This client does not hold the invoices:read scope.", "request_id": "req_01J9X4Q7T2M8P3NRT6V5WZ", "retryable": false }}
