1. Get an API key
- Sign in with Google.
- Start a batch plan — contact us.
- Open Settings and generate a key. The full key is shown once and looks like
stmt_live_YOUR_KEY.
Call every endpoint with Authorization: Bearer stmt_live_YOUR_KEY.
2. Upload a PDF
Send the PDF as multipart field file over HTTPS. The API generates an encryption key, encrypts the file at rest, and decrypts it only in memory to parse and repair. Plaintext is discarded when the job finishes. No person opens your statement. You do not need to encrypt the file yourself, and you do not send X-File-Dek.
3. Endpoints
POST /v1/jobs— create a job (PDF upload)GET /v1/jobs/{id}— status and ledger JSONGET /v1/jobs/{id}/export?format=csv|xlsx— downloadPOST /v1/jobs/{id}/report— start an automated re-check
Quota: 100 pages per month shared with the batch plan. Unsubscribed accounts receive HTTP 402.
curl example
curl -sS -X POST https://stmtready.com/v1/jobs \
-H "Authorization: Bearer stmt_live_YOUR_KEY" \
-F "[email protected];type=application/pdf"
curl -sS "https://stmtready.com/v1/jobs/JOB_ID" \
-H "Authorization: Bearer stmt_live_YOUR_KEY"
curl -sS "https://stmtready.com/v1/jobs/JOB_ID/export?format=csv" \
-H "Authorization: Bearer stmt_live_YOUR_KEY" -o out.csv
Python example
import requests
r = requests.post(
"https://stmtready.com/v1/jobs",
headers={"Authorization": "Bearer stmt_live_YOUR_KEY"},
files={"file": ("statement.pdf", open("statement.pdf", "rb"), "application/pdf")},
)
print(r.json())
job_id = r.json()["job_id"]
status = requests.get(
f"https://stmtready.com/v1/jobs/{job_id}",
headers={"Authorization": "Bearer stmt_live_YOUR_KEY"},
)
print(status.json())
Advanced: client-side encryption (optional)
The website browser upload still encrypts in the browser before POST /api/jobs. API callers may optionally send AES-256-GCM ciphertext with form fields algorithm, iv, and header X-File-Dek. That path is not required for normal integrations.
Email [email protected].