Skip to content

Properties

List rental units

properties:read
ParameterInTypeRequiredDescription
statusquerystringNoLEDIG | UDLEJET | OPSAGT | ISTANDSAETTES | UDE_AF_DRIFT
kindquerystringNoBOLIGLEJLIGHED | VAERELSE | BLANDET | ERHVERV
areaIdquerystringNoOnly units in this area
postalCodequerystringNoFour digits
limitqueryintegerNoPage size, 1-200 (default 50)
cursorquerystringNoOpaque cursor from meta.nextCursor
Request exampleNo request body
curl https://api.rieckflow.com/v1/properties \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Newest first. ⚠️ status is DERIVED from the tenancies — an active tenancy makes the home UDLEJET even before the handover day, so it cannot be let to somebody else — and it is read-only for that reason, not merely absent from the write schema. Values are the Danish domain terms; tenancy law has no agreed English vocabulary, and an invented one would look canonical without being it.application/json
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 a rental unit

properties:write

⚠️ Two different uniqueness rules, and they get different errors: the same ADDRESS gives 409 address_already_exists, the same unit number 409 unit_number_already_exists. Collapsing them into one error would leave you unable to tell what to fix. Omitting unitNumber lets the database generate one; omitting rentRegime means UKENDT, which is the STRICTEST regime, not the most permissive.

Request body fields 20
FieldTypeRequiredDescription
referencestringNoField in the request payload.
unitNumberstringNoField in the request payload.
areaIdstringNoField in the request payload.
addressobjectYesPostal address used on documents.
address.streetstringYesStreet and house number.
address.houseNumberstringNoField in the request payload.
address.floorstringNoField in the request payload.
address.sidestringNoField in the request payload.
address.postalCodestringYesPostal code.
address.citystringYesCity.
address.darIdstringNoField in the request payload.
address.municipalityCodestringNoField in the request payload.
kindstringYesField in the request payload.
areaM2integerNoField in the request payload.
roomsnumberNoField in the request payload.
yearFirstOccupiedintegerNoField in the request payload.
rentRegimestringNoField in the request payload.
consumptionYearStartstringNoField in the request payload.
consumptionYearMovedTostringNoField in the request payload.
voluntarilyVatRegisteredbooleanNoField in the request payload.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/properties \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"address": {
"street": "…",
"postalCode": "…",
"city": "…",
"darId": "9b2f1c1e-…"
},
"kind": "BOLIGLEJLIGHED",
"reference": "crm-9001",
"areaId": "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": {
"reference": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"unitNumber": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 20
},
{
"type": "null"
}
]
},
"areaId": {
"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"
}
]
},
"address": {
"type": "object",
"properties": {
"street": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"houseNumber": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"floor": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"side": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"postalCode": {
"type": "string",
"pattern": "^\\d{4}$"
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"darId": {
"anyOf": [
{
"type": "string",
"maxLength": 36
},
{
"type": "null"
}
]
},
"municipalityCode": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}$"
},
{
"type": "null"
}
]
}
},
"required": [
"street",
"postalCode",
"city"
],
"additionalProperties": false
},
"kind": {
"type": "string",
"enum": [
"BOLIGLEJLIGHED",
"VAERELSE",
"BLANDET",
"ERHVERV"
]
},
"areaM2": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 100000
},
{
"type": "null"
}
]
},
"rooms": {
"anyOf": [
{
"type": "number",
"minimum": 0.5,
"maximum": 100
},
{
"type": "null"
}
]
},
"yearFirstOccupied": {
"anyOf": [
{
"type": "integer",
"minimum": 1200,
"maximum": 2200
},
{
"type": "null"
}
]
},
"rentRegime": {
"type": "string",
"enum": [
"FRI",
"OMKOSTNINGSBESTEMT",
"SMAAHUS",
"UKENDT"
]
},
"consumptionYearStart": {
"type": "string",
"pattern": "^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"
},
"consumptionYearMovedTo": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"voluntarilyVatRegistered": {
"type": "boolean"
}
},
"required": [
"address",
"kind"
],
"additionalProperties": false
}

Get a rental unit

properties:read
ParameterInTypeRequiredDescription
propertyIdpathstringYes
Request exampleNo request body
curl https://api.rieckflow.com/v1/properties/9b2f1c1e-… \
-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.

Update a rental unit

properties:write

Full replacement of the master data — status is not among the fields and cannot be. ⚠️ Changing the ADDRESS clears the property-register enrichment (BFE and unit register number belonged to the OLD address, and a wrong BFE is worse than none because it looks answered). An omitted unitNumber means leave it alone, not clear it.

ParameterInTypeRequiredDescription
propertyIdpathstringYes
Request body fields 20
FieldTypeRequiredDescription
referencestringNoField in the request payload.
unitNumberstringNoField in the request payload.
areaIdstringNoField in the request payload.
addressobjectYesPostal address used on documents.
address.streetstringYesStreet and house number.
address.houseNumberstringNoField in the request payload.
address.floorstringNoField in the request payload.
address.sidestringNoField in the request payload.
address.postalCodestringYesPostal code.
address.citystringYesCity.
address.darIdstringNoField in the request payload.
address.municipalityCodestringNoField in the request payload.
kindstringYesField in the request payload.
areaM2integerNoField in the request payload.
roomsnumberNoField in the request payload.
yearFirstOccupiedintegerNoField in the request payload.
rentRegimestringNoField in the request payload.
consumptionYearStartstringNoField in the request payload.
consumptionYearMovedTostringNoField in the request payload.
voluntarilyVatRegisteredbooleanNoField in the request payload.
Request exampleapplication/json
curl -X PUT https://api.rieckflow.com/v1/properties/9b2f1c1e-… \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"address": {
"street": "…",
"postalCode": "…",
"city": "…",
"darId": "9b2f1c1e-…"
},
"kind": "BOLIGLEJLIGHED",
"reference": "crm-9001",
"areaId": "9b2f1c1e-…"
}'
200 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": {
"reference": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"unitNumber": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 20
},
{
"type": "null"
}
]
},
"areaId": {
"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"
}
]
},
"address": {
"type": "object",
"properties": {
"street": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"houseNumber": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"floor": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"side": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"postalCode": {
"type": "string",
"pattern": "^\\d{4}$"
},
"city": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"darId": {
"anyOf": [
{
"type": "string",
"maxLength": 36
},
{
"type": "null"
}
]
},
"municipalityCode": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}$"
},
{
"type": "null"
}
]
}
},
"required": [
"street",
"postalCode",
"city"
],
"additionalProperties": false
},
"kind": {
"type": "string",
"enum": [
"BOLIGLEJLIGHED",
"VAERELSE",
"BLANDET",
"ERHVERV"
]
},
"areaM2": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 100000
},
{
"type": "null"
}
]
},
"rooms": {
"anyOf": [
{
"type": "number",
"minimum": 0.5,
"maximum": 100
},
{
"type": "null"
}
]
},
"yearFirstOccupied": {
"anyOf": [
{
"type": "integer",
"minimum": 1200,
"maximum": 2200
},
{
"type": "null"
}
]
},
"rentRegime": {
"type": "string",
"enum": [
"FRI",
"OMKOSTNINGSBESTEMT",
"SMAAHUS",
"UKENDT"
]
},
"consumptionYearStart": {
"type": "string",
"pattern": "^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$"
},
"consumptionYearMovedTo": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
{
"type": "null"
}
]
},
"voluntarilyVatRegistered": {
"type": "boolean"
}
},
"required": [
"address",
"kind"
],
"additionalProperties": false
}

List areas

properties:read
Request exampleNo request body
curl https://api.rieckflow.com/v1/property-areas \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Your own grouping of the portfolio (building, estate, division) with the number of units in each. No cursor: names are unique per organisation and a portfolio has dozens, not thousands.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 an area

properties:write
Request body fields 2
FieldTypeRequiredDescription
namestringYesHuman-readable name.
notestringNoField in the request payload.
Request exampleapplication/json
curl -X POST https://api.rieckflow.com/v1/property-areas \
-H "Authorization: Bearer $RIECK_API_KEY" \
-H "Idempotency-Key: order-2041" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme ApS"
}'
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": 120
},
"note": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
}
},
"required": [
"name"
],
"additionalProperties": false
}

List tenancies

properties:read
ParameterInTypeRequiredDescription
propertyIdquerystringNoOnly tenancies on this unit
customerIdquerystringNoOnly tenancies this customer is a tenant on
statusquerystringNoUDKAST | AKTIV | OPSAGT | AFSLUTTET | AFLYST
limitqueryintegerNoPage size, 1-200 (default 50)
cursorquerystringNoOpaque cursor from meta.nextCursor
Request exampleNo request body
curl https://api.rieckflow.com/v1/tenancies \
-H "Authorization: Bearer $RIECK_API_KEY"
200 Who lives where, on what terms. Tenants are CUSTOMERS — read them with GET /v1/customers/{id}. ⚠️ Every rent component is separate (heating, water, electricity, cooling, aerial, internet, residents’ representation): a single figure cannot answer “what was the heating charge in March”, which is exactly what a disputed increase turns on. Amounts are integer øre.application/json
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.

Get a tenancy

properties:read
ParameterInTypeRequiredDescription
tenancyIdpathstringYes
Request exampleNo request body
curl https://api.rieckflow.com/v1/tenancies/9b2f1c1e-… \
-H "Authorization: Bearer $RIECK_API_KEY"
200 ⚠️ There is deliberately no write path here, and no rent-collection endpoint. Creating a tenancy means ISSUING a tenancy agreement — form, deposit ceiling, statutory terms, signature — and the row’s guards exist precisely so a tenancy cannot come into being without one. Rent is already invoicing: rentSubscriptionId points at the recurring invoice, and GET /v1/subscriptions/{id} is the way in. ⚠️ The deadlines (fixedTermLapsedAt, inspection and maintenance) are READ, never input: an API that accepted a statutory deadline would turn the law into a field.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.