Segment-aware live status

Get uncached live status with full-route position context.

GET /v1/trains/{train_number}/live-status

Scope live:read · Credits 5 · Plans All plans

Keeps a running train active when only part of its route is cancelled, while exposing the affected station range separately.

Authentication

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

Request parameters

NameInTypeRequiredDescription
train_numberpathstringRequiredTrain number, 4 to 6 uppercase letters or digits.
datequerystring(date)RequiredJourney date in YYYY-MM-DD format.
fromquerystringRequiredBoarding station code.
toquerystringRequiredDestination station code.

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/trains/12656/live-status?date=2026-10-10&from=BSL&to=ADI"

JavaScript

const response = await fetch("https://ir.railcore.tech/v1/trains/12656/live-status?date=2026-10-10&from=BSL&to=ADI", {
  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/trains/12656/live-status?date=2026-10-10&from=BSL&to=ADI",
    headers={"X-RailCore-Key": os.environ["RAILCORE_KEY"]},
    timeout=20,
)
print(response.status_code, response.json())

Rate limits and credits

This call costs 5 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
status / status_textstringAggregate operating state and display text. CANCELLED is reserved for a whole-run cancellation.
cancellationobject | nullWhether the whole run or only the from_station_code to to_station_code segment is cancelled.
current_station_code / previous_station_code / next_station_codestring | nullCurrent route and next-halt context.
approaching_station_code / approaching_station_namestring | nullFirst route point ahead, including pass-through stations.
delay_minutesinteger | nullCurrent delay.
travel_classesstring[] | nullSchedule-backed classes when available.
started_at / scheduled_duration_minutesstring | integer | nullActual start instant and scheduled end-to-end duration.
distance_from_current_station_km / distance_to_approaching_station_kmnumber | nullSection progress when the provider exposes trustworthy position precision.
freshnessobjectRailCore retrieval time, train observation time, age, and cache state.

Example response

{
  "success": true,
  "data": {
    "train_number": "19006",
    "train_name": "Surat BSL SURAT EXP",
    "journey_date": "2026-10-10",
    "status": "RUNNING",
    "status_text": "Running 24 minutes late",
    "cancellation": {
      "fully_cancelled": false,
      "from_station_code": "UDN",
      "to_station_code": "ST"
    },
    "current_station_code": "DDE",
    "previous_station_code": "VKH",
    "next_station_code": "RNL",
    "approaching_station_code": "RNL",
    "delay_minutes": 24,
    "train_type": "MEX",
    "train_type_label": "express",
    "travel_classes": [
      "GN",
      "3A",
      "SL"
    ],
    "distance_from_current_station_km": 4.885,
    "distance_to_approaching_station_km": 7.115,
    "confidence": "high",
    "last_reported_at": "2026-10-03T11:46:23.351Z"
  },
  "meta": {
    "api_version": "v1",
    "request_id": "req_01J5Z7Y8N2K4M6P8R0T2V4X6Z8",
    "trace_id": "trc_01J5Z7Y8N2K4M6P8R0T2V4X6Z9",
    "timestamp": "2026-10-03T11:46:23.351Z",
    "freshness": {
      "mode": "live",
      "retrieved_at": "2026-10-03T11:46:23.351Z",
      "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 Trains endpoints

All RailCore Indian Railways API endpoints · Quickstart · Rate limits