Live & Production Ready

Indian Calendar Data
for Every Developer

Holidays, working days, and full calendar data for India from 2000 to 2026 — with a single API call.

Read the Docs ↓
27
Years of Data
200+
Holidays Indexed
<50ms
Avg Response
99.9%
Uptime SLA
GET /v1/holidays
// 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));
});
API Reference

All Endpoints

RESTful, JSON-only, versioned API with consistent response envelopes.

POST /api/auth/register Create account & send OTP
POST /api/auth/verify-otp Verify email OTP → activate account + get API key
POST /api/auth/login Login with email + password → session JWT
POST /api/auth/resend-otp Resend OTP (60-second cooldown)
POST /api/auth/reset-password Request password reset OTP
GET /api/v1/holidays List holidays filtered by year, month, type
GET /api/v1/calendar Full calendar grid for a month with working-day flags
GET /api/dashboard/keys List your API keys with today's usage
POST /api/dashboard/keys Create a new API key
DEL /api/dashboard/keys Revoke an API key
GET /api/dashboard/usage Daily & monthly usage analytics
Why TezzCorp

Built for Production

📅

27 Years of Data

Accurate Indian holiday data from 2000 to 2026, including national, bank, and regional holidays.

🔑

Secure API Keys

SHA-256 hashed keys, IP whitelisting, per-minute rate limits, and daily quota enforcement.

📧

Email OTP Verification

Multi-step registration with 6-digit OTP, max-attempt locking, and automatic expiry.

💳

Payment-Based Quotas

Razorpay & Stripe-ready. Plans auto-upgrade API limits after payment confirmation.

📊

Usage Analytics

Track requests per key, per day, per month. Know exactly where you stand against your quota.

Blazing Fast

Sub-50ms responses from MySQL indexes optimized for date-range and country-year queries.

Pricing

Simple, Transparent Plans

Start free. Pay only when you need more. No credit card required on Free tier.

Free
0
Forever free
  • 100 requests / day
  • 1,000 requests / month
  • India (IN) only
  • Current year data
  • Community support
Pro
1,999
per month
  • 10,000 requests / day
  • 300,000 requests / month
  • IN, US, GB, CA, AU
  • All endpoints
  • Priority email support
Enterprise
Custom
contact us
  • Unlimited requests
  • All countries
  • SLA 99.9%
  • Dedicated support
  • Custom integrations
Contact Sales
Integration Guide

Quick Start

From zero to first API response in under 5 minutes.

🔑 Authentication

All calendar API endpoints require an API key. Pass it via the X-API-Key header (recommended) or ?api_key= query parameter.

Request Header
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.

📝 Registration Flow

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"
    }
  }
}
📅 GET /api/v1/holidays

Returns Indian holidays filtered by year, month, day, or holiday type.

ParameterTypeRequiredDescription
countrystringoptionalISO alpha-2 code. Default: IN
yearintegerrequirede.g. 2026. Range: 2000–2030
monthintegeroptional1–12. Omit for full year.
dayintegeroptional1–31
datestringoptionalYYYY-MM-DD exact date
typestringoptionalnational / bank / optional / religious / regional
formatstringoptionaljson (default) or minimal
pageintegeroptionalPagination page (default 1)
per_pageintegeroptional1–200 (default 50)
🗓️ GET /api/v1/calendar

Returns a full calendar month grid — every day with weekday, is_holiday, is_working flags, and embedded holiday details.

ParameterTypeRequiredDescription
countrystringoptionalDefault: IN
yearintegerrequired2000–2030
monthintegerrequired1–12
⚡ JavaScript / AJAX
// 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
<?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;
}
🐍 Python
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']})")
💻 cURL
# 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"}'
⚠️ Error Codes
HTTP Codeerror_codeMeaning
401MISSING_API_KEYNo API key provided
401INVALID_API_KEYKey not found or revoked
401KEY_EXPIREDKey has expired
403EMAIL_NOT_VERIFIEDAccount email not confirmed
403PLAN_RESTRICTIONEndpoint/country not in your plan
422VALIDATION_ERRORInvalid request parameters
429RATE_LIMIT_EXCEEDEDToo many requests per minute
429QUOTA_EXCEEDEDDaily/monthly quota exhausted
400OTP_EXPIREDOTP past its 10-minute window
400OTP_WRONGIncorrect OTP code
429OTP_MAX_ATTEMPTS5 wrong OTP attempts — request new OTP
📊 Rate Limits
PlanPer MinutePer DayPer Month
Free51001,000
Starter201,00030,000
Pro6010,000300,000
Enterprise500100,000Unlimited

When you exceed a limit, the API returns HTTP 429 with a Retry-After header. Daily quotas reset at 00:00 UTC.