Arbiter developer documentation
Integrate the evidence behind the decision.
Register a webhook, upload a bank statement, receive its completion event, retrieve the financial analysis and submit a proposed loan for a transparent affordability assessment.
Authentication
Simple, header-based API key authentication.
All programmatic API endpoints—including statement upload, transaction inspection, financial profiling, affordability assessments, policies, and webhooks—authenticate via your organisation's API key passed in the x-api-key request header. Request and response properties strictly use snake_case.
x-api-key: <your_api_key>Quickstart
Start with the original statement.
Register the event endpoint
curl --request POST \
--url https://api.arbiterlogic.com/v1/webhooks \
--header "Content-Type: application/json" \
--header "x-api-key: <api_key>" \
--data '{
"url": "https://example.com/webhooks/arbiter",
"subscribed_events": [
"statement.completed",
"statement.requires_review",
"statement.failed",
"affordability.assessed"
]
}'Upload a PDF, CSV or XLSX statement
curl --request POST \
--url https://api.arbiterlogic.com/v1/statements \
--header "x-api-key: <api_key>" \
--form "file=@statement.pdf" \
--form "password=optional_pdf_password"Handle the completion event
{
"statement_id": "01955b9e-0000-7000-8000-000000000001",
"customer_id": "01955b9e-0000-7000-8000-000000000002",
"status": "completed",
"confidence_score": 0.98,
"flags": [],
"summary": {
"stable_monthly_income": "450000.00",
"average_monthly_income": "462500.00",
"essential_monthly_expenses": "170000.00",
"existing_monthly_debt_repayment": "65000.00",
"average_monthly_surplus": "215000.00"
}
}Retrieve analysis, then assess affordability
curl -X GET "https://api.arbiterlogic.com/v1/statements/{statement_id}/analysis" \
-H "x-api-key: <api_key>"Submit the proposed loan for assessment
curl --request POST \
--url https://api.arbiterlogic.com/v1/affordability \
--header "Content-Type: application/json" \
--header "x-api-key: <api_key>" \
--data '{
"statement_id": "01955b9e-0000-7000-8000-000000000001",
"requested_loan_amount": 500000,
"requested_tenure_months": 12,
"interest_rate": 0.035,
"interest_period": "monthly"
}'Webhooks
Receive the change; do not poll for it.
Create a subscription before submitting statements. Arbiter sends a signed delivery for every subscribed event. Store the signing secret returned at creation—it is shown once and cannot be retrieved later.
Events
- statement.processing
- statement.completed
- statement.requires_review
- statement.failed
- affordability.assessed
Verify every delivery
Validate the HMAC-SHA256 signature in X-Signature-SHA256 against the raw request body.
/v1/webhooksRegister an HTTPS endpoint and the events it receives.
/v1/webhooks/{webhook_id}/testSend a signed test delivery to the registered endpoint.
Statements
Follow the evidence through processing.
/v1/metadata/banksOptional preflight check for supported banks.
/v1/statementsUpload a statement for a customer.
/v1/statements/{statement_id}Retrieve processing status and statement metadata.
/v1/statements/{statement_id}/analysisRetrieve the financial profile generated from the statement.
Affordability
Receive a decision with its reasoning.
An assessment returns the affordability decision together with capacity metrics, reason codes, warnings and the policy context used in the calculation.
Decision
AFFORDABLE, NOT_AFFORDABLE or MANUAL_REVIEW.
Reasons & warnings
Machine-readable context for the outcome.
Metrics
Income, DTI, capacity and residual income.
/v1/affordabilityCreate an affordability assessment from a completed statement.
/v1/affordability/{assessment_id}Retrieve the decision, reasons, warnings and policy snapshot.