Ingestion Jobs
The /ingestion-jobs endpoint is a non-blocking batch endpoint for pushing case notes to Debitura without waiting for each event to be processed synchronously (status updates and payments are planned for future releases). Enqueue a batch in a single request and poll for completion when convenient.
Overview
The Collection Partner API exposes a synchronous per-case note endpoint (POST /cases/{id}/notes) suited to individual event submission. When processing a CRM export, a nightly report, or any bulk data feed with many events across many cases, the ingestion jobs endpoint is the better choice:
| Synchronous note endpoint | Ingestion jobs endpoint | |
|---|---|---|
| Input | One event per request | Up to 1000 rows per request |
| Response | Processed result immediately | 202 Accepted + jobId |
| Use case | Single interactive updates | Batch exports, scheduled feeds |
| Blocking | Yes | No — poll for status |
Use ingestion jobs when you need to send dozens or hundreds of case events from a single source (CRM export, scheduled report, data migration).
Enqueue a batch
POST https://collectionpartner-api.debitura.com/ingestion-jobs
Content-Type: application/json
XApiKey: YOUR_API_KEY
{
"rows": [
{
"type": 0,
"caseId": "123e4567-e89b-12d3-a456-426614174000",
"description": "Contacted debtor by phone. Payment promised for 2026-02-15.",
"eventDate": "2026-02-01T09:30:00Z",
"externalRef": "CRM-NOTE-98765"
},
{
"type": 0,
"caseId": "456e4567-e89b-12d3-a456-426614174001",
"description": "No answer. Left voicemail.",
"eventDate": "2026-02-01T10:15:00Z"
}
]
}
IngestionJobRow fields:
| Field | Type | Required | Description |
|---|---|---|---|
type | integer | Yes | Event type — see PartnerIngestEventType below |
caseId | string (UUID) | Yes | Debitura case ID the event belongs to |
description | string | Yes | Content of the note or event |
eventDate | string (ISO 8601 UTC) | No | When the event occurred. Defaults to submission time if omitted. |
externalRef | string | No | Your internal reference for this event (CRM ID, log entry, etc.) |
PartnerIngestEventType:
| Value | Name | Description |
|---|---|---|
0 | Note | A case note visible to Debitura and the assigned creditor |
:::note Currently supported event types
Only Note (type 0) is currently supported. Submitting an unsupported type returns 400 Bad Request.
:::
Batch limit: Maximum 1000 rows per request. Submitting an empty rows array or more than 1000 rows returns 400 Bad Request.
Response — 202 Accepted:
{
"jobId": "789e4567-e89b-12d3-a456-426614174999",
"rowsQueued": 2
}
| Field | Description |
|---|---|
jobId | Use this to poll for job status |
rowsQueued | Number of rows accepted into the queue |
Poll for status
GET https://collectionpartner-api.debitura.com/ingestion-jobs/789e4567-e89b-12d3-a456-426614174999
XApiKey: YOUR_API_KEY
Response — 200 OK:
{
"status": 2,
"rowsTotal": 2,
"rowsSucceeded": 2,
"rowsFailed": 0
}
Response fields:
| Field | Type | Description |
|---|---|---|
status | integer | Current processing status — see AsyncJobStatus below |
rowsTotal | integer | Total rows submitted in the batch |
rowsSucceeded | integer | Rows processed successfully |
rowsFailed | integer | Rows that could not be processed (see Error handling) |
AsyncJobStatus:
| Value | Name | Description |
|---|---|---|
0 | Queued | Accepted, not yet started |
1 | InProgress | Currently being processed |
2 | Completed | All rows processed successfully |
3 | CompletedWithErrors | Processing finished; some rows failed (check rowsFailed) |
4 | Failed | Job-level failure — no rows were processed |
Terminal states are Completed (2), CompletedWithErrors (3), and Failed (4). Stop polling once any of these is reached.
Recommended polling cadence: Poll every 3 seconds. Small batches (under 100 rows) typically complete within a few seconds; large batches (1000 rows) may take up to 30 seconds under normal load.
Error handling
| Scenario | HTTP Status | Detail |
|---|---|---|
rows is empty | 400 | At least one row is required |
rows has more than 1000 entries | 400 | Batch limit exceeded |
Unsupported type value | 400 | Event type not currently supported |
jobId not found or belongs to another partner | 404 | Job not found |
| Per-row processing failure (e.g. case not found, case not owned by account, EventDate in future) | 202 accepted, rowsFailed incremented | Individual row failures do not block other rows in the same batch |
Per-row failures are counted in rowsFailed but all valid rows in the same batch continue to be processed. A job with any per-row failures reaches CompletedWithErrors rather than Completed.
Business context: See the Debitura Support Center for guidance on what notes are visible to creditors in their portal and how collection notes appear in the case timeline.