Skip to main content
The /v1/enrich/async endpoint is designed for large-scale enrichment workloads — bank statement imports, nightly reconciliation pipelines, or any batch that exceeds the 10-item synchronous limit. You submit up to 500 raw transaction strings and the API returns a job_id immediately with HTTP 202 Accepted, without waiting for enrichment to complete. Processing runs in the background; you poll GET /v1/enrich/jobs/:id at your own pace to retrieve results when they’re ready.

Request Parameters

transactions
string[]
required
An array of raw transaction description strings to enrich. Each string should be the unmodified text from a bank statement or card feed (e.g. "UBER EATS"). Maximum 500 items per request.
500-item hard limit. Batches are capped at a hard limit of 500 items per batch. Requests with more than 500 items will fail with a 400 Bad Request validation error. If your use case requires processing more than 500 transactions at a time, contact support to discuss Enterprise plan options.

Response Schema

A successful submission returns 202 Accepted. Enrichment has not started yet — the job is queued for background processing.
results
array
An empty array [] on initial submission. Results are populated once you poll the job and it reaches complete status.
job_id
string
A UUID string identifying your async job (e.g. "84c8a82d-1234-5678-abcd-ef0123456789"). Use this value to poll GET /v1/enrich/jobs/:id for status and results.
status
string
The initial job status, always "queued" on a successful submission. Possible values over the job lifecycle are queued, processing, complete, and failed.
curl -X POST https://api.parsetx.com/v1/enrich/async \
  -H "X-API-Key: pt_live_yourkeyhere" \
  -H "Content-Type: application/json" \
  -d '{
    "transactions": [
      "AMZN Mktp US",
      "UBER EATS",
      "NETFLIX.COM ON DEMAND"
    ]
  }'
{
  "results": [],
  "job_id": "84c8a82d-1234-5678-abcd-ef0123456789",
  "status": "queued"
}

Retrieving Results

After receiving your job_id, you must poll GET /v1/enrich/jobs/:id to check progress and retrieve enriched results. The job will transition through the following states:
StatusMeaning
queuedJob is accepted and waiting to be picked up by the processing queue.
processingEnrichment is actively running against your batch.
completeAll items have been processed. The results array is fully populated.
failedA fatal error occurred during processing. Contact support with your job_id.
The ParseTx SDKs expose a pollJob() (TypeScript) / poll_job() (Python) helper that handles polling automatically with exponential backoff. Using the SDK is strongly recommended over implementing manual polling loops. See the Node.js SDK or Python SDK for details.

Error Responses

HTTP StatusConditionResponse Body
400 Bad RequestMalformed JSON, missing transactions field, or array exceeds 500 items{"error": "Bad Request — ..."}
401 UnauthorizedX-API-Key header is missing or empty{"error": "Missing API key. Provide your key via the X-API-Key header."}
401 UnauthorizedKey does not match an active key in the database{"error": "Invalid or revoked API key."}
429 Too Many RequestsMonthly transaction quota exceeded{"error": "Monthly quota exceeded.", "usage": 49990, "limit": 50000, "plan": "pay_as_you_go"}
429 Too Many RequestsDaily AI token budget exceeded{"error": "Daily token budget exceeded. Your quota resets at midnight UTC.", "token_usage": 999900, "token_limit": 1000000, "plan": "pay_as_you_go"}
500 Internal Server ErrorUnexpected server-side failure{"error": "Internal Server Error"}