حسابکەری ئازاد
هەموو ژمێرەرێکی ئەم ماڵپەڕە API یەکی ئازادە بۆ JSON. هیچ تۆمارکردنێک، هیچ کۆدی API، CORS-ە چالاکەکە - لە خزمەتگوزاریەکەتەوە بانگی بکە یان ڕاستەوخۆ لە برەوکەرەوە.
چاوپێکەوتن
ئەم ئەپی پییە هەمان حسابی ئەو ماڵپەڕەی بەکاردەهێنێت. نرخی مەیدانی ژمێرەرەکە بنێرێت وەک پارامەتری پرسیارکردن یان JSON و ئەنجامە حسابکراوەکان بگەڕێنێتەوە وەک JSON - لەگەڵ هەر کاتژمێرێکی دابەزین یان زانیاری کێشکردن کە ژمێرەرەکە بەرهەمی هێناوە.
- 198+ ژمێرەرەکان، هەریەکەیان خاڵێکی کۆتایی خۆی هەیە
- کلیلی API نیە — پەڕەی پەڕەی ناوەکە
- CORS —
Access-Control-Allow-Origin: *(بەکارھێنەری بەشی بەکارهێنەر) - سنووری ڕێژەی: 60 داواکاری/کاتژمێر بۆ هەر IPێک (HTTP 429 کاتێک زیاد دەکات)
- Errors are free — only a successful (2xx) response uses one call from your monthly quota. Every 400, 401, 404, 429 and 500 costs you nothing.
پێگەی بنەڕەتی
https://calculator.free/api/v1/
پەڕەی _هەژمارکردن
GET https://calculator.free/api/v1/
لیستێکی هەموو حسابکەرەکان دەگەڕێنێتەوە کە دەتوانرێت بخورێت لەلایەن ئامێری حسابکردنەوەوە لەگەڵ هەموو شوێنەکانی (کچڵ، ناونووس، جۆر، پێشنیار، یەکە) و کچڵەکانی ئەنجام - کە بەسوودن بۆ دروستکردنی کڕیارێکی چالاک Each field also carries a required flag — true for the few fields that have no default (dates, mostly). Send those: a couple of calculators can infer one, the rest answer 400 without it.
حساب کردن - یەک ژمێرەر بەڕێوە ببە
GET https://calculator.free/api/v1/<slug>/?field=value&field=value
POST https://calculator.free/api/v1/<slug>/ (JSON or form body)
شێوەی وەڵامدانەوە:
{
"ok": true,
"slug": "mortgage",
"country": "us",
"inputs": { ... the values actually computed with ... },
"results": { ... computed result keys ... },
"schedule": { "columns": [...], "rows": [...] } | null,
"chart": { "type": "pie", "slices": [...] } | null,
"defaults_applied": ["tax", "insurance"]
}
حسابی وڵات-زانیاری (هەژاری، قەرز، داهاتی-مافی، فرۆشتن-مافی...) قبوڵ بکە ?country=us|uk|ca|au|in|ie|nz|za. 404 دەگەڕێتەوە؛ وڵاتێک کە پاڵپشتی ناکرێت یان داخڵکردنێکی خراپ 400 دەگەڕێتەوە لەگەڵ پەیامێکی یارمەتیدەر و تایبەتمەندی بەشی.
Parameters, defaults and errors
Send only the fields you care about. Anything you leave out is filled with that field's published default — the same value the calculator page pre-fills, so the API and the website always return the same numbers for the same inputs. Each response lists what it filled in under defaults_applied.
Anything the API cannot resolve honestly is an error, never a zero: a misspelled parameter, a value of the wrong type, an unknown dropdown option, or a missing field that has no default (the date fields — a birth date cannot be guessed). Every 400 names the offending parameter and echoes the full field spec so a client can correct itself.
$ curl "https://calculator.free/api/v1/mortgage/?price=350000&rate=6.5&term=30"
{
"ok": false,
"error": "unknown_parameter",
"message": "Unknown parameter 'term' for calculator 'mortgage'. Did you mean 'years'? ...",
"unknown_parameters": ["term"],
"did_you_mean": { "term": "years" },
"valid_parameters": ["down", "extra", "extra_onetime", "extra_yearly", "hoa",
"insurance", "other", "pmi", "price", "rate", "tax", "years"],
"fields": [ ... ]
}
| error | HTTP | When |
|---|---|---|
unknown_parameter | 400 | a parameter that is not a field of this calculator (with a did-you-mean suggestion) |
invalid_value | 400 | a number field that is not a number, a dropdown value outside its options, an unparseable date, or an unknown _mode |
missing_parameter | 400 | the calculator produced no result because a field with no default was left empty |
unsupported_country | 400 | ?country= is not one this calculator has data for |
bad_json | 400 | the POST body is not valid JSON |
unknown_calculator | 404 | no calculator with that slug |
invalid_key | 401 | an API key was sent but is unknown or inactive |
rate_limited / quota_exceeded | 429 | the anonymous hourly IP limit, or a key's monthly quota, is used up |
too_many_invalid_requests | 429 | too many rejected requests in one hour for this key — rejected calls are free, so they are rate-limited instead. Resets hourly; successful calls never count towards it. |
The /api/v1/ index publishes every field's key, type, unit, default and whether it is required — enough to build a client that never guesses.
ناساندنی پلانەکان
دەتوانیت بەبێ هیچ کلیلێک بانگی API بکەیت - داواکاریە نادیارەکان بە پێی IP سنووردار دەکرێن. بۆ زیادکردنی کۆتایەکی مانگانە کە پێشبینی دەکرێت (و بەکارهێنانی بازرگانی)، کلیلێک دروست بکە لەسەر پەڕەی حسابەکەت و بە یەکێک لە سێ ڕێگاکە بینێرێت:
GET https://calculator.free/api/v1/mortgage/?price=350000&key=YOUR_KEY
curl -H "Authorization: Bearer YOUR_KEY" "https://calculator.free/api/v1/bmi/?units=metric&height=180&weight=80"
curl -H "X-Api-Key: YOUR_KEY" "https://calculator.free/api/v1/bmi/?units=metric&height=180&weight=80"
- ئازاد — نادیار (IP نرخی سنووردار) یان کلیلی ئازاد لەگەڵ کۆتایەکی مانگانەی بچوک. بازرگانی نیە.
- گەشەپێدەر $9/ مانگێک — 10,000 پەیوەندیکردن/مانگ، بەکارهێنانی بازرگانی.
- بازرگانی $49/ مانگێک — 100,000 پەیوەندیکردن/مانگ، پێشەنگی تێپەڕین.
What counts against your quota
Only a successful response does. One 2xx = one call. Every error is free: a 400 for a misspelled parameter, a bad value or a missing required field, a 404 for an unknown slug, a 401 for a bad key, a 429, and anything that goes wrong on our side. Explore the contract and fix your request as many times as you need — you are billed for answers, not for corrections.
Because errors are free they are rate-limited instead: if one key provokes more than 200 rejected responses in an hour, it gets HTTP 429 "too_many_invalid_requests" until the hour rolls over. Successful calls never count towards that, so a working integration will never see it — it only catches a client stuck in a retry loop.
کاتێک کە کۆتا مانگانەی کلیلەکە بەکاردەهێنرێت API ی HTTP 429 دەگەڕێنێتەوە لەگەڵ هەڵەی "quota_exceeded"؛ کلیلێکی نەناسراو یان نا چالاک HTTP 401 دەگەڕێنێتەوە. پلانی تەواو ببینە و لە نرخ پەڕە.
نمونە
curl
curl "https://calculator.free/api/v1/mortgage/?price=350000&down=70000&rate=6.9&years=30"
JavaScript fetch()
const r = await fetch(
"https://calculator.free/api/v1/bmi/?" + new URLSearchParams({
units: "metric", height: "180", weight: "80"
}));
const { results } = await r.json();
console.log(results.bmi, results.category);
Python
import requests
r = requests.get("https://calculator.free/api/v1/mortgage/",
params={"price": 350000, "down": 70000,
"rate": 6.9, "years": 30},
headers={"Authorization": "Bearer YOUR_KEY"})
print(r.json()["results"])
POST JSON
curl -X POST "https://calculator.free/api/v1/income-tax/?country=uk" \
-H "Content-Type: application/json" \
-d '{"income": 60000}'
هەموو خاڵەکانی کۆتایی
خاڵێکی کۆتایی بۆ هەر ژمێرەرێک. کیبۆردەکانی بەشی و کیبۆردەکانی ئەنجام بۆ هەریەک لە ناو /api/v1/ ڕێکەوت.
دارایی (41)
پارە و باج (2)
| ژمێرەر | خاڵى کۆتایی |
|---|---|
| ژمێرەری باج | /api/v1/income-tax/ |
| ژمێرەری باج و باجەکانی فرۆشتن | /api/v1/sales-tax/ |
تەندروستی و چاکبوون (28)
جۆر (26)
ئامار (15)
گۆڕێنەری یەکەکان (17)
زانست و ئەندازیاری (27)
کاتی _ڕۆژ (15)
هەموو ڕۆژێک (27)
ئەنجامەکان تەنها بۆ ڕێنمایی گشتین، نەک بۆ ڕاوێژی دارایی، پزیشکی یان باج.