Skip to content
induwara.lk
Premium

Free Sri Lanka Developer API

A free, public JSON API for Sri-Lanka-specific data — NIC decoding, gazetted holidays, working days, income tax, land-area conversion, districts and AI text-to-speech. CORS-enabled, no signup to try, free API keys for higher limits.

Try it instantly

Most endpoints work with no key at 50 requests/day per IP. Just curl them.

Free key = 1,000/day

Sign in and create a key for higher limits and key-only endpoints.

Predictable JSON

Every response is { ok, data, meta } with X-RateLimit-* headers.

Built with our free AI builder

Build yours
FUDDU DeFi Protocol
AI-built site

FUDDU DeFi Protocol

"Create a DeFi protocol website called FUDDU with these features: PROTOCOL: FUDDU TREASURY: 0x1294a7e473236990210296223b38fc4163419244 TOKEN

by Anonymous #23

View it live

Authentication

Send your key in a header. Anonymous calls (no header) work at the lower limit.

# header option 1
Authorization: Bearer ilk_live_xxxxxxxx

# header option 2
x-api-key: ilk_live_xxxxxxxx

Use it in your language

cURL

curl "https://induwara.lk/api/v1/nic/199234567890"

JavaScript (SDK)

import { InduwaraLK } from
  "https://induwara.lk/sdk/induwaralk.js";
const api = new InduwaraLK();
const nic = await api.nic("199234567890");

Python

import requests
r = requests.get(
  "https://induwara.lk/api/v1/nic/199234567890")
print(r.json()["data"])

Machine-readable spec: OpenAPI 3.1 · JS SDK · API index (JSON)

Rate limits

TierDaily limitNotes
Anonymous50 / day per IPNo key needed. Voice not available.
Free key1,000 / dayVoice: 100 / day. Resets 00:00 UTC.

Endpoints

AI

POST/api/v1/voice key required Featured

AI Voice (Text to Speech)

Convert text into natural AI speech (MP3). Requires a free API key. Body: { text, voice }. Hosted on our own infrastructure.

ParamInReqDescription
textqueryyesText to synthesise (JSON body). May embed effects: inline [pause] [laugh] [sigh], or wrapping <whisper>…</whisper> <slow>…</slow>.
voicequerynoVoice id: eve | ara | leo | rex | sal (default eve).
languagequerynoLanguage code, e.g. en, auto, fr, de, hi, ja … (28 supported, default en).
codecquerynomp3 | wav (default mp3).
sample_ratequeryno8000 | 16000 | 22050 | 24000 | 44100 | 48000 Hz.
bit_ratequeryno32000 | 64000 | 96000 | 128000 | 192000 (mp3 only).
text_normalizationquerynoExpand numbers/dates/abbreviations before speaking (default true).

Example request

curl -X POST https://induwara.lk/api/v1/voice -H "Authorization: Bearer ilk_live_…" -H "Content-Type: application/json" -d '{"text":"Hello! <whisper>secret</whisper> [laugh]","voice":"eve","language":"en","codec":"mp3"}' --output voice.mp3

Example response

# Returns binary audio (Content-Type: audio/mpeg).
# Save it to a file:
curl -X POST https://induwara.lk/api/v1/voice \
  -H "Authorization: Bearer ilk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"text":"Hello from Sri Lanka","voice":"eve"}' \
  --output voice.mp3
Full reference

Identity

GET/api/v1/nic/{number}

NIC Decoder

Decode a Sri Lankan NIC (old 10-char or new 12-digit) into the data the number encodes: date of birth, gender, age, serial and voting eligibility. Pure parsing — no personal database lookup.

ParamInReqDescription
numberpathyesThe NIC number.

Example request

curl "https://induwara.lk/api/v1/nic/199234567890"

Example response

{
  "ok": true,
  "data": {
    "nic": "199234567890",
    "valid": true,
    "format": "new",
    "dateOfBirth": "1992-12-10",
    "gender": "Male",
    "age": { "years": 33, "months": 5, "days": 24 },
    "serial": 6789,
    "votingEligible": null,
    "source": "Department for Registration of Persons, Sri Lanka",
    "lastVerified": "2026-05-10"
  },
  "meta": { "tier": "anonymous", "endpoint": "nic", "limit": 50, "remaining": 49 }
}
Full reference
GET/api/v1/plate/{plate}

Vehicle Number Plate Decoder

Decode a Sri Lankan number plate into the province, vehicle class and approximate issue era encoded in the letters and digits. Pure parsing of the plate string — no vehicle register is queried and no owner information is returned.

ParamInReqDescription
platepathyesThe number plate. Use hyphens for spaces, e.g. WP-CAB-1234 or CAR-4582.

Example request

curl "https://induwara.lk/api/v1/plate/WP-CAB-1234"
Full reference

Calendar

GET/api/v1/holidays

Public Holidays

Sri Lankan gazetted holidays for a year (public, bank, mercantile and poya days), with English/Sinhala/Tamil names.

ParamInReqDescription
yearquerynoYear (supported: 2026, 2027). Defaults to current year.
typequerynoFilter to one calendar: public | bank | mercantile.

Example request

curl "https://induwara.lk/api/v1/holidays?year=2026&type=public"

Example response

{
  "ok": true,
  "data": {
    "year": 2026,
    "type": "public",
    "count": 24,
    "holidays": [
      { "date": "2026-01-03", "name": "Duruthu Full Moon Poya Day",
        "type": "Buddhist", "public": true, "bank": true, "mercantile": true }
    ],
    "source": "Sri Lanka Government Gazette",
    "lastVerified": "2026-05-16"
  }
}
Full reference
GET/api/v1/working-days

Working Days

Count business days between two dates, excluding weekends and Sri Lankan holidays for the chosen calendar.

ParamInReqDescription
fromqueryyesStart date YYYY-MM-DD.
toqueryyesEnd date YYYY-MM-DD.
calendarquerynopublic | bank | mercantile | government (default: mercantile).
saturdayquerynoSet to 1 to count Saturdays as working days.

Example request

curl "https://induwara.lk/api/v1/working-days?from=2026-01-01&to=2026-03-31&calendar=mercantile"

Example response

{
  "ok": true,
  "data": {
    "from": "2026-01-01", "to": "2026-03-31", "calendar": "mercantile",
    "workingDays": 58, "totalDays": 90, "weekendDays": 25, "holidayDays": 7
  }
}
Full reference

Finance

GET/api/v1/tax/paye

Income Tax (PAYE / APIT)

Calculate Sri Lankan personal income tax (APIT) on a gross monthly salary using the current IRD brackets.

ParamInReqDescription
monthlyqueryyesGross monthly salary in LKR.

Example request

curl "https://induwara.lk/api/v1/tax/paye?monthly=250000"

Example response

{
  "ok": true,
  "data": {
    "grossMonthly": 250000, "grossAnnual": 3000000,
    "monthlyTax": 8000, "annualTax": 96000,
    "monthlyNet": 242000, "annualNet": 2904000, "currency": "LKR"
  }
}
Full reference
GET/api/v1/vat

VAT Calculator

Add or remove Sri Lankan VAT. mode=add adds VAT to a net amount; mode=remove extracts VAT from a gross amount. Rate defaults to the standard 18%.

ParamInReqDescription
amountqueryyesAmount in LKR.
ratequerynoVAT rate %, default 18.
modequerynoadd | remove (default add).

Example request

curl "https://induwara.lk/api/v1/vat?amount=10000&rate=18&mode=add"

Example response

{
  "ok": true,
  "data": {
    "mode": "add", "rate": 18, "base": 10000,
    "vat": 1800, "total": 11800, "currency": "LKR"
  }
}
Full reference
GET/api/v1/loan

Loan EMI Calculator

Equated monthly instalment (EMI) plus total interest and total payment, using the reducing-balance formula.

ParamInReqDescription
principalqueryyesLoan amount in LKR.
ratequeryyesAnnual interest rate %.
monthsqueryyesTenure in months.

Example request

curl "https://induwara.lk/api/v1/loan?principal=5000000&rate=12.5&months=240"

Example response

{
  "ok": true,
  "data": {
    "principal": 5000000, "annualRate": 12.5, "tenureMonths": 240,
    "emi": 56785.71, "totalInterest": 8628570.4, "totalPayment": 13628570.4,
    "currency": "LKR"
  }
}
Full reference
GET/api/v1/fd

Fixed Deposit Calculator

Fixed-deposit maturity and effective annual yield. payout=cumulative|monthly; wht=1 applies the 5% withholding tax on interest.

ParamInReqDescription
principalqueryyesDeposit amount in LKR.
ratequeryyesAnnual interest rate %.
monthsqueryyesTenure in months.
payoutquerynocumulative | monthly.
whtqueryno1 to apply 5% WHT.

Example request

curl "https://induwara.lk/api/v1/fd?principal=1000000&rate=10&months=12&payout=cumulative"

Example response

{
  "ok": true,
  "data": {
    "principal": 1000000, "annualRate": 10, "tenureMonths": 12,
    "payout": "cumulative", "maturityGross": 1104713.07,
    "totalInterestGross": 104713.07, "effectiveAnnualYieldGross": 10.47,
    "currency": "LKR"
  }
}
Full reference

Utility

GET/api/v1/convert/land

Land Area Converter

Convert a Sri Lankan land area between perch, rood, acre, cent, hectare, m², ft² and yd², with acre-rood-perch deed notation.

ParamInReqDescription
valuequeryyesThe amount to convert.
fromqueryyesSource unit: perch | sqft | sqm | sqyd | rood | acre | hectare | cent.

Example request

curl "https://induwara.lk/api/v1/convert/land?value=10&from=perch"

Example response

{
  "ok": true,
  "data": {
    "value": 10, "from": "perch", "squareMetres": 252.9285264,
    "values": { "perch": 10, "acre": 0.0625, "rood": 0.25, "hectare": 0.0253 },
    "deed": { "acres": 0, "roods": 0, "perches": 10, "text": "0A-0R-10.0P" }
  }
}
Full reference

Reference

GET/api/v1/districts

Districts of Sri Lanka

The 25 districts with province, a short tagline and notable places — for address forms, dropdowns and travel apps.

Example request

curl "https://induwara.lk/api/v1/districts"

Example response

{
  "ok": true,
  "data": {
    "count": 25,
    "districts": [
      { "slug": "kandy", "name": "Kandy", "province": "Central",
        "tagline": "…", "notablePlaces": ["Temple of the Tooth", "…"] }
    ]
  }
}
Full reference
GET/api/v1/tools

Tool Catalogue

Search the full catalogue of live tools on induwara.lk. Returns each tool's title, description, category, keywords and URL, ordered by real organic traffic, and flags the tools that also have a computational API endpoint.

ParamInReqDescription
qquerynoFree-text search across title, description and keywords.
categoryquerynoFilter to one category, e.g. Finance, Education, AI.
limitquerynoResults per page, 1-200 (default 50).
offsetquerynoPagination offset (default 0).

Example request

curl "https://induwara.lk/api/v1/tools?q=tax&limit=10"
Full reference

Education

GET/api/v1/z-score

A/L Z-Score Calculator

Compute a Sri Lankan A/L Z-score from three subject marks, with per-subject Z, the final Z and an estimated all-island percentile. Built-in subject statistics are approximate — pass the verbatim Department of Examinations mean and standard deviation for an authoritative result. Call with no parameters to list valid subject ids and streams.

ParamInReqDescription
subjectsquerynoThree comma-separated terms as subject:mark, e.g. combined-maths:75,physics:68,chemistry:71. Optionally override the reference statistics per subject as subject:mark:mean:sd. Omit entirely to get the list of subject ids and streams.

Example request

curl "https://induwara.lk/api/v1/z-score?subjects=combined-maths:75,physics:68,chemistry:71"
Full reference

Frequently asked questions

Is the API free?
Yes. Every endpoint is free. You can call most of them with no key at a lower daily limit; create a free API key for a higher limit. Some endpoints (like voice) require a free key.
Do I need an API key?
Not to try it — anonymous calls work at 50 requests/day per IP. For 1,000/day and access to key-only endpoints, create a free key in your developer dashboard.
Can I use this in production / commercially?
Yes, within the rate limits. Data endpoints cite their official source and a last-verified date. We may introduce higher paid tiers later, but the current free tier stays free.
Is the NIC API a personal-data lookup?
No. It only decodes the information encoded in the NIC number itself (date of birth, gender, serial). It does not look anyone up in any database.