Skip to content

Answer many documents of one kind

POST
/api/integration/v1/acks
curl --request POST \
--url https://api.slflo.com/api/integration/v1/acks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "entity": "payment", "items": [ { "external_number": "JRN-000881", "external_ref": "JRN-000881", "id": "pay_01J9", "message": null, "outcome": "ACCEPTED", "reason_code": null }, { "external_number": null, "external_ref": null, "id": "pay_01JA", "message": "Customer CUST-0042 is on hold", "outcome": "REJECTED", "reason_code": "CUSTOMER_ON_HOLD" } ] }'

Up to 500 acks for one entity (order, invoice, payment, return); each item applied on its own, with its own result. Needs that kind’s :write scope. Send an Idempotency-Key header; a retry with the same key and body answers the first answer again, with Idempotent-Replayed: true.

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
entity
string
items
Array<object>
object
external_number
string
external_ref
string
id
string
message
string
outcome
string
reason_code
string

Example

{
"entity": "payment",
"items": [
{
"external_number": "JRN-000881",
"external_ref": "JRN-000881",
"id": "pay_01J9",
"message": null,
"outcome": "ACCEPTED",
"reason_code": null
},
{
"external_number": null,
"external_ref": null,
"id": "pay_01JA",
"message": "Customer CUST-0042 is on hold",
"outcome": "REJECTED",
"reason_code": "CUSTOMER_ON_HOLD"
}
]
}

Answer many documents of one kind

Media typeapplication/json
object
data
required
Array<object>
object
ack
object
acked_at
required
string
acked_version
required
integer format: int64
external_number
string
external_ref
string
message
string
outcome
required
string
reason_code
string
error
object
code
required
string
details
required
Array<object>
object
key
additional properties
string
message
required
string
retryable
required
boolean
status
required
integer format: int32
id
string
result
required
string
status
string
version
integer format: int64
meta
required
object
applied
required
integer format: int32
failed
required
integer format: int32
unchanged
required
integer format: int32

Example

{
"data": [
{
"ack": {
"acked_at": "2026-10-05T10:42:00Z",
"acked_version": 9134,
"external_number": "JRN-000881",
"external_ref": "JRN-000881",
"message": null,
"outcome": "ACCEPTED",
"reason_code": null
},
"error": null,
"id": "pay_01J9",
"result": "applied",
"status": "RECORDED",
"version": 9134
},
{
"ack": {
"acked_at": "2026-10-05T10:42:00Z",
"acked_version": 9135,
"external_number": "SO-0012345",
"external_ref": "SO-0012345",
"message": null,
"outcome": "REJECTED",
"reason_code": "CUSTOMER_ON_HOLD"
},
"error": null,
"id": "pay_01JA",
"result": "unchanged",
"status": "RECORDED",
"version": 9135
}
],
"meta": {
"applied": 1,
"failed": 0,
"unchanged": 1
}
}

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
}
}