API Reference
Base URL: `https://api.moneyline.ai` (hosted) or `http://localhost:3100` (self-hosted).
All endpoints require Authorization: Bearer <api_key> header unless noted.
OpenAPI spec: openapi.json
Health (public — no auth)
GET /health
GET /health/ready
GET /v1/healthSubmissions
POST /v1/submissions Create submission
GET /v1/submissions List submissions (search, filter, paginate)
GET /v1/submissions/:id Get submission
PATCH /v1/submissions/:id Update submission
DELETE /v1/submissions/:id Delete submission + related data
POST /v1/submissions/:id/process Start processing pipeline
GET /v1/submissions/:id/status Get processing status
POST /v1/submissions/:id/workflow Start custom workflow
POST /v1/submissions/:id/enrich Enrich submission data
GET /v1/submissions/:id/duplicates Find duplicate submissions
GET /v1/submissions/:id/timeline Event timeline (audit-derived)
GET /v1/submissions/:id/attribute-values Entity attribute values
GET /v1/submissions/:id/parsed-submissions Parsed submission data
GET /v1/submissions/:id/missing-accounts Missing account detectionDocuments
POST /v1/submissions/:sid/documents Upload document (multipart)
GET /v1/submissions/:sid/documents List documents for submission
GET /v1/documents List all documents
GET /v1/documents/:id Get document details
DELETE /v1/documents/:id Delete document
GET /v1/documents/:id/download Get signed download URL
POST /v1/documents/:id/parse Trigger document parsing
POST /v1/documents/:id/reclassify Change document classification
POST /v1/documents/:id/split Split multi-page document
GET /v1/submissions/:id/documents/:docId/base64 Base64 export
GET /v1/submissions/:id/documents/:docId/xlsx XLSX export
POST /v1/submissions/:id/documents/:docId/rename Rename documentDocument Classes
POST /v1/document-classes Create document class
GET /v1/document-classes List document classes
GET /v1/document-classes/:id Get document class
PATCH /v1/document-classes/:id Update document class
DELETE /v1/document-classes/:id Delete document classTransactions
POST /v1/transactions Create transaction
GET /v1/transactions List transactions (filter, paginate)
POST /v1/transactions/bulk Bulk create transactions
GET /v1/transactions/:id Get transaction
DELETE /v1/transactions/:id Delete transaction
POST /v1/transactions/enrich Enrich transactions
POST /v1/submissions/:sid/transactions/enrich Enrich by submission
POST /v1/transactions/:id/feedback Submit correction feedbackAnalytics (per-submission)
GET /v1/submissions/:id/scorecard Full scorecard with metrics + grades
GET /v1/submissions/:id/metrics All metrics for submission
GET /v1/submissions/:id/metrics/:name Single metric value
GET /v1/submissions/:id/cashflow Cashflow P&L by period
GET /v1/submissions/:id/balances Daily balance report
GET /v1/submissions/:id/statistics Summary statistics
GET /v1/submissions/:id/recurring Recurring transaction report
GET /v1/submissions/:id/anomalies Anomaly detection
GET /v1/submissions/:id/merchants Merchant spend breakdown
GET /v1/submissions/:id/categories Category breakdown
GET /v1/submissions/:id/coverage Data coverage analysis
GET /v1/submissions/:id/risk-score ML risk score
GET /v1/submissions/:id/forecast Revenue forecast
GET /v1/submissions/:id/benchmarks Metric benchmarks
GET /v1/submissions/:id/bank-summary Bank statement summary
GET /v1/submissions/:id/financials Financial overviewPortfolio Analytics (cross-submission)
GET /v1/analytics/portfolio Aggregate analytics across all submissions
GET /v1/analytics/portfolio?since=2026-01-01 Filter by dateMetrics
GET /v1/metrics List all available metric definitions
GET /v1/metrics/rule-metrics Metrics available for rule evaluationSearch
GET /v1/search?q=amazon&type=submissions,transactions,merchantsFull-text search with PostgreSQL tsvector + trigram similarity.
Rules & Policies
POST /v1/rules Create rule
GET /v1/rules List rules
GET /v1/rules/:id Get rule
PATCH /v1/rules/:id Update rule
DELETE /v1/rules/:id Delete rule
POST /v1/rules/:id/evaluate Evaluate single rule
POST /v1/policies/evaluate Evaluate all policies
GET /v1/submissions/:id/policy-evaluations Get evaluation history
POST /v1/submissions/:id/policy/progress Policy progressFunders
POST /v1/funders Create funder
GET /v1/funders List funders
GET /v1/funders/linked List linked funders
GET /v1/funders/:id Get funder
PATCH /v1/funders/:id Update funder
DELETE /v1/funders/:id Delete funder
POST /v1/funders/:id/submissions Link submission to funder
GET /v1/funders/:id/submissions List funder submissions
GET /v1/funders/:fid/policies List funder policies
POST /v1/funders/:fid/policies Create funder policy
GET /v1/submissions/:sid/funders List funders for submission
POST /v1/submissions/:sid/funders/match Auto-match fundersWebhooks
POST /v1/webhooks Create webhook
GET /v1/webhooks List webhooks
GET /v1/webhooks/event-types List available event types
GET /v1/webhooks/:id Get webhook
PATCH /v1/webhooks/:id Update webhook
DELETE /v1/webhooks/:id Delete webhook
POST /v1/webhooks/:id/test Send test delivery
GET /v1/webhooks/:id/deliveries List deliveries
POST /v1/webhooks/:id/deliveries/:did/replay Replay failed deliveryAPI Keys
POST /v1/api-keys Create API key
GET /v1/api-keys List API keys (no secrets)
GET /v1/api-keys/:id Get API key details
DELETE /v1/api-keys/:id Revoke/delete key
POST /v1/api-keys/:id/activate Activate key
POST /v1/api-keys/:id/deactivate Deactivate key
POST /v1/api-keys/:id/rotate Rotate key (24h grace period)Audit Log
GET /v1/audit-log Query audit log
GET /v1/audit-log?resource_type=submission&action=create
GET /v1/audit-log?start_date=2026-01-01&end_date=2026-04-01Usage Metrics
GET /v1/usage API calls, docs processed, storage usedEntities
POST /v1/entities Create entity
GET /v1/entities List entities
GET /v1/entities/:id Get entity
PATCH /v1/entities/:id Update entity
DELETE /v1/entities/:id Delete entity
POST /v1/entities/:id/attributes Add attributes
GET /v1/entities/:id/attributes Get attributes
POST /v1/entities/:eid/sources Add entity source
POST /v1/entities/bulk-save Bulk upsert entities
GET /v1/entities/export Export entitiesMerchants
GET /v1/merchants List merchants
GET /v1/merchants/:id Get merchant
GET /v1/merchants/groups List merchant groups
GET /v1/merchants/groups/:id Get merchant group
POST /v1/merchants/extract Extract merchant from text
GET /v1/merchant-groups List merchant groups (alias)
GET /v1/merchant-groups/:id Get merchant group (alias)Integrations
POST /v1/integrations Create integration
GET /v1/integrations List integrations
GET /v1/integrations/:id Get integration
PATCH /v1/integrations/:id Update integration
DELETE /v1/integrations/:id Delete integration
GET /v1/integrations/:id/links Get integration links
POST /v1/integrations/plaid/link-token Create Plaid link token
POST /v1/integrations/plaid/exchange-token Exchange Plaid token
POST /v1/integrations/finicity/connect Finicity connect
POST /v1/integrations/import Import from integrationData Imports (provider-specific)
POST /v1/submissions/:id/plaid-assets Import Plaid assets
POST /v1/submissions/:id/plaid-transactions Import Plaid transactions
POST /v1/submissions/:id/ocrolus Import from Ocrolus
POST /v1/submissions/:id/inscribe Import from Inscribe
POST /v1/submissions/:id/decision-logic Import from Decision Logic
POST /v1/submissions/:id/yodlee Import from YodleePDFs
GET /v1/submissions/:id/pdfs List PDFs
GET /v1/submissions/:id/pdfs/:pid Get PDF details
PUT /v1/submissions/:id/pdfs/:pid Update PDF
POST /v1/submissions/:id/pdfs/parse Parse all PDFs
POST /v1/submissions/:id/pdfs/:pid/reload Reload PDF
POST /v1/submissions/:id/pdfs/:pid/unload Unload PDF
POST /v1/submissions/:id/pdfs/:pid/currency Set PDF currency
PATCH /v1/submissions/:id/pdfs/:pid/statements Update statementsEnrichers
POST /v1/submissions/:id/enrichers Run enrichers
POST /v1/submissions/:id/enrichers/sync Sync enricher results
GET /v1/submissions/:id/enrichers/fields List enricher fields
GET /v1/submissions/:id/enrichers/results Get enricher results
GET /v1/submissions/:id/enrichers/results/:n Get specific enricher resultData Sources
GET /v1/submissions/:sid/data-sources List data sources for submission
GET /v1/data-sources/:id Get data source
PATCH /v1/data-sources/:id Update data source
GET /v1/data-sources/:id/accounts List accounts
PATCH /v1/data-sources/:dsid/accounts/:id Update accountPositions
GET /v1/submissions/:sid/positions List positions for submission
GET /v1/positions/:id Get position
GET /v1/positions/:id/transactions Get position transactionsBroker Portal
POST /v1/broker/submissions Create broker submission
GET /v1/broker/submissions List broker submissions
GET /v1/broker/submissions/:id Get broker submission
PATCH /v1/broker/submissions/:id Update broker submission
POST /v1/broker/submissions/:id/submit Submit for review
POST /v1/broker/api-keys Create broker API key
GET /v1/broker/api-keys List broker API keysISO Applications
POST /v1/iso-applications Create ISO application
GET /v1/iso-applications List ISO applications
GET /v1/iso-applications/:id Get ISO application
GET /v1/iso-applications/:id/results Get processing results
POST /v1/iso-applications/:id/reprocess Reprocess applicationEmails
GET /v1/emails List emails
GET /v1/emails/:id Get email
GET /v1/submissions/:sid/emails List emails for submission
GET /v1/emails/:id/eml Download EMLEmail Templates
POST /v1/email-templates Create template
GET /v1/email-templates List templates
GET /v1/email-templates/:id Get template
PATCH /v1/email-templates/:id Update template
DELETE /v1/email-templates/:id Delete templateCRM Integrations
POST /v1/crm-integrations Create CRM integration
GET /v1/crm-integrations List CRM integrations
GET /v1/crm-integrations/:id Get CRM integration
PATCH /v1/crm-integrations/:id Update CRM integration
DELETE /v1/crm-integrations/:id Delete CRM integration
POST /v1/crm-integrations/:id/sync Sync CRM dataWorkflows
GET /v1/workflows List workflows
POST /v1/workflows Create workflow
GET /v1/workflows/:id Get workflow
POST /v1/workflows/start Start workflow execution
GET /v1/workflows/:id/executions List executionsApps
GET /v1/apps List available apps
GET /v1/apps/installed List installed apps
GET /v1/apps/:id Get app details
POST /v1/apps/:id/install Install app
DELETE /v1/apps/:id/uninstall Uninstall appCategories
GET /v1/categories List transaction categoriesFeedback
POST /v1/feedback Submit feedback
GET /v1/feedback List feedbackFiles
POST /v1/files/process Process uploaded file
GET /v1/submissions/:id/files/recent Get recent files
GET /v1/file-rename-rules/variables List rename variablesUser Settings
GET /v1/user/layout Get dashboard layout
PUT /v1/user/layout Update dashboard layout
GET /v1/user/settings Get user settings
PUT /v1/user/settings Update user settings
GET /v1/user/logo Get tenant logo
POST /v1/user/logo Upload tenant logoError Format
All errors return a consistent JSON body:
{
"error": {
"type": "invalid_request_error",
"code": "invalid_document_class",
"message": "Invalid document_class 'bank_statment'. Did you mean 'bank_statement'?",
"param": "document_class",
"doc_url": "https://docs.moneyline.ai/errors#invalid-document-class",
"request_id": "9aef5324-635c-4ef2-a4b5-c9c953902413"
}
}Error types: invalid_request_error, authentication_error, rate_limit_error, api_error, not_found_error, conflict_error, validation_error.
See Error Codes for the full catalog (30+ codes with doc links).
Pagination
List endpoints use cursor-based pagination:
{
"data": [...],
"has_more": true,
"next_cursor": "eyJ..."
}Pass ?cursor=eyJ...&limit=100 for the next page. Default limit: 100, max: 1000.
Idempotency
POST/PUT/PATCH requests accept Idempotency-Key header. Keys are scoped per-tenant and expire after 24 hours.