curl --request GET \
--url https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "66666666-6666-4666-8666-666666666666",
"run_id": "44444444-4444-4444-8444-444444444444",
"retry_of_item_id": null,
"label": null,
"resource": {
"type": "invoice_import",
"id": "33333333-3333-4333-8333-333333333333"
},
"status": "completed",
"result": {
"type": "invoice_import",
"outcome": "imported",
"invoice_id": "55555555-5555-4555-8555-555555555555"
},
"failure": null,
"created_at": "2026-09-08T12:00:00.000Z",
"updated_at": "2026-09-08T12:00:30.000Z",
"started_at": "2026-09-08T12:00:02.000Z",
"finished_at": "2026-09-08T12:00:30.000Z"
}{
"error": {
"code": "validation_error",
"message": "The request is invalid. details lists up to 20 field errors. Request bodies are limited to 2 MiB.",
"request_id": "req_example"
}
}{
"error": {
"code": "invalid_token",
"message": "The bearer token is missing or invalid.",
"request_id": "req_example"
}
}{
"error": {
"code": "forbidden",
"message": "Access denied. The error code says why: forbidden, token_disabled, organization_required, insufficient_role or mfa_required.",
"request_id": "req_example"
}
}{
"error": {
"code": "not_found",
"message": "The resource does not exist in the current organization.",
"request_id": "req_example"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Wait for the Retry-After delay before retrying.",
"request_id": "req_example"
}
}{
"error": {
"code": "internal_error",
"message": "Unexpected server failure. Include the request ID when contacting support.",
"request_id": "req_example"
}
}{
"error": {
"code": "service_unavailable",
"message": "Temporarily unavailable. Retry after the Retry-After delay, when provided.",
"request_id": "req_example"
}
}Get a workflow run item
Returns one item of the run. result is set once the item completes or is skipped; failed items have failure details instead.
curl --request GET \
--url https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.watchdog.no/v1/workflow-runs/{id}/items/{item_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "66666666-6666-4666-8666-666666666666",
"run_id": "44444444-4444-4444-8444-444444444444",
"retry_of_item_id": null,
"label": null,
"resource": {
"type": "invoice_import",
"id": "33333333-3333-4333-8333-333333333333"
},
"status": "completed",
"result": {
"type": "invoice_import",
"outcome": "imported",
"invoice_id": "55555555-5555-4555-8555-555555555555"
},
"failure": null,
"created_at": "2026-09-08T12:00:00.000Z",
"updated_at": "2026-09-08T12:00:30.000Z",
"started_at": "2026-09-08T12:00:02.000Z",
"finished_at": "2026-09-08T12:00:30.000Z"
}{
"error": {
"code": "validation_error",
"message": "The request is invalid. details lists up to 20 field errors. Request bodies are limited to 2 MiB.",
"request_id": "req_example"
}
}{
"error": {
"code": "invalid_token",
"message": "The bearer token is missing or invalid.",
"request_id": "req_example"
}
}{
"error": {
"code": "forbidden",
"message": "Access denied. The error code says why: forbidden, token_disabled, organization_required, insufficient_role or mfa_required.",
"request_id": "req_example"
}
}{
"error": {
"code": "not_found",
"message": "The resource does not exist in the current organization.",
"request_id": "req_example"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Wait for the Retry-After delay before retrying.",
"request_id": "req_example"
}
}{
"error": {
"code": "internal_error",
"message": "Unexpected server failure. Include the request ID when contacting support.",
"request_id": "req_example"
}
}{
"error": {
"code": "service_unavailable",
"message": "Temporarily unavailable. Retry after the Retry-After delay, when provided.",
"request_id": "req_example"
}
}Authorizations
Personal API key sent as a bearer token, together with X-Organization-Id. The key must have at least the access level the endpoint requires (read, write or admin).
Headers
The organization to act in. Required for personal API keys; list the organizations you can access with GET /v1/organizations.
Query Parameters
Return only these fields, comma-separated; use dots for nested fields, such as failure.code. id is always returned. Fields: id, run_id, retry_of_item_id, label, resource, status, result, failure, created_at, updated_at, started_at, finished_at.
Response
The item. A failed item is returned with 200 and its failure details.
The name of the item: agreement title, invoice number, file name, integration name or provider invoice key, when known.
- Option 1
- Option 2
Show child attributes
Show child attributes
queued, running, completed, skipped, failed, cancelled The item’s result, shaped by workflow type. Null until the item completes or is skipped.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
- Option 10
- Option 11
- Option 12
- Option 13
- Option 14
- Option 15
- Option 16
- Option 17
- Option 18
- Option 19
Show child attributes
Show child attributes
Show child attributes
Show child attributes