---
title: "find_tax_cliffs"
method: POST
path: "/v1/tools/find_tax_cliffs"
tags: ["tools"]
---

# find_tax_cliffs

`POST /v1/tools/find_tax_cliffs`

## Request

- Base URL: `https://opentax.invaro.ai`
- URL: `https://opentax.invaro.ai/v1/tools/find_tax_cliffs`
- Auth: one of:
  - HTTP bearer
  - none

Find exact dollar amounts where one more cent of an input costs MORE than a cent of tax (marginal rate over 100%) — e.g. the EITC investment-income kill switch, CTC phase-out steps. Every probe is a real evaluation.

## Headers

- `X-OpenTax-Return-Id` string

## Request body

- object
  - `facts` object, required: facts for the computation: either flat corpus fact ids (see list_input_facts) or the same group objects calculate_tax accepts (filing, income, retirement, …), plus optional target and asOf. Business/fiduciary/dependent facts are accepted flat. Unknown keys are rejected by name — nothing is ever silently dropped.
  - `vary` string, required: money fact to vary, e.g. "wages" or "taxableInterest"
  - `fromDollars` number, required
  - `toDollars` number, required
  - `stepDollars` number: coarse scan step, default 1000

## Response `200`

ok:true with the computed value, line set or lookup hits; ok:false with error.code when the engine refuses (NEEDS_FACTS, NO_APPLICABLE_RULE, UNHANDLED_ENUM_CASE)

- object
  - `ok` boolean, required

## Other responses

- `400`: transport-level error
- `401`: transport-level error
- `429`: transport-level error

---

[API](https://skmtc.dev/invaro/apis/opentax-rest-api.md) · [All operations](https://skmtc.dev/invaro/apis/opentax-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/invaro/apis/opentax-rest-api/revisions/61fd3e3e6018?raw)
