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.
Send your key in the X-RailCore-Key header. This operation requires the live:read scope. See the authentication guide.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
station_code | path | string | Required | Indian Railways station code, 1 to 6 uppercase letters or digits. |
window_hours | query | integer | Optional | Rolling board window in hours. |
Base URL https://ir.railcore.tech/v1. Keep the key in an environment variable and call from a trusted server-side environment.
curl -sS -X GET \
-H "X-RailCore-Key: $RAILCORE_KEY" \
"https://ir.railcore.tech/v1/stations/BSL/live?window_hours=4"
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);
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())
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.
| Field | Type | Description |
|---|---|---|
station_code | string | Board station. |
window_hours | integer | Applied window. |
trains[].train_number / train_name | string | Train identity. |
trains[].source_station_code / destination_station_code | string | null | Train endpoints when known. |
trains[].source_station_name / destination_station_name | string | null | Resolved endpoint names when known. |
trains[].train_type | string | Canonical train category. |
trains[].scheduled_arrival / scheduled_departure | string | null | Scheduled ISO times. |
trains[].estimated_arrival / estimated_departure | string | null | Latest estimated ISO times. |
trains[].platform_number | string | null | Reported platform when available. |
trains[].arrival_delay_minutes / departure_delay_minutes | integer | null | Observed delays when available. |
trains[].scheduled_halt_minutes / actual_halt_minutes | integer | null | Booked and observed halt duration. |
trains[].start_date | string | null | Origin departure date identifying this train run. |
trains[].status | string | NOT_STARTED, ON_ROUTE, AT_STATION, ARRIVED, DEPARTED, SEVERELY_DELAYED, CANCELLED, DIVERTED, or UNKNOWN. |
trains[].confidence / last_reported_at | string | null | Freshness confidence and source report time. |
trains[].current_station_code / departed_current_station | string | boolean | null | Observed position and whether the train has left that position; both remain null when unobserved. |
trains[].stop_type | string | ORIGIN, INTERMEDIATE, or DESTINATION at the requested station. |
trains[].cancellation | object | null | Whole-run or partial cancellation details when reported. |
{
"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"
}
]
}
}
}
| Status | Code | Description | Retry |
|---|---|---|---|
| 400 | VALIDATION_ERROR | A required field is missing or invalid. | Not retryable |
| 401 | MISSING_API_KEY / INVALID_API_KEY | The credential is absent, unknown, disabled, or expired. | Not retryable |
| 403 | SCOPE_MISSING / PLAN_ENDPOINT_DISABLED | The key lacks the required scope or plan entitlement. | Not retryable |
| 402 | CREDITS_EXHAUSTED | The account balance cannot cover this operation. | Not retryable |
| 429 | RATE_LIMITED | Minute or daily request budget is exhausted. Honor Retry-After. | Retryable |
| 410 | API_VERSION_SUNSET | This API version has reached its announced sunset date. Migrate to a supported major version. | Not retryable |
| 502 | UPSTREAM_UNAVAILABLE | Live data could not be retrieved. Retry with backoff. | Retryable |
| 504 | UPSTREAM_TIMEOUT | The live-data request exceeded its deadline. Retry with backoff. | Retryable |
| 503 | METERING_UNAVAILABLE | Credit settlement is temporarily unavailable and no data was returned. | Retryable |
All RailCore Indian Railways API endpoints · Quickstart · Rate limits