Query UTS journey and season-ticket fares.
GET /v1/fares/unreserved
Scope fares:read · Credits 3 · Plans All plans
Returns one or more unreserved fare routes for passenger counts, train category, class, and ticket duration.
Send your key in the X-RailCore-Key header. This operation requires the fares:read scope. See the authentication guide.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
from | query | string | Required | Boarding station code. |
to | query | string | Required | Destination station code. |
date | query | string(date) | Optional | Optional journey date in YYYY-MM-DD format. Defaults to tomorrow when omitted; the playground does not apply a maximum date. |
class | query | string | Optional | II for Second Class or FC for First Class. |
train_type | query | string | Optional | O Ordinary, E Mail/Express, S Superfast, or T MMTS. |
ticket_type | query | string | Optional | J Journey, M Monthly, Q Quarterly, H Half Yearly, or Y Yearly. |
adult | query | integer | Optional | Adult passenger count. |
child | query | integer | Optional | Child passenger count. |
concession | query | string | Optional | Applicable UTS concession code. |
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/fares/unreserved?from=BSL&to=ADI&date=2026-08-27&class=II&train_type=O&ticket_type=J&adult=1&child=0"
const response = await fetch("https://ir.railcore.tech/v1/fares/unreserved?from=BSL&to=ADI&date=2026-08-27&class=II&train_type=O&ticket_type=J&adult=1&child=0", {
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/fares/unreserved?from=BSL&to=ADI&date=2026-08-27&class=II&train_type=O&ticket_type=J&adult=1&child=0",
headers={"X-RailCore-Key": os.environ["RAILCORE_KEY"]},
timeout=20,
)
print(response.status_code, response.json())
This call costs 3 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 |
|---|---|---|
from / to / date | string | Resolved route and date. |
class / train_type / ticket_type | string | Applied fare categories. |
adult / child | integer | Passenger counts. |
routes[].route | string | Route including any via stations. |
routes[].fare | string | Fare as a decimal string from the UTS contract. |
{
"success": true,
"data": {
"from": "AN",
"to": "BSL",
"date": "2026-08-27",
"class": "II",
"train_type": "O",
"ticket_type": "J",
"adult": 1,
"child": 0,
"routes": [
{
"route": "AN-JL-BSL",
"fare": "20.00"
}
]
},
"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"
}
]
}
}
}
| 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