Holidays, working days, and full calendar data for India from 2000 to 2026 — with a single API call.
// Fetch Indian holidays for June 2026 fetch('https://api.tezzcorp.in/v1/holidays?country=IN&year=2026&month=6', { headers: { 'X-API-Key': 'tzc_live_your_api_key' } }) .then(r => r.json()) .then(data => { // ✓ Returns holidays with type, gazette status & more data.data.forEach(h => console.log(h.date, h.name)); });
RESTful, JSON-only, versioned API with consistent response envelopes.
Accurate Indian holiday data from 2000 to 2026, including national, bank, and regional holidays.
SHA-256 hashed keys, IP whitelisting, per-minute rate limits, and daily quota enforcement.
Multi-step registration with 6-digit OTP, max-attempt locking, and automatic expiry.
Razorpay & Stripe-ready. Plans auto-upgrade API limits after payment confirmation.
Track requests per key, per day, per month. Know exactly where you stand against your quota.
Sub-50ms responses from MySQL indexes optimized for date-range and country-year queries.
Start free. Pay only when you need more. No credit card required on Free tier.
From zero to first API response in under 5 minutes.
All calendar API endpoints require an API key. Pass it via the X-API-Key header (recommended) or ?api_key= query parameter.
X-API-Key: tzc_live_your_api_key_here
Dashboard endpoints (key management, usage stats) additionally require a Bearer session token in the Authorization header, obtained from the login endpoint.
Three-step process: Register → Verify OTP → Receive API Key
POST /api/auth/register Content-Type: application/json { "full_name": "Rahul Sharma", "email": "rahul@example.com", "password": "SecurePass123", "company_name": "My Startup Pvt Ltd", "phone": "+91 98765 43210" }
POST /api/auth/verify-otp Content-Type: application/json { "email": "rahul@example.com", "otp": "483920", "purpose": "register" }
{
"status": "success",
"data": {
"api_key": "tzc_live_a1b2c3d4...", // SHOWN ONCE
"key_prefix": "tzc_live_a1b2",
"session_token": "eyJ0eXAiOiJKV1Qi...",
"user": {
"id": 42, "full_name": "Rahul Sharma"
}
}
}
Returns Indian holidays filtered by year, month, day, or holiday type.
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | optional | ISO alpha-2 code. Default: IN |
| year | integer | required | e.g. 2026. Range: 2000–2030 |
| month | integer | optional | 1–12. Omit for full year. |
| day | integer | optional | 1–31 |
| date | string | optional | YYYY-MM-DD exact date |
| type | string | optional | national / bank / optional / religious / regional |
| format | string | optional | json (default) or minimal |
| page | integer | optional | Pagination page (default 1) |
| per_page | integer | optional | 1–200 (default 50) |
Returns a full calendar month grid — every day with weekday, is_holiday, is_working flags, and embedded holiday details.
| Parameter | Type | Required | Description |
|---|---|---|---|
| country | string | optional | Default: IN |
| year | integer | required | 2000–2030 |
| month | integer | required | 1–12 |
// Vanilla fetch — get June 2026 national holidays const API_KEY = 'tzc_live_your_key_here'; const BASE = 'https://api.tezzcorp.in'; async function getHolidays(year, month) { const url = `${BASE}/api/v1/holidays?country=IN&year=${year}&month=${month}`; const res = await fetch(url, { headers: { 'X-API-Key': API_KEY } }); if (!res.ok) throw new Error('API error ' + res.status); return (await res.json()).data; } // jQuery AJAX example $.ajax({ url: BASE + '/api/v1/calendar', data: { country: 'IN', year: 2026, month: 6 }, headers: { 'X-API-Key': API_KEY }, success: function(r) { console.log(r.data.days); } });
<?php $apiKey = 'tzc_live_your_key_here'; $url = 'https://api.tezzcorp.in/api/v1/holidays?country=IN&year=2026&month=6'; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey], CURLOPT_TIMEOUT => 10, ]); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); foreach ($data['data'] as $holiday) { echo $holiday['date'] . ': ' . $holiday['name'] . PHP_EOL; }
import requests API_KEY = 'tzc_live_your_key_here' BASE = 'https://api.tezzcorp.in' headers = {'X-API-Key': API_KEY} params = {'country': 'IN', 'year': 2026, 'month': 6} resp = requests.get(f'{BASE}/api/v1/holidays', headers=headers, params=params) data = resp.json() for h in data['data']: print(f"{h['date']} — {h['name']} ({h['holiday_type']})")
# List June 2026 holidays curl -X GET "https://api.tezzcorp.in/api/v1/holidays?country=IN&year=2026&month=6" \ -H "X-API-Key: tzc_live_your_key_here" # Get full calendar grid curl -X GET "https://api.tezzcorp.in/api/v1/calendar?country=IN&year=2026&month=6" \ -H "X-API-Key: tzc_live_your_key_here" # Register a new account curl -X POST "https://api.tezzcorp.in/api/auth/register" \ -H "Content-Type: application/json" \ -d '{"full_name":"Rahul","email":"r@example.com","password":"Pass@123"}'
| HTTP Code | error_code | Meaning |
|---|---|---|
| 401 | MISSING_API_KEY | No API key provided |
| 401 | INVALID_API_KEY | Key not found or revoked |
| 401 | KEY_EXPIRED | Key has expired |
| 403 | EMAIL_NOT_VERIFIED | Account email not confirmed |
| 403 | PLAN_RESTRICTION | Endpoint/country not in your plan |
| 422 | VALIDATION_ERROR | Invalid request parameters |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests per minute |
| 429 | QUOTA_EXCEEDED | Daily/monthly quota exhausted |
| 400 | OTP_EXPIRED | OTP past its 10-minute window |
| 400 | OTP_WRONG | Incorrect OTP code |
| 429 | OTP_MAX_ATTEMPTS | 5 wrong OTP attempts — request new OTP |
| Plan | Per Minute | Per Day | Per Month |
|---|---|---|---|
| Free | 5 | 100 | 1,000 |
| Starter | 20 | 1,000 | 30,000 |
| Pro | 60 | 10,000 | 300,000 |
| Enterprise | 500 | 100,000 | Unlimited |
When you exceed a limit, the API returns HTTP 429 with a Retry-After header. Daily quotas reset at 00:00 UTC.
Get a free API key in 2 minutes
Access your dashboard and API keys
Don't have an account? Sign up free