Articles
Product and service catalogue for quotes and invoices.
GET
/api/v1/articlesAlphabetical by name.
Permission: articles:read
Query parameters
archived"true" | "false"true = archived only, false = active only (default: all)limitintegerNumber of entries (1–100)1–100 · Default: 25cursorstring`nextCursor` of the previous pagemax. 500 characters
Response 200
object"list"requireddataArray<Article>requiredidstringrequiredmax. 128 charactersobject"article"requirednumberstring | nullrequiredtitlestringrequireddescriptionstring | nullrequiredunitstring | nullrequiredunitPriceCentsintegerrequiredAmount in cents-100000000000–100000000000priceMode"net" | "gross"requiredtaxRatenumberrequiredarchivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
hasMorebooleanrequirednextCursorstring | nullrequired
curl 'https://www.debt-flow.io/api/v1/articles' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"Response 200
{
"object": "list",
"data": [
{
"id": "string",
"object": "article",
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 0,
"archived": false,
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}
],
"hasMore": false,
"nextCursor": "string"
}POST
/api/v1/articlesPermission: articles:write
Headers
Idempotency-KeystringUnique key (8–255 characters). Repeated requests with the same key return the same response for 24 h.max. 255 characters
Body (JSON) · ArticleCreate
numberstringArticle number (free-form)max. 40 characterstitlestringrequiredmax. 300 charactersdescriptionstringmax. 5000 charactersunitstringmax. 20 charactersunitPriceCentsintegerAmount in cents-100000000000–100000000000 · Default: 0priceMode"net" | "gross"Default: "net"taxRatenumberTax rate in per cent (19, 7, 0 …)0–100 · Default: 19archivedboolean
Response 201 · Article
idstringrequiredmax. 128 charactersobject"article"requirednumberstring | nullrequiredtitlestringrequireddescriptionstring | nullrequiredunitstring | nullrequiredunitPriceCentsintegerrequiredAmount in cents-100000000000–100000000000priceMode"net" | "gross"requiredtaxRatenumberrequiredarchivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl -X POST 'https://www.debt-flow.io/api/v1/articles' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 19,
"archived": false
}'Response 201
{
"id": "string",
"object": "article",
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 0,
"archived": false,
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}GET
/api/v1/articles/{id}Permission: articles:read
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 200 · Article
idstringrequiredmax. 128 charactersobject"article"requirednumberstring | nullrequiredtitlestringrequireddescriptionstring | nullrequiredunitstring | nullrequiredunitPriceCentsintegerrequiredAmount in cents-100000000000–100000000000priceMode"net" | "gross"requiredtaxRatenumberrequiredarchivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl 'https://www.debt-flow.io/api/v1/articles/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"Response 200
{
"id": "string",
"object": "article",
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 0,
"archived": false,
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}PATCH
/api/v1/articles/{id}Existing invoices and quotes keep their line items (copy).
Permission: articles:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Body (JSON) · ArticleUpdate
numberstringArticle number (free-form)max. 40 characterstitlestringmax. 300 charactersdescriptionstringmax. 5000 charactersunitstringmax. 20 charactersunitPriceCentsintegerAmount in cents-100000000000–100000000000priceMode"net" | "gross"taxRatenumberTax rate in per cent (19, 7, 0 …)0–100archivedboolean
Response 200 · Article
idstringrequiredmax. 128 charactersobject"article"requirednumberstring | nullrequiredtitlestringrequireddescriptionstring | nullrequiredunitstring | nullrequiredunitPriceCentsintegerrequiredAmount in cents-100000000000–100000000000priceMode"net" | "gross"requiredtaxRatenumberrequiredarchivedbooleanrequiredcreatedAtstring (date-time)requiredTimestamp (ISO 8601)updatedAtstring (date-time)requiredTimestamp (ISO 8601)
curl -X PATCH 'https://www.debt-flow.io/api/v1/articles/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 0,
"archived": false
}'Response 200
{
"id": "string",
"object": "article",
"number": "string",
"title": "string",
"description": "string",
"unit": "string",
"unitPriceCents": 0,
"priceMode": "net",
"taxRate": 0,
"archived": false,
"createdAt": "2026-11-01T09:30:00.000Z",
"updatedAt": "2026-11-01T09:30:00.000Z"
}DELETE
/api/v1/articles/{id}Alternatively, set archived: true to just hide the article.
Permission: articles:write
Path parameters
idstringrequiredResource IDmax. 128 characters
Response 204
Success, no content
curl -X DELETE 'https://www.debt-flow.io/api/v1/articles/ID' \
-H "Authorization: Bearer $DEBTFLOW_API_KEY"