Note: I'm not sure if this is the right place to report this, if not I apologise and would appreciate it if you could let me know where to report.
Endpoint
POST https://api.digitransit.fi/routing/v2/hsl/gtfs/v1
Summary
The vehicleRentalStations GraphQL query intermittently returns an empty array ({"data":{"vehicleRentalStations":[]}}) on roughly 40–50% of requests, while other requests to the same endpoint return the full list of 455 stations. Both response types are HTTP 200 with identical headers — there is no error, no rate-limit signal, and no GraphQL errors field.
Reproduction
Run 20 sequential identical requests:
API_KEY="<your-key>"
URL="https://api.digitransit.fi/routing/v2/hsl/gtfs/v1?digitransit-subscription-key=$API_KEY"
for i in $(seq 1 20); do
curl -s -X POST "$URL" -H "Content-Type: application/graphql" \
-d '{ vehicleRentalStations { stationId } }' \
| python3 -c "import json,sys; print(len(json.load(sys.stdin)['data']['vehicleRentalStations']))"
done
Observed result (20 sequential requests, ~5 seconds)
455, 455, 455, 455, 0, 455, 0, 0, 455, 0,
455, 455, 0, 0, 0, 0, 0, 0, 0, 455
9/20 returned 0 stations, 11/20 returned 455. Failures cluster but are not deterministic — re-running the script produces a different distribution.
Expected result
All 20 requests should return 455 stations.
Failing response (full)
HTTP/2 200
date: Tue, 07 Apr 2026 04:59:16 GMT
content-type: application/json
content-length: 37
vary: Accept,Accept-Encoding,Accept-Language
access-control-allow-credentials: false
{"data":{"vehicleRentalStations":[]}}
Successful response (headers)
HTTP/2 200
date: Tue, 07 Apr 2026 04:59:16 GMT
content-type: application/json
vary: Accept,Accept-Encoding,Accept-Language
access-control-allow-credentials: false
(body: 455 stations, ~57 KB)
The failing and succeeding responses are issued at the same second with identical headers (modulo content-length). There is no GraphQL errors array in the failing response — it is a structurally valid empty result.
Same issue with single-station query
The single-station query vehicleRentalStation(id: "smoove:900") exhibits the same intermittent failure: it returns null for the same station ID that returned valid data on the previous request, with no error message.
20 sequential requests for smoove:900:
null, 5 bikes / 15 spaces, null, 5 bikes / 15 spaces, 5 bikes / 15 spaces,
5 bikes / 15 spaces, null, null, null, null,
null, null, 5 bikes / 15 spaces, 5 bikes / 15 spaces, null,
null, null, 5 bikes / 15 spaces, 5 bikes / 15 spaces, 5 bikes / 15 spaces
11/20 returned null, 9/20 returned data.
Failing response:
HTTP/2 200
date: Tue, 07 Apr 2026 05:02:00 GMT
content-type: application/json
content-length: 38
vary: Accept,Accept-Encoding,Accept-Language
access-control-allow-credentials: false
{"data":{"vehicleRentalStation":null}}
The station unambiguously exists (other requests in the same second return its data). This rules out a "station not found" interpretation of the null response.
Other queries on the same endpoint are not affected
The stops query was tested 3 times in a row and returned 8334 stops every time. The issue appears to be specific to vehicle rental queries.
stops request 1: 8334 results
stops request 2: 8334 results
stops request 3: 8334 results
Environment
- Date observed: 2026-04-07
- API endpoint:
https://api.digitransit.fi/routing/v2/hsl/gtfs/v1
- Subscription key tier: standard developer key
- Tested from: macOS,
curl/8.7.1 over IPv4
- Issue is reproducible from any machine — it is server-side.
Note: I'm not sure if this is the right place to report this, if not I apologise and would appreciate it if you could let me know where to report.
Endpoint
POST https://api.digitransit.fi/routing/v2/hsl/gtfs/v1Summary
The
vehicleRentalStationsGraphQL query intermittently returns an empty array ({"data":{"vehicleRentalStations":[]}}) on roughly 40–50% of requests, while other requests to the same endpoint return the full list of 455 stations. Both response types are HTTP 200 with identical headers — there is no error, no rate-limit signal, and no GraphQLerrorsfield.Reproduction
Run 20 sequential identical requests:
Observed result (20 sequential requests, ~5 seconds)
9/20 returned 0 stations, 11/20 returned 455. Failures cluster but are not deterministic — re-running the script produces a different distribution.
Expected result
All 20 requests should return 455 stations.
Failing response (full)
Successful response (headers)
The failing and succeeding responses are issued at the same second with identical headers (modulo
content-length). There is no GraphQLerrorsarray in the failing response — it is a structurally valid empty result.Same issue with single-station query
The single-station query
vehicleRentalStation(id: "smoove:900")exhibits the same intermittent failure: it returnsnullfor the same station ID that returned valid data on the previous request, with no error message.20 sequential requests for
smoove:900:11/20 returned
null, 9/20 returned data.Failing response:
The station unambiguously exists (other requests in the same second return its data). This rules out a "station not found" interpretation of the
nullresponse.Other queries on the same endpoint are not affected
The
stopsquery was tested 3 times in a row and returned 8334 stops every time. The issue appears to be specific to vehicle rental queries.Environment
https://api.digitransit.fi/routing/v2/hsl/gtfs/v1curl/8.7.1over IPv4