Hi Jason,
Apologies if we weren't clear on this point: the V3 API incorporates all of our static data, which includes trips and their headsigns. It also dynamically generates trips for ADDED predictions, and presents these trips identically to the static trips, so you don't have to worry about the distinction. In general, and unlike in GTFS, "real-time" data is not segregated from "static" data in the API.
Here is a request which gets predictions for Commuter Rail departures at South Station, and the trips associated with those predictions, which includes their headsigns (limited to 1 record for the example's sake). If the prediction was ADDED, there would still be a trip and it would still have a headsign, although you would not find this trip in GTFS.
And the response (some data omitted):
{
"data": [
{
"id": "prediction-CR-502663-709-NEC-2287-0",
"type": "prediction",
"attributes": {...},
"relationships": {
"trip": {
"data": {
"id": "CR-502663-709",
"type": "trip"
}
},
...
}
}
],
"included": [
{
"id": "CR-502663-709",
"type": "trip",
"attributes": {
"bikes_allowed": 1,
"block_id": "",
"direction_id": 0,
"headsign": "Walpole",
"name": "709",
"wheelchair_accessible": 1
},
...
}
],
...