Availability calendar

Inspect availability across upcoming dates.

GET /v1/availability/calendar

Scope availability:read · Credits 4 · Plans All plans

Returns class-level availability, fares, probability, and alternate status for up to 30 days.

Authentication

Send your key in the X-RailCore-Key header. This operation requires the availability:read scope. See the authentication guide.

Request parameters

NameInTypeRequiredDescription
train_numberquerystringRequiredTrain number, 4 to 6 uppercase letters or digits.
fromquerystringRequiredBoarding station code.
toquerystringRequiredDestination station code.
classquerystringRequiredTravel class code.
quotaquerystringOptionalReservation quota.
daysqueryintegerOptionalNumber of calendar days.

Code examples

Base URL https://ir.railcore.tech/v1. Keep the key in an environment variable and call from a trusted server-side environment.

cURL

curl -sS -X GET \
  -H "X-RailCore-Key: $RAILCORE_KEY" \
  "https://ir.railcore.tech/v1/availability/calendar?train_number=12656&from=BSL&to=ADI&class=3A&quota=GN&days=7"

JavaScript

const response = await fetch("https://ir.railcore.tech/v1/availability/calendar?train_number=12656&from=BSL&to=ADI&class=3A&quota=GN&days=7", {
  method: "GET",
  headers: {
    "X-RailCore-Key": process.env.RAILCORE_KEY,
  },
});

const body = await response.json();
console.log(response.status, body);

Python

import os
import requests

response = requests.request(
    "GET",
    "https://ir.railcore.tech/v1/availability/calendar?train_number=12656&from=BSL&to=ADI&class=3A&quota=GN&days=7",
    headers={"X-RailCore-Key": os.environ["RAILCORE_KEY"]},
    timeout=20,
)
print(response.status_code, response.json())

Rate limits and credits

This call costs 4 credits and is available on All plans. Per-minute and daily budgets, and the headers reporting remaining quota, are documented in rate limits and credits and billing.

Response fields

FieldTypeDescription
train_number / from_station_code / to_station_codestringRequested train and segment.
class_code / quotastringApplied class and quota.
days[].date / day_of_weekstringCalendar date and running day.
days[].status / availability_textstringNormalized availability.
days[].available_count / waitlist_countintegerAvailability counts.
days[].fareinteger | nullFare in INR.
days[].confirmation_probabilityobject | nullProbability percentage, label, and text.
days[].alternateobject | nullAlternate-day status, fare, and probability.
days[].last_updated_atstring | nullLive source update time.

Example response

{
  "success": true,
  "data": {
    "train_number": "12656",
    "from_station_code": "BSL",
    "to_station_code": "ADI",
    "class_code": "3A",
    "quota": "GN",
    "days": [
      {
        "date": "2026-08-27",
        "day_of_week": "THU",
        "status": "AVAILABLE",
        "availability_text": "AVAILABLE 24",
        "available_count": 24,
        "waitlist_count": 0,
        "fare": 1125,
        "confirmation_probability": {
          "percentage": 96,
          "label": "HIGH"
        },
        "alternate": null
      }
    ]
  },
  "meta": {
    "api_version": "v1",
    "request_id": "req_01J5Z7Y8N2K4M6P8R0T2V4X6Z8",
    "trace_id": "trc_01J5Z7Y8N2K4M6P8R0T2V4X6Z9",
    "timestamp": "2026-08-20T17:12:23.305Z",
    "freshness": {
      "mode": "live",
      "retrieved_at": "2026-08-20T17:12:23.305Z",
      "sources": [
        {
          "confidence": "high"
        }
      ]
    }
  }
}

Errors

StatusCodeDescriptionRetry
400VALIDATION_ERRORA required field is missing or invalid.Not retryable
401MISSING_API_KEY / INVALID_API_KEYThe credential is absent, unknown, disabled, or expired.Not retryable
403SCOPE_MISSING / PLAN_ENDPOINT_DISABLEDThe key lacks the required scope or plan entitlement.Not retryable
402CREDITS_EXHAUSTEDThe account balance cannot cover this operation.Not retryable
429RATE_LIMITEDMinute or daily request budget is exhausted. Honor Retry-After.Retryable
410API_VERSION_SUNSETThis API version has reached its announced sunset date. Migrate to a supported major version.Not retryable
502UPSTREAM_UNAVAILABLELive data could not be retrieved. Retry with backoff.Retryable
504UPSTREAM_TIMEOUTThe live-data request exceeded its deadline. Retry with backoff.Retryable
503METERING_UNAVAILABLECredit settlement is temporarily unavailable and no data was returned.Retryable

Related Availability endpoints

All RailCore Indian Railways API endpoints · Quickstart · Rate limits