One API for the Kayanda Liquidity Optimization Engine™ and the Payment Certainty Score™. Base URL https://www.kayandallc.com. Machine-readable spec: /api/v1/openapi.json. Live uptime: /status.html.
Claim a free developer key (100 queries per month) from the API section, or programmatically:
curl -X POST https://www.kayandallc.com/api/v1/keys/developer \
-H "Content-Type: application/json" \
-d '{"email":"you@company.com"}'
The key is emailed to you and stored only as a SHA-256 hash. Growth and Scale keys are issued automatically after checkout; see /api/v1/plans. Send the key on every call as X-Api-Key (or Authorization: Bearer).
POST /api/v1/route runs all five Engine layers and returns ranked routes, a recommendation, a backup, reason codes, and a decision_id.
curl -X POST https://www.kayandallc.com/api/v1/route \
-H "X-Api-Key: kc_live_…" -H "Content-Type: application/json" \
-d '{
"receivable": { "amount": 500000, "payer": "fed", "mechanism": "assign", "documentation": 90 },
"need": { "amount": 200000, "deadline_days": 4, "min_approval": 0.6 },
"routes": [
{ "id": "A", "time_to_cash_days": 1, "total_fee_usd": 9000, "max_advance_pct": 80, "approval_prior_pct": 80, "recourse": false },
{ "id": "B", "time_to_cash_days": 3, "total_fee_usd": 5000, "max_advance_pct": 85, "approval_prior_pct": 75, "recourse": false },
{ "id": "C", "time_to_cash_days": 8, "total_fee_usd": 3000, "max_advance_pct": 90, "approval_prior_pct": 85, "recourse": false }
]
}'
Response (abridged):
{
"decision_id": "LD-…",
"engine": { "name": "Kayanda Liquidity Optimization Engine", "version": "1.0-calibration" },
"recommendation": { "route_id": "B", "name": "B" },
"backup": { "route_id": "A", "name": "A" },
"reason_codes": [
{ "code": "R1", "text": "B is the lowest estimated total cost ($5,000) among 2 route(s) that meet the 4-day deadline…" },
{ "code": "R2", "text": "Estimated saving versus the costliest eligible route: $4,000." },
{ "code": "R4", "text": "C is cheaper but ineligible: misses_deadline." }
],
"routes": [ { "rank": 1, "route_id": "B", "eligible": true,
"time_to_cash": { "p50_days": 3, "p80_days": 4.85, "score": 73 },
"true_cost": { "total_usd": 5000, "effective_apr_pct": 49.32, "score": 31 },
"approval_probability": 0.95 }, … ]
}
Omit routes and the Engine uses Kayanda's five generic route classes (fast online factor, government contract financing specialist, invoice financing platform, bank asset-based line, platform working-capital advance). Route classes are illustrative priors, not any funder's terms.
| Field | Meaning |
|---|---|
receivable.amount | Invoice face value, USD. Required. |
receivable.payer | fed, prime, state, ent, smb. |
receivable.mechanism | assign (Assignment of Claims), net, pwp (pay-when-paid), miles (milestone or disputed). |
receivable.documentation | 0–100 completeness. |
receivable.expected_pay_days | Optional override of days until the payer pays; otherwise the midpoint of the Payment Certainty payment window. |
need.amount / need.deadline_days | Cash required and the day it is needed by. Required. |
need.min_approval | Approval floor, 0–1. Default 0.6. |
routes[] | Optional offers: time_to_cash_days, total_fee_usd or fee_pct_per_30_days + flat_fee_pct, reserve_pct, recourse, max_advance_pct, approval_prior_pct, accepts. |
Close the loop so the Outcome Graph™ can compare what was estimated with what happened.
curl -X POST https://www.kayandallc.com/api/v1/route/outcome \
-H "X-Api-Key: kc_live_…" -H "Content-Type: application/json" \
-d '{ "decision_id": "LD-…", "route_id": "B", "status": "funded",
"actual_days_to_cash": 3, "actual_total_cost_usd": 5100 }'
The response returns the days and cost error against the original estimate. Aggregate, anonymised calibration counts are public at /api/v1/outcome-graph.
| Endpoint | Auth | Purpose |
|---|---|---|
POST /api/v1/route | Key | Liquidity Optimization Engine™ ranking and recommendation |
POST /api/v1/route/outcome | Key | Realised result for a decision |
POST /api/v1/score | Key | Payment Certainty Score™ (0–1000) |
POST /api/v1/moneyfile | Key | Programmatic Money File™ intake |
GET /api/v1/moneyfile/{id} | Key | File status (owner only) |
POST /api/v1/outcome | Key | Funded, declined, or paid outcome for a Money File |
GET /api/v1/usage | Key | Quota used this month |
GET /api/v1/outcome-graph | Public | Aggregate calibration counts |
GET /api/v1/payer-graph | Public | Aggregate Payer Graph™ counts |
GET /api/v1/plans | Public | Plans and checkout links |
GET /api/health | Public | Self-test; every call is logged |
GET /api/status | Public | 90-day uptime log |
Developer keys: 100 queries per month, 30 requests per minute. Paid plans: plan quota, 600 requests per minute. Each response carries x-quota-used and x-quota-limit.
| Status | Meaning |
|---|---|
| 400 | Invalid JSON or missing required fields (not metered) |
| 401 | Missing, invalid, or inactive key |
| 404 | Unknown decision or resource |
| 429 | Monthly quota or rate limit reached |
| 5xx | Server error; counted in the public uptime log |
Paths are versioned under /api/v1. Every Engine response states engine.version; model changes increment it and are announced by email to key holders before release.