Skip to content

15.09.2026-2

A new endpoint for content partners: read the devices configured to serve your content.

POST /v1alpha/inventory/devices:listByContentSource

You do not register inventory — the operators who own those screens do. What you hold is an entitlement: one or more content sources, issued at onboarding. The endpoint returns every device in the tenant configured to serve from one of them, across every project and every other organization.

Only a static allocation target counts. A source named on a non-static target is bidding for the remaining share rather than serving curated content, so it does not make the device yours.

Requires X-Verve-Namespace: organization:<ORGANIZATION_ID>. Holding no content source is not an error — you receive an empty page.

All filters combine with AND; omit them all to list everything you are entitled to.

Filter Matches
contentSources Narrows to a subset of the sources you hold. Multiple ids combine with OR.
externalId Case-insensitive substring on the device’s externalId.
name Case-insensitive substring on metadata.name.
locationId Exact match on the location’s externalId.
modifiedSince Devices modified strictly after this instant, for incremental sync.

Ids you do not hold are silently ignored — not rejected, and they cannot pull in devices you are not entitled to. Your entitlement applies whether or not you send the filter.

Sort by externalId (the default) or firstCreatedAt. Both are immutable, so paging through a result stays stable while devices are being edited. Sorting on lastUpdatedAt is deliberately not offered — it is the one field an edit moves, and paging through it is how a walk silently skips a device.

For incremental sync, pair modifiedSince with DEVICE_SORT_FIELD_FIRST_CREATED_AT rather than with the timestamp you are filtering on.

CMS integration covers the entitlement model, every filter, worked examples and the error responses. The full request and response schemas are in the API reference.