/v1/brackets
Validate / normalize a schedule
Try it live
10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.
It works. Grab an API key and use it in your project.
Get an API keyCode snippets
curl "https://api.oanor.com/taxbracket-api/v1/brackets" \ -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/taxbracket-api/v1/brackets", {
headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/taxbracket-api/v1/brackets");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
"https://api.oanor.com/taxbracket-api/v1/brackets",
headers={"x-oanor-key": "oanor_test_..."}
)
Example response
A real response from this endpoint, captured by the latest health check.
{
"data": {
"note": "Normalized, sorted bracket schedule. 'to: null' is the top (open-ended) bracket. A 0% tier from 0 is added if missing.",
"count": 7,
"input": {
"brackets": [
{
"from": 0,
"rate": 10
},
{
"from": 11000,
"rate": 12
},
{
"from": 44725,
"rate": 22
},
{
"from": 95375,
"rate": 24
},
{
"from": 182100,
"rate": 32
},
{
"from": 231250,
"rate": 35
},
{
"from": 578125,
"rate": 37
}
]
},
"tiers": [
{
"to": 11000,
"from": 0,
"tier": 1,
"rate_percent": 10
},
{
"to": 44725,
"from": 11000,
"tier": 2,
"rate_percent": 12
},
{
"to": 95375,
"from": 44725,
"tier": 3,
"rate_percent": 22
},
{
"to": 182100,
"from": 95375,
"tier": 4,
"rate_percent": 24
},
{
"to": 231250,
"from": 182100,
"tier": 5,
"rate_percent": 32
},
{
"to": 578125,
"from": 231250,
"tier": 6,
"rate_percent": 35
},
{
"to": null,
"from": 578125,
"tier": 7,
"rate_percent": 37
}
],
"top_rate_percent": 37
},
"meta": {
"timestamp": "2026-06-03T17:41:56.463Z",
"request_id": "d414f734-075b-4214-b693-7fdd572dbc28"
},
"status": "ok",
"message": "Normalize brackets",
"success": true
}