Skip to content

Products

List products

products:read
ParameterInTypeRequiredDescription
skuquerystringNoExact SKU match
limitqueryintegerNoPage size, 1-200 (default 50)
cursorquerystringNoOpaque cursor from meta.nextCursor
Request exampleNo request body
curl https://api.rieckflow.com/v1/products \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Success envelopeapplication/json
Response fields 6
FieldTypeDescription
data[].iduuidStable product id.
data[].skustringYour unique item number.
data[].unitPriceOereintegerDefault unit price in øre.
data[].vatRateBpsintegerVAT rate in basis points.
data[].activebooleanWhether the product can be used on new invoices.
meta.nextCursor`stringnull`
Possible errors 5
HTTPCodeMeaning
400invalid_cursorThe cursor is malformed, expired or belongs to another list shape.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
429rate_limitedThe organisation’s rate budget is exhausted.

Create product

products:write
Request body fields 10
FieldTypeRequiredDescription
skustringYesField in the request payload.
namestringYesHuman-readable name.
unitPriceOereintegerYesUnit price in integer øre.
vatRateBpsintegerNoVAT rate in basis points. 2500 means 25%.
vatExemptionReasonstringNoRequired legal reason when the VAT rate is zero.
accountIdstringNoField in the request payload.
accountintegerNoField in the request payload.
categoryIdstringNoField in the request payload.
unitstringNoField in the request payload.
costPriceOereintegerNoField in the request payload.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/products \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"sku": "…",
"name": "Acme ApS",
"unitPriceOere": 125000,
"vatRateBps": 2500,
"accountId": "9b2f1c1e-…"
}'
201 Success envelopeapplication/json
Response fields 5
FieldTypeDescription
data.iduuidStable product id.
data.skustringYour unique item number.
data.unitPriceOereintegerDefault unit price in øre.
data.vatRateBpsintegerVAT rate in basis points.
data.activebooleanWhether the product can be used on new invoices.
Possible errors 9
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"unitPriceOere": {
"type": "integer",
"minimum": 0,
"maximum": 100000000000
},
"vatRateBps": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"vatExemptionReason": {
"anyOf": [
{
"type": "string",
"enum": [
"ML13",
"OMVENDT",
"EU_VARE",
"EKSPORT"
]
},
{
"type": "null"
}
]
},
"accountId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"account": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 999999999
},
{
"type": "null"
}
]
},
"categoryId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"unit": {
"anyOf": [
{
"type": "string",
"enum": [
"STK",
"TIME",
"DAG",
"M",
"M2",
"M3",
"KG",
"LITER",
"KM",
"SAET"
]
},
{
"type": "null"
}
]
},
"costPriceOere": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 100000000000
},
{
"type": "null"
}
]
}
},
"required": [
"sku",
"name",
"unitPriceOere"
],
"additionalProperties": false
}

Get product

products:read
ParameterInTypeRequiredDescription
productIdpathstringYes
Request exampleNo request body
curl https://api.rieckflow.com/v1/products/9b2f1c1e-… \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Success envelopeapplication/json
Response fields 5
FieldTypeDescription
data.iduuidStable product id.
data.skustringYour unique item number.
data.unitPriceOereintegerDefault unit price in øre.
data.vatRateBpsintegerVAT rate in basis points.
data.activebooleanWhether the product can be used on new invoices.
Possible errors 5
HTTPCodeMeaning
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
404product_not_foundThe product does not exist or belongs to another organisation.
429rate_limitedThe organisation’s rate budget is exhausted.

Update product

products:write
ParameterInTypeRequiredDescription
productIdpathstringYes
Request body fields 11
FieldTypeRequiredDescription
skustringNoField in the request payload.
namestringNoHuman-readable name.
unitPriceOereintegerNoUnit price in integer øre.
vatRateBpsintegerNoVAT rate in basis points. 2500 means 25%.
vatExemptionReasonstringNoRequired legal reason when the VAT rate is zero.
accountIdstringNoField in the request payload.
accountintegerNoField in the request payload.
categoryIdstringNoField in the request payload.
unitstringNoField in the request payload.
costPriceOereintegerNoField in the request payload.
activebooleanNoWhether the resource is active.
Request exampleapplication/json
curl -X PATCH https://api.rieckflow.com/v1/products/9b2f1c1e-… \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme ApS",
"unitPriceOere": 125000,
"vatRateBps": 2500
}'
200 Success envelopeapplication/json
Response fields 5
FieldTypeDescription
data.iduuidStable product id.
data.skustringYour unique item number.
data.unitPriceOereintegerDefault unit price in øre.
data.vatRateBpsintegerVAT rate in basis points.
data.activebooleanWhether the product can be used on new invoices.
Possible errors 10
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
404product_not_foundThe product does not exist or belongs to another organisation.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"unitPriceOere": {
"type": "integer",
"minimum": 0,
"maximum": 100000000000
},
"vatRateBps": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"vatExemptionReason": {
"anyOf": [
{
"type": "string",
"enum": [
"ML13",
"OMVENDT",
"EU_VARE",
"EKSPORT"
]
},
{
"type": "null"
}
]
},
"accountId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"account": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 999999999
},
{
"type": "null"
}
]
},
"categoryId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"unit": {
"anyOf": [
{
"type": "string",
"enum": [
"STK",
"TIME",
"DAG",
"M",
"M2",
"M3",
"KG",
"LITER",
"KM",
"SAET"
]
},
{
"type": "null"
}
]
},
"costPriceOere": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 100000000000
},
{
"type": "null"
}
]
},
"active": {
"type": "boolean"
}
},
"additionalProperties": false
}

List sales accounts

products:read
Request exampleNo request body
curl https://api.rieckflow.com/v1/accounts \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Success envelopeapplication/json
Possible errors 4
HTTPCodeMeaning
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
429rate_limitedThe organisation’s rate budget is exhausted.

Create sales account

products:write
Request body fields 5
FieldTypeRequiredDescription
accountNumberstringYesField in the request payload.
namestringYesHuman-readable name.
accountTypestringNoField in the request payload.
vatRateBpsintegerNoVAT rate in basis points. 2500 means 25%.
vatExemptionReasonstringNoRequired legal reason when the VAT rate is zero.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/accounts \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"accountNumber": "…",
"name": "Acme ApS",
"accountType": "omsaetning"
}'
201 Success envelopeapplication/json
Possible errors 9
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"accountNumber": {
"type": "string",
"minLength": 1,
"maxLength": 20
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"accountType": {
"default": "omsaetning",
"type": "string",
"enum": [
"omsaetning",
"vareforbrug",
"kapacitet",
"finans",
"aktiv",
"passiv"
]
},
"vatRateBps": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 10000
},
{
"type": "null"
}
]
},
"vatExemptionReason": {
"anyOf": [
{
"type": "string",
"enum": [
"ML13",
"OMVENDT",
"EU_VARE",
"EKSPORT"
]
},
{
"type": "null"
}
]
}
},
"required": [
"accountNumber",
"name"
],
"additionalProperties": false
}

List product categories

products:read

The whole tree in one response — a catalogue has tens of categories, not thousands, so there is no cursor.

Request exampleNo request body
curl https://api.rieckflow.com/v1/product-categories \
-H "Authorization: Bearer $RIECK_API_KEY"
200 level is 1 for a top-level category and 2 for a subcategory; productCount counts products in that category only.application/json
Possible errors 4
HTTPCodeMeaning
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
429rate_limitedThe organisation’s rate budget is exhausted.

Create product category

products:write

The tree is exactly two levels deep: pass parentId for a subcategory, omit it for a top-level one. A parentId that is itself a subcategory is rejected with 422 — the rule is enforced in the database, not restated here.

Request body fields 3
FieldTypeRequiredDescription
namestringYesHuman-readable name.
parentIdstringNoField in the request payload.
sortOrderintegerNoField in the request payload.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/product-categories \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme ApS",
"parentId": "9b2f1c1e-…"
}'
201 Success envelopeapplication/json
Possible errors 9
HTTPCodeMeaning
400invalid_idempotency_keyIdempotency-Key is missing or malformed.
400invalid_requestThe request body or parameter failed validation.
401invalid_api_keyThe API key is missing, invalid, expired or revoked.
403api_not_includedThe organisation’s plan does not include API access.
403insufficient_scopeThe key does not have the required scope.
409idempotency_conflictThe same key was used with a different request.
409idempotency_in_progressThe same operation is currently being processed. Retry later.
413payload_too_largeThe JSON or uploaded file exceeds this endpoint’s size limit.
429rate_limitedThe organisation’s rate budget is exhausted.
Request body — fuldt JSON Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"parentId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"sortOrder": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 9999
},
{
"type": "null"
}
]
}
},
"required": [
"name"
],
"additionalProperties": false
}