Skip to main content
ParseTx is built batch-first — every request accepts an array of transaction strings rather than a single item. Whether you need enriched results in milliseconds for a live user session or you’re churning through a full bank statement history overnight, there is a dedicated endpoint for the job. The right choice comes down to payload size and how quickly you need the results back.

Choosing a Mode

SynchronousAsynchronous
EndpointPOST /v1/enrichPOST /v1/enrich/async
Max items10500
ResponseResults in the response body202 Accepted + job_id
Best forReal-time UIs, webhooks, small batchesBulk imports, nightly jobs, Plaid syncs
The synchronous endpoint is the simplest way to enrich transactions. You POST up to 10 strings, and the API waits until every item is resolved before returning — no polling required.How it works:
  • Each input is checked against the pre-warmed canonical cache first.
  • Cache hit: Result is returned in under 50 ms at zero AI cost.
  • Cache miss: The item is forwarded to the AI inference engine. The endpoint waits up to 10 seconds for a response before returning.
  • The final response is a single JSON object containing all resolved results.
The synchronous endpoint is capped at 10 items. For larger batches, use the async endpoint.
Best for:
  • Real-time transaction enrichment as users connect their accounts
  • Small ad-hoc batches in webhook processors
  • Exploratory testing and development
curl -X POST https://api.parsetx.com/v1/enrich \
  -H "X-API-Key: pt_live_yourkeyhere" \
  -H "Content-Type: application/json" \
  -d '{"transactions": ["NETFLIX.COM ON DEMAND", "UBER EATS"]}'
Example response:
{
  "results": [
    {
      "input": "NETFLIX.COM ON DEMAND",
      "status": "complete",
      "source": "cache",
      "merchant": "Netflix",
      "domain": "netflix.com",
      "category": "Entertainment",
      "mcc_code": "4899",
      "is_subscription": true,
      "confidence": 1
    },
    {
      "input": "UBER EATS",
      "status": "complete",
      "source": "cache",
      "merchant": "Uber Eats",
      "domain": "ubereats.com",
      "category": "Food & Drink",
      "mcc_code": "5812",
      "is_subscription": false,
      "confidence": 1
    }
  ],
  "job_id": null,
  "status": "complete"
}

Partial Batch Failures

Regardless of which mode you use, individual items within a batch can fail without failing the whole request. A batch with one or more failed items still returns HTTP 200, but the envelope status field will be "partial" instead of "complete". See the Error Handling guide for details on how to handle per-item rejected and retry statuses.