Skip to main content

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 endpointIngestion jobs endpoint
InputOne event per requestUp to 1000 rows per request
ResponseProcessed result immediately202 Accepted + jobId
Use caseSingle interactive updatesBatch exports, scheduled feeds
BlockingYesNo — 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 /ingestion-jobs
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:

FieldTypeRequiredDescription
typeintegerYesEvent type — see PartnerIngestEventType below
caseIdstring (UUID)YesDebitura case ID the event belongs to
descriptionstringYesContent of the note or event
eventDatestring (ISO 8601 UTC)NoWhen the event occurred. Defaults to submission time if omitted.
externalRefstringNoYour internal reference for this event (CRM ID, log entry, etc.)

PartnerIngestEventType:

ValueNameDescription
0NoteA 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
}
FieldDescription
jobIdUse this to poll for job status
rowsQueuedNumber of rows accepted into the queue

Poll for status

GET /ingestion-jobs/{jobId}
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:

FieldTypeDescription
statusintegerCurrent processing status — see AsyncJobStatus below
rowsTotalintegerTotal rows submitted in the batch
rowsSucceededintegerRows processed successfully
rowsFailedintegerRows that could not be processed (see Error handling)

AsyncJobStatus:

ValueNameDescription
0QueuedAccepted, not yet started
1InProgressCurrently being processed
2CompletedAll rows processed successfully
3CompletedWithErrorsProcessing finished; some rows failed (check rowsFailed)
4FailedJob-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

ScenarioHTTP StatusDetail
rows is empty400At least one row is required
rows has more than 1000 entries400Batch limit exceeded
Unsupported type value400Event type not currently supported
jobId not found or belongs to another partner404Job not found
Per-row processing failure (e.g. case not found, case not owned by account, EventDate in future)202 accepted, rowsFailed incrementedIndividual 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.