{"components":{"schemas":{"ErrorResponse":{"properties":{"error":{"type":"string"},"errorCode":{"type":"string"}},"required":["error","errorCode"],"type":"object"}},"securitySchemes":{"bearerAuth":{"scheme":"bearer","type":"http"}}},"info":{"description":"Hosted API for AI agents to extract transactions from bank statement PDFs.","title":"Accounter Agent API","version":"2026-05-08"},"openapi":"3.1.0","externalDocs":{"description":"Human-readable Agent API docs","url":"https://accounter.co.za/api-docs/agent"},"paths":{"/api/agent/v1/onboarding":{"post":{"description":"Create an Accounter account for an agent and return a hosted Paystack checkout URL.","requestBody":{"content":{"application/json":{"schema":{"properties":{"businessName":{"type":"string"},"email":{"format":"email","type":"string"},"firstName":{"type":"string"},"keyName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"},"planKey":{"enum":["PROFESSIONAL","BUSINESS","PRACTICE","ENTERPRISE"],"type":"string"}},"required":["firstName","lastName","email","phone","planKey"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Checkout created."},"400":{"description":"Invalid onboarding input."},"409":{"description":"Account already exists."}},"summary":"Start agent signup and payment"}},"/api/agent/v1/onboarding/{token}":{"get":{"description":"Poll onboarding status. After hosted checkout succeeds, this returns the raw API key once.","parameters":[{"in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Onboarding status."},"404":{"description":"Onboarding session not found."}},"summary":"Get agent signup/payment status"}},"/api/agent/v1/bank-statement-extractions":{"post":{"description":"Upload a bank statement PDF and queue extraction.","requestBody":{"content":{"multipart/form-data":{"schema":{"properties":{"bankSlug":{"description":"Optional bank hint such as fnb, absa, capitec, nedbank, or standard-bank.","type":"string"},"file":{"description":"Bank statement PDF, up to 50MB.","format":"binary","type":"string"},"pdfPassword":{"description":"Password for a password-protected PDF, if any.","type":"string"}},"required":["file"],"type":"object"}}},"required":true},"responses":{"202":{"description":"Extraction queued."},"400":{"description":"Invalid upload."},"401":{"description":"Invalid agent API key."},"413":{"description":"File too large."},"422":{"description":"Unreadable PDF."}},"security":[{"bearerAuth":[]}],"summary":"Queue bank statement extraction"}},"/api/agent/v1/bank-statement-extractions/{jobId}":{"get":{"description":"Poll extraction status and return structured result when completed.","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Job status or completed result."},"401":{"description":"Invalid agent API key."},"404":{"description":"Job not found."}},"security":[{"bearerAuth":[]}],"summary":"Get extraction status"}},"/api/agent/v1/bank-statement-extractions/{jobId}/csv":{"get":{"description":"Download CSV for a completed extraction.","parameters":[{"in":"path","name":"jobId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/csv":{"schema":{"type":"string"}}},"description":"CSV file."},"401":{"description":"Invalid agent API key."},"404":{"description":"Job or result not found."},"409":{"description":"Extraction is not complete."}},"security":[{"bearerAuth":[]}],"summary":"Download extraction CSV"}}},"servers":[{"url":"https://accounter.co.za"}]}