Live station board

Arrivals and departures in a rolling live window.

GET /v1/stations/{station_code}/live

Scope live:read · Credits 4 · Plans All plans

Returns one canonical station board for trains arriving at, departing from, starting at, or terminating at the station, with schedule, estimate, platform, delay, state, confidence, and report time.

Authentication

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

Request parameters

NameInTypeRequiredDescription
station_codepathstringRequiredIndian Railways station code, 1 to 6 uppercase letters or digits.
window_hoursqueryintegerOptionalRolling board window in hours.

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/stations/BSL/live?window_hours=4"

JavaScript

const response = await fetch("https://ir.railcore.tech/v1/stations/BSL/live?window_hours=4", {
  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/stations/BSL/live?window_hours=4",
    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
station_codestringBoard station.
window_hoursintegerApplied window.
trains[].train_number / train_namestringTrain identity.
trains[].source_station_code / destination_station_codestring | nullTrain endpoints when known.
trains[].source_station_name / destination_station_namestring | nullResolved endpoint names when known.
trains[].train_typestringCanonical train category.
trains[].scheduled_arrival / scheduled_departurestring | nullScheduled ISO times.
trains[].estimated_arrival / estimated_departurestring | nullLatest estimated ISO times.
trains[].platform_numberstring | nullReported platform when available.
trains[].arrival_delay_minutes / departure_delay_minutesinteger | nullObserved delays when available.
trains[].scheduled_halt_minutes / actual_halt_minutesinteger | nullBooked and observed halt duration.
trains[].start_datestring | nullOrigin departure date identifying this train run.
trains[].statusstringNOT_STARTED, ON_ROUTE, AT_STATION, ARRIVED, DEPARTED, SEVERELY_DELAYED, CANCELLED, DIVERTED, or UNKNOWN.
trains[].confidence / last_reported_atstring | nullFreshness confidence and source report time.
trains[].current_station_code / departed_current_stationstring | boolean | nullObserved position and whether the train has left that position; both remain null when unobserved.
trains[].stop_typestringORIGIN, INTERMEDIATE, or DESTINATION at the requested station.
trains[].cancellationobject | nullWhole-run or partial cancellation details when reported.

Example response

{
  "success": true,
  "data": {
    "station_code": "AN",
    "window_hours": 8,
    "trains": [
      {
        "train_number": "19106",
        "train_name": "Bhusaval - Udhna MEMU (UnReserved)",
        "source_station_code": "BSL",
        "destination_station_code": "UDN",
        "source_station_name": "BHUSAVAL JN",
        "destination_station_name": "UDHNA JN",
        "train_type": "MEMU",
        "scheduled_arrival": "2026-10-10T00:24:00+05:30",
        "scheduled_departure": "2026-10-10T00:26:00+05:30",
        "estimated_arrival": null,
        "estimated_departure": null,
        "platform_number": "1",
        "arrival_delay_minutes": null,
        "departure_delay_minutes": null,
        "scheduled_halt_minutes": 2,
        "actual_halt_minutes": null,
        "start_date": "2026-10-09",
        "status": "NOT_STARTED",
        "current_station_code": null,
        "departed_current_station": null,
        "stop_type": "INTERMEDIATE",
        "cancellation": null,
        "confidence": "medium",
        "last_reported_at": null
      }
    ]
  },
  "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 Stations endpoints

All RailCore Indian Railways API endpoints · Quickstart · Rate limits