API docs
Get a key, make one authenticated call, see 800.79.
Test keys run the same engine as live keys and are not metered.
First call
Get a key — email, verify, copy the
np_test_ key. No sales call. Then run this. Ontario weekly
$1000.00 on 2026-01-15, claim code 1.
employee.net_pay is 800.79.
curl -sS -X POST https://takehome.gautamkhosla.com/v1/deductions \
-H 'content-type: application/json' \
-H 'authorization: Bearer np_test_YOUR_KEY' \
-d '{"as_of":"2026-01-15","province":"ON","pay_period":52,"gross_pay":"1000.00","federal_claim_code":1,"provincial_claim_code":1}' curl -sS -X POST https://takehome.gautamkhosla.com/v1/deductions \
-H 'content-type: application/json' \
-H 'authorization: Bearer np_test_YOUR_KEY' \
-d '{"as_of":"2026-01-15","province":"ON","pay_period":52,"gross_pay":"1000.00","federal_claim_code":1,"provincial_claim_code":1}' Request
POST /v1/deductions with
content-type: application/json and
authorization: Bearer. Replace
np_test_YOUR_KEY with the test key from verify.
Response
Trimmed body for the first call. Cents are strings, never binary floats.
{
"rule_set_version": "2026-01-01",
"employee": {
"federal_tax": "81.61",
"provincial_tax": "45.80",
"cpp": "55.50",
"cpp2": "0.00",
"ei": "16.30",
"total_deductions": "199.21",
"net_pay": "800.79"
}
} {
"rule_set_version": "2026-01-01",
"employee": {
"federal_tax": "81.61",
"provincial_tax": "45.80",
"cpp": "55.50",
"cpp2": "0.00",
"ei": "16.30",
"total_deductions": "199.21",
"net_pay": "800.79"
}
} Authentication
Live keys count calculations, not HTTP requests, and stop at the plan limit. Prices are on pricing.
Public endpoints
Public listings (/v1/rules, /v1/jurisdictions,
/openapi.json) do not need a key.
Embed
Job boards can skip the API: one
embed.js tag runs the same WASM engine
in the listing page. No cookie, no salary posted back.