Skip to content

Push a product

PUT
/api/integration/v1/products/{ref}
curl --request PUT \
--url https://api.slflo.com/api/integration/v1/products/ITEM-1001 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "active": true, "base_unit_ref": "pcs", "category_code": "DRINKS", "name": { "ar": "كولا ٣٣٠ مل", "en": "Cola 330ml" }, "salflo_id": null, "source_version": "2026-10-05T10:40:00Z" }'

Its base unit by your unit key. Needs catalog:write. Send an Idempotency-Key header; a retry with the same key and body answers the first answer again, with Idempotent-Replayed: true.

ref
required
string

Your key for the product — the item number in your ERP.

Example

ITEM-1001
Idempotency-Key
required
string

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.

Media typeapplication/json
object
active
required
boolean
base_unit_ref
required
string
category_code
string
name
required
object
key
additional properties
string
salflo_id
string
source_version
string

Example

{
"active": true,
"base_unit_ref": "pcs",
"category_code": "DRINKS",
"name": {
"ar": "كولا ٣٣٠ مل",
"en": "Cola 330ml"
},
"salflo_id": null,
"source_version": "2026-10-05T10:40:00Z"
}

Push a product

Media typeapplication/json
object
data
required
object
entity
required
string
external_ref
required
string
id
required
string
result
required
string

Example

{
"data": {
"entity": "product",
"external_ref": "ITEM-1001",
"id": "P0000001",
"result": "created"
}
}

An error: the code says what, retryable whether to try again.

Media typeapplication/json
object
error
required
object
code
required

Stable code, e.g. SCOPE_MISSING, UNKNOWN_REFERENCE.

string
details
required

Field-level problems: {field, code}.

Array<object>
object
key
additional properties
string
message
required

What happened and how to fix it.

string
request_id
required

Quote it to support; it finds the server log.

string
retryable
required

Whether the same call may succeed later.

boolean

Example

{
"error": {
"code": "SCOPE_MISSING",
"details": [],
"message": "This client does not hold the invoices:read scope.",
"request_id": "req_01J9X4Q7T2M8P3NRT6V5WZ",
"retryable": false
}
}