---
title: "Quote a Financial aid appeal letter call (free)"
method: POST
path: "/v1/tools/appeal/quote"
---

# Quote a Financial aid appeal letter call (free)

`POST /v1/tools/appeal/quote`

## Request

- Base URL: `https://api.counselorai.app`
- URL: `https://api.counselorai.app/v1/tools/appeal/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.
  - `counselorName` string: Who the letter is from. The counselor stays the author; this tool drafts, it does not sign.
  - `schoolName` string: The institution the appeal goes to.
  - `appealType` 'changed_circumstances' | 'financial_hardship' | 'competing_offer' | 'special_circumstances' | 'error_correction': What the appeal rests on. changed_circumstances is income loss or a new expense since the FAFSA, competing_offer is a match request, special_circumstances asks for a Professional Judgment review, error_correction fixes bad data on the original filing. financial_hardship is a legacy alias for changed_circumstances.
  - `currentAward` string: What the school offered, as written on the award letter.
  - `amountNeeded` string: The gap being asked for.
  - `keyDetails` string, required: The circumstances, in the counselor or family's own words. This is what the letter is built out of, so specifics beat summaries.
  - `competing` string: A competing offer to cite, if there is one.
  - `status` string[]: Student circumstances the letter should carry without labeling them. homeless and housing_insecure are the same category.
  - `length` 'short' | 'standard' | 'detailed': Roughly 330, 440 or 560 words.
  - `naturalness` integer: How plainly the letter should read. 1 is formal institutional, 5 is conversational.

## 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)
