Base URL, /v1, and stability
Where the base URL comes from, why almost every route carries /v1, which paths lie outside it, and what x-stability promises per operation.
6 minute readAPIUpdated: 10/25/2026
On this page
Before you start
- For
- Anyone who enters the first address into a configuration or wants to know what a client can rely on.
- Prerequisite
- the base URL of your environment, which is the origin your portal also talks to
Where the base URL comes from, why almost every route carries /v1, what the specification says about itself, and what x-stability guarantees per operation. Read the tables as a contract: Nothing stated here changes without notice.
Base URL
The API has no fixed public address. You address the origin of your environment. The specification on this site names it as its first server under the name “Die Schnittstelle Ihrer Umgebung” (the API of your environment). The operator fills in the address at startup, which is why a self-built version still shows the placeholder https://api.szenera.com in its place. As its second server, it lists http://localhost:41000 for a local development environment. The version served by your environment (GET /v1/openapi.json) names / instead: There, its own origin is the right answer, whereas here it would be this documentation site.
| What | Value |
|---|---|
| Base URL | the origin of your environment, e.g., https://api.<your-domain> |
| Path prefix | /v1 on every route |
| Transport | HTTPS. Request and response bodies as JSON |
| Example | GET $SZENERA_API/v1/me |
In all examples on these pages, the base URL is stored in the environment variable SZENERA_API:
export SZENERA_API="https://<basis-adresse-ihrer-umgebung>"
curl -sS "$SZENERA_API/v1/me" -H "Authorization: Bearer $SZENERA_API_KEY"
Where set up, sign-in has a second host: https://auth.<your-domain>. It serves the same interface for /v1/auth/…, OAuth, SCIM and the metadata, while all other routes stay at the base URL. The sign-in endpoints will in future be named by the metadata of auth.<your-domain>, and the addresses at the base URL remain reachable until further notice.
The /v1 prefix
Every route that Szenera itself decides on lives under /v1, and the path is part of the contract: GET /v1/scenes/{id}, POST /v1/auth/login, GET /v1/devices.
Four groups sit outside the prefix, and none of them is an oversight.
| Path | Why without /v1 |
|---|---|
/scim/v2/… |
The path belongs to a third-party protocol (RFC 7644), which carries its own version. A directory service validates its data against the address it talks to, and a prefix in front would break that. See Provisioning with SCIM 2.0. |
/.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource |
RFC 8414 and RFC 9728 define these addresses literally. A third-party client looks there and nowhere else. |
/oauth/register, /oauth/authorize, /oauth/token, /oauth/revoke |
the endpoints of the standard, see Delegated access with OAuth 2.1 |
GET /health/live, GET /health/ready, GET /health/version, GET /metrics |
operational routes that need no sign-in. They describe the state of an environment, not your inventory, and are therefore not part of the public specification either |
Everything that lies behind the consent, meaning the consent itself and the connected applications under GET /v1/me/connected-apps, lives under /v1 as usual. These routes are the contract of this API, not that of a third-party standard.
The specification
| Detail | Value |
|---|---|
| Format | OpenAPI 3.1.0 |
info.title |
Szenera API |
info.version |
1.0.0 |
| Operations | 443 on 346 paths |
| Areas (tags) | 19 in 7 groups, see The areas of the reference |
| Schemas with example | 741 of 741 |
Two sources:
| Source | Content | Access |
|---|---|---|
/api/openapi.json on this site |
the current release, without the operations marked internal |
no sign-in required |
GET /v1/openapi.json on your environment |
the same public version, for the build that is actually running there | no sign-in required. Cache-Control: public, max-age=300, so it can be cached for five minutes |
Both sources show the same selection: the operations of the classes stable and beta. Whatever carries internal drops out, together with the schemas that were needed only there. Today that is 337 of the 780 operations, including the entire operator surface under /v1/platform/…. A client generated from it therefore gets only what your organization may also call. The full version is available to the platform operator behind its own sign-in. It does not appear on this site.
Stability per operation
Every operation carries the extension x-stability with one of three values:
| Value | Meaning |
|---|---|
stable |
Path, required fields, and error codes do not change without a new version. |
beta |
Public but young: The shape can still move until it has survived one cycle without a breaking change. |
internal |
Not part of the public surface. Appears only in the operator’s version and therefore in no file on this site. |
State of the current release: 372 of the 443 operations are stable, and 71 are beta: the 31 routes of advertising under /v1/advertising/… (see The areas of the reference), GET /v1/webhooks/event-types (see Fetch the event catalog through the API), the dry run POST /v1/scenes/validate (see The MCP service for AI assistants), the three routes of the render job of a scene version (POST /v1/scenes/{id}/versions/{vid}/render, GET /v1/scenes/{id}/versions/{vid}/render/{jobId}, and GET /v1/scenes/{id}/versions/{vid}/render/{jobId}/image), the five routes of the web displays, whose shape has already shifted once in this wave, the two routes of the screenshots of a display (GET /v1/players/{playerId}/screenshots and GET /v1/players/{playerId}/screenshots/{screenshotId}), the nine routes of the new analytics under /v1/analytics/ (the ad hoc analysis with catalog and output, the overview, the day and the log of a display, the content, and the delivery of an ad campaign), the eight routes of the saved views under /v1/analytics/reports, which changed shape with the new analytics, and the eleven routes of the proofs: the list, the files, and the interim statement under /v1/analytics/proofs, the links for advertisers under /v1/analytics/share-links, and the four routes of the verification page and the campaign report that need no sign-in, under /v1/public/…. No operation is currently marked deprecated.
An exception applies until beta. Until the end of alpha (end of 2026), even routes of the stability class
stablemay be dropped or broken without a sunset. Every break is listed in the change notes of the train. With the new analytics, five routes of the old playback analytics were dropped this way, and the saved reports changed shape and have beenbetasince. Details: Stability classes and sunset.
What the classes promise, how a sunset proceeds, and how a client recognizes it is described under Stability classes and sunset.
What does not exist
- No version selection through headers or query parameters. The version is in the path.
- No separate base URL per area: All areas live under the same origin, including the paths without
/v1. Sign-in is additionally reachable at the sign-in host, with the same paths. - No second contract next to this specification: Whatever the command line, the assistant, or a portal can do, this API can do too.
When an operation is retired, it carries deprecated: true and x-sunset with the shutdown date, and its responses carry Deprecation and Sunset. Twelve months separate the announcement from the shutdown. The details are described under Stability classes and sunset. How changes to the API appear and how you compare two versions of the specification is described under Release trains, notes, and deprecations.