Overview

Process a file

CSV, TXT or text-based PDF · up to 10 MB
Drop a file here or click to browse
Every run is recorded with full provenance.

Transformation Sample

Validated

1. Messy bank CSV

1日付,摘要,出金,入金,残高
22024/05/01, 振込 カヤマダデンキ ,,125000,1234567
301/05/2024, ATM Withdrawal, -45000,,1189567
42024-05-02, Check No.12345, -12345,,1177222
5, Interest, ,321,1177543
603/05/2024, 電気料金, -8210,,1169333
Encoding detectedShift_JIS → UTF-8
Columns mapped5/5 mapped to ledger schema
Dates normalizedMixed formats → ISO 8601
Amounts as minor unitsJPY · integer, never float

2. Validated JSON

1{ "transaction_date": "2024-05-01",
2 "description": "振込 ヤマダデンキ",
3 "amount": "125000.00", "amount_minor": 125000,
4 "currency": "JPY", "credit": "125000.00",
5 "balance": "1234567.00", "source_row": 2,
6 "validation_status": "valid" }

Review queue

View all

Recent runs

View all runs
curl https://apodexa.net/api/v1/normalize_bank_csv \ -H "Authorization: Bearer $APODEXA_KEY" \ -F "file=@bank_202405.csv" \ -F "locale=ja-JP" -F "currency=JPY"
Validation & confidenceEvery field scored and explained
ProvenanceSee exactly where every value came from
Review workflowUncertain fields routed for human review
Structured recoveryGet clean data even from messy sources

All runs

Click a row for full validation, provenance and export

Review queue

Files with uncertain fields (confidence below 0.75) or failed checks. Confirm a value to send it back through validation, or reject the file.

Templates

Saved column mappings and validation policies. Versions are immutable — a new save creates a new version.

API

All processing is available programmatically. Authenticate with a session cookie or Authorization: Bearer <api_key>. Full reference at /docs.

Endpoints

GET/api/v1/healthLiveness & version
POST/api/v1/detect_file_typeSniff file type
POST/api/v1/repair_csvFix broken CSV structure
POST/api/v1/normalize_bank_csvBank CSV → ledger
POST/api/v1/extract_invoiceInvoice → structured
GET/api/v1/runsList processed runs
GET/api/v1/runs/{id}/exportExport CSV or JSON

Response envelope

Every tool response — success or rejection — uses the same shape. HTTP stays 200 for processable-but-rejected files; error is populated and validation.passed is false.

{ "data": {}, // tool output "confidence": {}, // per-field heuristic score 0–1 "validation": { "passed": true, "checks": [] }, "provenance": {}, // parser, mapping, transformations "uncertain_fields": [], // below 0.75 threshold "repair_suggestions": [], "output_files": {}, "error": null }

Settings

API key

Use as Authorization: Bearer <key> for programmatic access. Provisioned server-side.

sk_live_••••••••••••••••••••••••

API status

Checking…

Session

End your session on this device.