status field for granular failures within a batch. Understanding the difference between these two layers is essential for building a robust integration — a 200 OK envelope does not always mean every transaction was successfully enriched.
HTTP Error Codes
When a request itself cannot be processed, ParseTx returns a non-2xx status code with a structured JSON error body. These errors affect the entire request and occur before any transactions are enriched.| Code | Name | Meaning | Resolution |
|---|---|---|---|
400 | Bad Request | Invalid JSON or a schema violation — most commonly submitting more than 10 items on the synchronous endpoint. | Fix the request payload and retry. |
401 | Unauthorized | The X-API-Key header is missing, empty, or contains an invalid or revoked key. | Verify your key in the dashboard and re-authenticate. |
429 | Too Many Requests | Your monthly transaction quota or daily token budget has been exceeded. | Wait for your quota to reset, or contact support to raise limits. |
500 | Server Error | An unexpected internal error occurred on ParseTx’s infrastructure. | Wait briefly and retry with exponential backoff. Contact support if it persists. |
401 — Authentication Errors
There are two distinct401 scenarios, each with its own response body:
X-API-Key header and that the key is copied in full from your dashboard. Keys that have been revoked (e.g., after a cancellation) will return the second response.
429 — Quota Errors
ParseTx enforces two independent limits that each produce a429:
Monthly transaction quota exceeded:
usage, limit, and token_usage fields in the response body let you programmatically detect how close you are to each threshold. The daily token budget resets at midnight UTC. Contact support if you need higher limits for high-volume use cases.
Partial Batch Failures
Because ParseTx processes transactions individually within a batch, a single problem item does not cause the entire request to fail. Instead:- The overall HTTP status is still
200 OK. - The envelope
statusfield changes from"complete"to"partial". - Each item in the
resultsarray carries its ownstatusfield indicating whether it was resolved, should be retried, or was permanently rejected.
Per-Item Status Values
| Item Status | Meaning | Should you retry? |
|---|---|---|
complete | Successfully enriched. | No — result is ready to use. |
retry | A transient LLM timeout occurred during inference. The item was not enriched. | Yes — safe to retry with exponential backoff. |
rejected | The input was flagged as high-entropy garbage (e.g., random alphanumeric strings, pure numeric sequences) and was discarded before reaching the AI engine. | No — retrying the same input will produce the same rejection. |
Example: Partial Batch Response
Handling Item Statuses in Code
After receiving a batch response, filterresults by status to route each item appropriately.
Retry Strategy
For items withstatus: "retry", apply exponential backoff before re-submitting:
Collect retry candidates
After receiving a
partial response, extract the input values from all retry items into a new array.Wait before retrying
Start with a 1–2 second delay and double it on each subsequent attempt. This avoids hammering the API during a transient LLM outage.
Re-submit as a new batch
POST the retry array as a fresh request. There is no special retry endpoint — just call
/v1/enrich or /v1/enrich/async again with the subset.Cap your attempts
After 3–5 retry attempts, treat the remaining
retry items as unresolvable for this cycle and surface them in your own error logging. Persistent retry responses may indicate an ongoing LLM infrastructure issue; check the ParseTx status page for incident reports.