All integrations

BART

DATA · DATA & ANALYTICS

Service advisories, real-time departures, routes, and trip plans across BART.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

bart_get_api_bsa_aspx_cmd_bsaREAD

List service advisories via GET api.bart.gov/api/bsa.aspx?cmd=bsa. Every service advisory BART is currently publishing -- delays, station closures, police activity, weather -- each with its posted time, the affected station (the literal `BART` means system-wide) and a free-text description. `orig` narrows the list to one station; omitting it returns all of them. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_bsa_aspx_cmd_countREAD

Count trains in service via GET api.bart.gov/api/bsa.aspx?cmd=count. The number of trains BART currently has in service system-wide, as the single field `traincount`. The cheapest liveness signal this API has: no arguments, a ~200-byte body. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_bsa_aspx_cmd_elevREAD

List elevator outages via GET api.bart.gov/api/bsa.aspx?cmd=elev. Current elevator outage advisories -- the accessibility-specific slice of the advisory feed, in the same shape as the advisory list. This is the tool to answer 'is the elevator at my station working', which the general advisory list does not reliably carry. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_etd_aspx_cmd_etdREAD

Get real-time departures via GET api.bart.gov/api/etd.aspx?cmd=etd. Real-time estimated departures from one station: every upcoming train by destination, with minutes-to-arrival, platform, direction, train length and line colour. `orig` is REQUIRED -- measured 2026-09-22, omitting it answers 400 'Invalid orig' although BART's doc page marks it optional -- and the literal `ALL` is a valid value that returns every station in one response. `plat` and `dir` narrow to one platform or direction. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_route_aspx_cmd_routeinfoREAD

Get route detail via GET api.bart.gov/api/route.aspx?cmd=routeinfo. The configuration of one route, including its ordered list of stations -- the tool that answers 'which stations does this line serve, in what order'. `route` is REQUIRED; BART's own error names the valid values: 1-10, 11-14 and 19-20, or `all` for every route at once. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_route_aspx_cmd_routesREAD

List routes via GET api.bart.gov/api/route.aspx?cmd=routes. Every BART route currently in the schedule, with its name, abbreviation, line colour, route id and number. `date` asks for the routes of the schedule in force on another day. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_sched_aspx_cmd_arriveREAD

Plan a trip by arrival time via GET api.bart.gov/api/sched.aspx?cmd=arrive. Trip plans ARRIVING at a destination around a given time, with every leg, its transfers and the fare table. `orig` and `dest` are both REQUIRED (measured 2026-09-22: omitting either answers 400, although BART's doc page marks both optional). `b` and `a` ask for trips before and after the time. NOTE: BART documents the `fare` and `clipper` attributes of each trip as DEPRECATED in favour of the `fares` element, which this response also carries. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_sched_aspx_cmd_departREAD

Plan a trip by departure time via GET api.bart.gov/api/sched.aspx?cmd=depart. Trip plans DEPARTING an origin around a given time -- the same shape as the arrival planner, anchored on when the rider leaves rather than when they must be there. `orig` and `dest` are both REQUIRED (measured 2026-09-22: omitting either answers 400, although BART's doc page marks both optional). NOTE: the `fare` and `clipper` attributes of each trip are DEPRECATED by BART in favour of the `fares` element. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_sched_aspx_cmd_fareREAD

Get a fare via GET api.bart.gov/api/sched.aspx?cmd=fare. The fare for a trip between two stations, with the full fare table -- Clipper, Clipper START, senior, youth and disabled rates -- and the Clipper discount. `orig` and `dest` are both REQUIRED (measured 2026-09-22: omitting either answers 400, although BART's doc page marks both optional). RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_sched_aspx_cmd_routeschedREAD

Get a route schedule via GET api.bart.gov/api/sched.aspx?cmd=routesched. The full timetable for one route: every train, and every station it calls at with its time. `route` is REQUIRED. THIS RESPONSE IS LARGE -- measured 2026-09-22, route 1 returns ~190 KB -- so prefer the station schedule or the real-time departures unless a whole line's timetable is genuinely wanted. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_sched_aspx_cmd_stnschedREAD

Get a station schedule via GET api.bart.gov/api/sched.aspx?cmd=stnsched. The full timetable for one station on one day: every train calling there, with its origin, destination and times. `orig` is REQUIRED. The station-sized alternative to the route schedule, and about a tenth its size. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_stn_aspx_cmd_stnaccessREAD

Get station access detail via GET api.bart.gov/api/stn.aspx?cmd=stnaccess. Access, parking, bicycle, locker and neighbourhood information for one station -- how a rider reaches it and what is there when they arrive. `orig` is optional, and omitting it answers 200 with an empty `stations` value rather than every station (measured 2026-09-22). RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_stn_aspx_cmd_stninfoREAD

Get station detail via GET api.bart.gov/api/stn.aspx?cmd=stninfo. Detailed information for one station: address, platform layout, the destinations served from each platform, and BART's intro text. `orig` is optional, and omitting it does NOT return every station -- measured 2026-09-22, BART answers 200 with an empty `stations` value. Pass the four-character abbreviation from the station list. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_stn_aspx_cmd_stnsREAD

List stations via GET api.bart.gov/api/stn.aspx?cmd=stns. Every BART station with its name, four-character abbreviation, latitude, longitude and street address. This is the lookup table every other tool's `orig` and `dest` argument is drawn from -- call it first when a rider names a station in words. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api
bart_get_api_version_aspx_cmd_versionREAD

Get API version via GET api.bart.gov/api/version.aspx?cmd=version. The BART legacy API's own version number, copyright line and the URL of the developer licence agreement. MEASURED 2026-09-22: this is the ONE command in this integration that answers 200 with a bogus key and with no key at all, which is why the paste-time credential check points elsewhere -- a check pointed here would accept every key ever pasted. It is also the one command where a REFUSED key does not arrive as a 400: BART honours `json=y` only when it accepts the key, so an unaccepted key gets XML under a 200 instead of JSON. Agentic Fabriq detects that and reports it as the same credential failure the other commands give. RESPONSE SHAPE: BART's `json=y` is its XML transliterated, not idiomatic JSON -- the body is `{"?xml": {...}, "root": {...}}`, free text arrives wrapped as `{"#cdata-section": "..."}`, attributes are prefixed `@`, and a list with one member collapses to a bare object rather than a one-element array.

api

Put BART behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.