Tevarindo

Documentation

How Tevarindo works, and the API behind it

The webapp and the REST API run the exact same math layer — nothing shown in the UI is computed differently than what the API returns.

How the comparison works

1

List every debt

Type, balance, APR, and minimum payment for each credit card, personal loan, or other balance you want to fold in.

2

We compute your weighted average rate

Every balance is weighted by its APR to produce a single blended rate — the number a flat "average APR" hides.

3

Three consolidation paths get priced

A personal loan, a HELOC, and a 0% balance transfer card are each modeled with their own fees, term, and effective APR (IRR of the real cash flows, not the sticker rate).

4

The cheapest total cost wins

Options are ranked by total cost — interest plus fees — not by the lowest headline rate, so a low-rate option with a large origination fee doesn't win on a technicality.

API reference

Base URL: https://tevarindo-api.smarttechinvest.com. Anonymous requests from the webapp origin get 50 comparisons per day; sign up for an API key to raise that limit and unlock paid-tier response fields. Send the key as an X-API-Key header.

POST/v1/compareNone (anonymous, rate-limited) or X-API-Key

Core comparison endpoint. Computes weighted average APR, current total interest at minimum payments, and prices personal loan / HELOC / balance transfer options.

Request body

{
  "debts": [
    { "balance": 8200, "apr": 0.2199, "min_payment": 164 },
    { "balance": 5400, "apr": 0.1949, "min_payment": 108 }
  ],
  "monthly_budget": 650
}

Response (free tier)

{
  "data": {
    "current_wair": 18.52,
    "total_debt": 13600,
    "best_option": "personal_loan",
    "total_interest_saved": 4820
  },
  "tier": "free",
  "upgrade": "Full comparison with effective APRs, monthly payments, and NPV analysis requires a paid plan."
}
POST/v1/signupNone

Creates an account and issues an API key (prefix tvr_live_...). The key is returned once — store it client-side immediately.

Request body

{
  "name": "Jane Lender",
  "email": "jane@example.com",
  "password": "at-least-8-characters"
}
POST/v1/checkoutNone

Creates a Stripe Checkout session for a plan (single_report, report_pack, api_starter, api_pro) and returns the redirect URL.

Request body

{
  "plan": "single_report",
  "email": "jane@example.com"
}
GET/v1/accountX-API-Key

DELETE only — a CCPA data-deletion request. Removes the account, its report-download history, and its request log.

GET/data/interest-ratesNone (anonymous, rate-limited) or X-API-Key

Raw benchmark rows behind the comparison math: interest-rates, lender-benchmarks, usury-laws, credit-impact. Each returns up to 100 rows.

GET/healthNone

Liveness probe. Returns 200 with db status "ok" when the D1 binding answers, 503 with "unreachable" otherwise.

Error shape

Every failed request returns a 4xx/5xx status with a structured body:

{
  "error": {
    "code": "INVALID_INPUT",
    "message": "Total debt balance must be positive"
  }
}

Need programmatic access?

Developer API plans start at $29/mo for 100 analyses and include bulk endpoints and webhook delivery on the Pro tier.

View API pricing