---
title: "Keyless multi-plan federal loan calculator"
method: POST
path: "/v1/calculators/loan"
tags: ["Finology.PublicApi"]
---

# Keyless multi-plan federal loan calculator

`POST /v1/calculators/loan`

## Request

- Base URL: `https://api.finology.tech` (the document declares no server; this is the origin it was published from)
- URL: `https://api.finology.tech/v1/calculators/loan`
- Auth: API key in header `X-Api-Key`

Computes the first-year payment, lifetime cost, forgiveness and forgiveness tax for every federal repayment plan a borrower is eligible for, from the same verified engine as the paid API. No API key required. This free rung returns no verifiable answer id — the warranted, logged answer is the keyed /v1/projection and /v1/comparison surface.

## Request body

- KeylessLoanRequest
  - `balance` number, double, required
  - `ratePct` number, double, required
  - `borrowerAgi` number, double, required
  - `filingStatus` string, nullable
  - `spouseAgi` number, double, nullable
  - `spouseFederalLoanBalance` number, double, nullable
  - `dependents` integer
  - `loanType` string, nullable
  - `state` string, nullable
  - `pursuingPslf` boolean
  - `pslfCreditedMonths` integer
  - `priorIdrMonths` integer
  - `incomeGrowthPct` number, double
  - `borrowedOnOrAfterJul12026` boolean, nullable

## Response `200`

OK

- LoanCalcResult
  - `asOf` string, nullable
  - `lowestMonthlyPlan` string, nullable
  - `lowestLifetimeCostPlan` string, nullable
  - `plans` LoanCalcPlan[], nullable
    - `plan` string, nullable
    - `label` string, nullable
    - `monthlyPayment` number, double
    - `totalPaid` number, double
    - `monthsToPayoff` integer, nullable
    - `forgivenBalance` number, double
    - `forgivenessAtMonth` integer, nullable
    - `taxOnForgiveness` number, double
    - `lifetimeCost` number, double
    - `forgivenessType` string, nullable
    - `parityVerified` boolean
  - `excludedPlans` LoanCalcExcludedPlan[], nullable
    - `plan` string, nullable
    - `label` string, nullable
    - `reason` string, nullable
  - `computedBy` string, nullable
  - `assumptions` string[], nullable

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/finology/apis/finology-public-api.md) · [All operations](https://skmtc.dev/finology/apis/finology-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/finology/apis/finology-public-api/revisions/ed0522429715?raw)
