Board URL
Encode a hosted Board in the page address. Configuration lives in the fragment.
Purpose
A hosted Board is a full-screen display at /board/view. The fragment lists the stop, services, and optional TfL key. The query string is not read for configuration.
Complete example
/board/view#stop=940GZZLUOXC&stopName=Oxford+Circus&behaviour=unattended&a.rows=3&a.lines=victoria,central,bakerlooQuery vs fragment
Every setting is a hash parameter. The key is never placed in the query, so it is not sent to this origin when the page loads.
Parameters
| Param | Type | Default | Required | Notes |
|---|---|---|---|---|
| stop | string | omitted | Optional | Station. Search by name or paste a Stop ID. |
| stopName | string | omitted | Optional | Stop name override. Changes the heading, not the data source. |
| behaviour | enum | interactive | Optional | Behaviour. Interactive is for touchscreens like iPad. Unattended is for monitors without touch. |
| a.rows | integer or comma-separated integers | 3 | Optional | Rows per line. One number for every line, or a comma list in line order. 0 shows every row. Repeated values are comma lists. |
| a.lines | comma-separated list | omitted | Optional | Lines Repeated values are comma lists. |
| p1 | comma-separated list | rail | Optional | Wide slot Repeated values are comma lists. |
| p2 | comma-separated list | status | Optional | Narrow slot. Leave empty for a one-panel board. Repeated values are comma lists. |
| b.stop | string | omitted | Optional | Bus stop |
| b.routes | comma-separated list | omitted | Optional | Bus routes Repeated values are comma lists. |
| b.rows | integer | 3 | Optional | Bus rows. 0 expands. Default is 3. |
| r.stop | string | omitted | Optional | Pier. Poll the pier, not a berth. |
| r.rows | integer | 3 | Optional | River rows. 0 expands. Default is 3. |
| c.docks | comma-separated list | omitted | Optional | Cycle docks Repeated values are comma lists. |
| c.surface | enum | map | Optional | Cycle view. Map shows every dock at once. List pages them as tiles. |
| c.tiles | integer | 6 | Optional | Cycle tiles. Height in board tiles. Default is 6. |
| a.pinFirst | boolean | true | Optional | Pin first arrival. Keep the next service visible while later rows rotate. |
| s.surface | enum | display | Optional | Status surface |
| s.tiles | integer | 0 | Optional | Status max height. 0 expands (the default). 1 is summary only. |
| s.lines | comma-separated list | omitted | Optional | Status lines Repeated values are comma lists. |
| s.overview | enum | network | Optional | Status overview |
| s.dwell | integer | omitted | Optional | Status dwell (seconds). Override the 10-second interval. |
| key | string | omitted | Optional | TfL API key. Stays in the fragment so it is not sent to this origin. Treat the full link as a secret. |
Ignored legacy params: mode, fit. Unknown params are kept when the hash is normalised.
Stop and services
stop is one rail StopPoint. Bus, river, and cycle ids use b.stop, r.stop, and c.docks. p1 and p2 choose panels. a.lines and s.lines are comma-separated line ids; order is first-wins and unknown ids are dropped.
Screen and layout
There is no screen or orientation parameter. The board follows the viewport. Portrait and small screens use the same fragment as a landscape board.
Invalid values and compatibility
Invalid values fall back to defaults. The parser does not throw. There is no version parameter. Legacy mode maps to interactive behaviour. Unknown params stay in the fragment so newer boards can keep working on older pages.
Sharing and TfL keys
Copy the full address from the Board builder, or build one from these parameters. If the fragment includes key, anyone who opens the link can use that key and its request quota. Treat the complete link as a secret. Get a key from the TfL API portal.
Copyable examples
Arrivals and status
/board/view#stop=940GZZLUOXCArrivals only
/board/view#stop=940GZZLUOXC&p1=railStatus only
/board/view#stop=940GZZLUOXC&p1=statusNetwork status, no stop
/board/view#p1=statusPortrait or small screen
/board/view#stop=940GZZLUOXCSet one up in the Board builder, or start from React component documentation.