Skip to main content

Jobs

Transaction enrichment runs asynchronously. When you submit transactions - as JSON or a PDF bank statement - the API immediately returns a jobId, and processing continues in the background.

You then either poll the job for its status or, better, subscribe to a webhook to be notified when it finishes.

Job lifecycle

A job starts at New, moves through Processing, and finishes in one of three terminal states:

StatusMeaning
NewAccepted and queued, not yet started
ProcessingRunning
CompletedFinished successfully - results are ready to retrieve
CompletedWithErrorsFinished and results are available, but some items were skipped or produced warnings
FailedDid not complete; no results are available
Treat CompletedWithErrors as terminal too

Don't poll for Completed alone - a job can legitimately finish as CompletedWithErrors with usable results. Stop polling once the status is any of Completed, CompletedWithErrors, or Failed.

A job also has a type indicating what it does:

TypeProduced by
EnrichmentSubmitting transactions as JSON
ExtractionUploading a PDF bank statement (extract, then enrich)

Check a job's status

curl -X GET "https://api.walkerstdata.com.au/v1/jobs/{jobId}/status" \
-H "x-api-key: YOUR_API_KEY"

The response reports the current status and processing progress:

{
"data": {
"jobId": "34e1bbd4-36be-4d95-9351-a047eed5bf97",
"status": "Completed",
"type": "Enrichment",
"totalReceivedTransactions": 120,
"totalProcessedTransactions": 118,
"totalDuplicateTransactions": 2,
"warnings": null,
"fileWarnings": []
},
"message": null
}

Wait for status to reach a terminal state (Completed, CompletedWithErrors, or Failed) before retrieving results. A request with an unknown jobId returns 404.

The three transaction counts:

  • totalReceivedTransactions - how many transactions were submitted (or extracted from the PDF)
  • totalDuplicateTransactions - how many were already known and absorbed as duplicates
  • totalProcessedTransactions - how many the job processed

A high duplicate count usually just means a batch was resubmitted. That's not a problem - duplicates are linked to this job too, so retrieving transactions by this jobId still returns them.

Extraction warnings (PDF uploads)

Extraction from a PDF can produce warnings even when the job completes - for example a running-balance chain that doesn't reconcile, or account details that couldn't be read. These are returned on the job status response so you can decide whether the data is fit for use.

  • warnings - an object aggregating issues across the job:

    FieldDescription
    warningsGeneral extraction warnings
    rowDiscrepanciesRows where extracted values didn't reconcile
    missingAccountDetailsAccount fields that couldn't be determined
    otherAny other warnings
    balanceChainMismatchPresent when the running balance doesn't reconcile: { pdf, computed, delta }
  • fileWarnings - the same warnings grouped per uploaded file: [{ fileName, warnings: [...] }].

{
"data": {
"jobId": "6b1c2d3e-4f50-6178-9abc-def012345678",
"status": "CompletedWithErrors",
"type": "Extraction",
"totalReceivedTransactions": 210,
"totalProcessedTransactions": 208,
"totalDuplicateTransactions": 0,
"warnings": {
"warnings": [],
"rowDiscrepancies": ["Row 44: amount could not be parsed"],
"missingAccountDetails": [],
"other": [],
"balanceChainMismatch": {
"pdf": 15230.55,
"computed": 15180.55,
"delta": 50.0
}
},
"fileWarnings": [
{
"fileName": "statement.pdf",
"warnings": ["Row 44: amount could not be parsed"]
}
]
},
"message": null
}

List jobs

To retrieve all jobs for your client:

curl -X GET "https://api.walkerstdata.com.au/v1/jobs" \
-H "x-api-key: YOUR_API_KEY"

The list supports the standard page and count parameters - see Pagination.

Prefer webhooks to polling

Instead of repeatedly polling a job, register a webhook subscription and let Walker Street Data notify your endpoint when the job completes.