---
title: "Quote a FAFSA checklist call (free)"
method: POST
path: "/v1/tools/fafsa/quote"
---

# Quote a FAFSA checklist call (free)

`POST /v1/tools/fafsa/quote`

## Request

- Base URL: `https://api.counselorai.app`
- URL: `https://api.counselorai.app/v1/tools/fafsa/quote`
- Auth: HTTP bearer

Free pre-flight. Validates the input and returns the exact credit hold a real call would take at this account's price, without billing anything. An invalid input is still a 200: the body carries valid:false and the validation errors.

## Request body

- object
  - `studentName` string: The student this is about. Used in the output text.
  - `grade` '9' | '10' | '11' | '12' | 'transfer': How far out the family is. 12 means act now.
  - `dependency` 'dependent' | 'independent' | 'unsure': Dependency drives whose income is reported. unsure is a valid answer and changes the checklist.
  - `income` 'under30' | '30to60' | '60to100' | 'over100' | 'unknown': Household income band. Drives whether Pell is in play.
  - `specials` string[]: Situations that change the filing rules: divorced or separated parents, a stepparent, a sibling also in college, undocumented status, foster care, housing instability, disability, a mid-year income change.
  - `schools` string: Schools on the list, if known. Deadlines differ by school.
  - `timeline` string: Where they are in the cycle.
  - `notes` string: Anything else that should shape the output.

## Response `200`

Quote

- object
  - `tool` string
  - `valid` boolean
  - `validation_errors` unknown[]
    - unknown
  - `estimated_credits` integer
  - `estimated_usd` number
  - `max_credits_held` integer
  - `max_credits_supported` boolean
  - `credit_balance` integer
  - `sufficient` boolean
  - `price_multiplier` number

---

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