Outfront Transit API (2026.10.1)

Download OpenAPI specification:

An interface enabling transit authorities to schedule content to Outfront screens.

Authorization

All requests to Transit API v2 use a Bearer token passed in the Authorization header. We can provide you with a Bearer token that is specific to your organization.

Assets

An Asset is any piece of content uploaded for eventual display on a Screen. Assets can be images, videos, or ZIP files containing HTML.

List all Assets

query Parameters
limit
number [ 1 .. 100 ]
page
number >= 1
sort
string (AssetSortParameter)
Enum: "createdAt" "-createdAt" "id" "-id" "name" "-name" "updatedAt" "-updatedAt"
object

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": { }
}

Create a new Asset

An Asset that is not finished processing cannot be associated with a Schedule; attempting to create a Schedule that relates to an unprocessed Asset will result in an error.

You'll know that your Asset is finished process when in has a non-null contentUrl. At this point, the Asset will also include metadata about your file.

Request Body schema: multipart/form-data
required
source
required
string
Value: "vle"
name
required
string >= 2 characters
file
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Fetch an Asset

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update an Asset

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete an Asset

This is only allowed if the Asset is not used by an existing Schedule. If it is, the Schedules must be deleted first.

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

Screens

A Screen (also known as a “Player” or “Liveboard”) represents the physical hardware that will display Assets. Screens have names, tags, and other metadata that help describe their purpose, location, and orientation.

List all Screens

query Parameters
limit
number [ 1 .. 100 ]
page
number >= 1
sort
string (ScreenSortParameter)
Enum: "id" "-id" "name" "-name" "createdAt" "-createdAt" "source" "-source"
object

When specified, all key-value pairs must match a Screen's criteria for it to be included. If a value is an array, then any value in the array may match the corresponding criterion.

This parameter accepts identical input as Schedules' screensFilter attribute, which is useful for previewing the targeting of a Schedule before creating it.

The only difference is that screensFilter is JSON, while the filter parameter is a query string. The following two values produce identical targeting results for Screens' filter and Schedules' screensFilter, respectively:

filter[set_length]=2&filter[name]=Foo&filter[name]=Bar
{
  "set_length": "2",
  "name": ["Foo", "Bar"]
}

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": { }
}

Fetch a Screen

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update a Screen's Criteria

path Parameters
id
required
string
Request Body schema: application/json
required
object

Responses

Request samples

Content type
application/json
{
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

List all Screens targeted by a Schedule

A collection of all the Screens targeted by the specified Schedule. This collection is not editable directly and instead is the result set of the Schedule's screensFilter attribute.

path Parameters
id
required
string
query Parameters
limit
number [ 1 .. 100 ]
page
number >= 1
sort
string (ScreenSortParameter)
Enum: "id" "-id" "name" "-name" "createdAt" "-createdAt" "source" "-source"

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": { }
}

Schedules

A Schedule describes when an Asset should appear on one or more Screens.

List all Schedules

query Parameters
limit
number [ 1 .. 100 ]
page
number >= 1
sort
string (ScheduleSortParameter)
Enum: "deployedScreensCount" "-deployedScreensCount" "endsAt" "-endsAt" "id" "-id" "startsAt" "-startsAt" "priority" "-priority" "targetedScreensCount" "-targetedScreensCount" "weight" "-weight" "createdAt" "-createdAt" "updatedAt" "-updatedAt"

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": { }
}

Create a Schedule

Creating a Schedule will begin delivery of the specified Assets to the targeted Screens immediately, though it can take some time before the Assets are actually visible on the Screens.

Request Body schema: application/json
required
required
object

Responses

Request samples

Content type
application/json
{
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Fetch a Schedule

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update a Schedule

path Parameters
id
required
string
Request Body schema: application/json
required
required
object

Responses

Request samples

Content type
application/json
{
  • "data": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a Schedule

path Parameters
id
required
string

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

List all Schedules for a Screen

A collection of all the Schedules that target the specified Screen. This collection is not editable directly and instead is the result set of the Schedules’ respective screensFilter attributes.

path Parameters
id
required
string
query Parameters
limit
number [ 1 .. 100 ]
page
number >= 1
sort
string (ScheduleSortParameter)
Enum: "deployedScreensCount" "-deployedScreensCount" "endsAt" "-endsAt" "id" "-id" "startsAt" "-startsAt" "priority" "-priority" "targetedScreensCount" "-targetedScreensCount" "weight" "-weight" "createdAt" "-createdAt" "updatedAt" "-updatedAt"

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "meta": { }
}

Debugging

Inspect VLE data

Returns a representation of the Transit API's resulting data in VLE. This structure is loosely defined and only really meant for human inspection. It is not recommended to depend on the structure of this response remaining consistent.

query Parameters
page
number >= 1
groupId
string

Responses

Response samples

Content type
application/json
{ }

Display information about the authenticated user

Returns a read-only resource with some additional information about the user to whome the current access token belongs.

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

List all existing screen criteria

Returns a read-only resource listing all criteria that would match an existing screen. A Schedule may be created using criteria that do not exist on any screen, for preparing future screens, but in most cases this is not the desired effect. The data from this endpoint can help in pre-populating form fields, for example.

If no filter for screen source is specified, the filter defaults to only showing criteria for VLE screens.

query Parameters
object

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

List all existing values for one criterion

Returns a read-only resource listing all values for a given criterion that are present on existing Screens. A Schedule may be created using criteria that do not exist on any screen, for preparing future screens, but in most cases this is not the desired effect. The data from this endpoint can help in pre-populating form fields, for example.

If no filter for screen source is specified, the filter defaults to only showing values for criteria on VLE screens.

path Parameters
id
required
string
query Parameters
object

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Verify that the server is running

Always returns 200. Useful for determining if a deploy has completed.

Responses