Releases
Stable country runs, current/archive scope, and calendar announcements.
Requests require an active organization grant and an API key or Clerk session. Results respect your granted scopes and markets. Access details →
GET/v1/market-releases
Theatrical market releases.
Parameters
| Name | Type | Details |
|---|---|---|
limitquery · optional | integer | Default: 50 · Minimum: 1 · Maximum: 100 |
cursorquery · optional | string | Opaque cursor from the previous response. Preserve the same filters. |
scopequery · optional | string | Defaults to current (D1-owned). Archived selects published history; all explicitly combines both. Ownership is independent of Showing or premiere dates. Archived/all requires history:read.Values: current, archived, all |
countryCodequery · optional | string | Optional two-letter country filter. This narrows results; it does not grant access.Pattern: ^[A-Za-z]{2}$ |
distributorIdquery · optional | string | Public distributor identifier (dst_…). |
releasesFromquery · optional | string | Inclusive local release date, YYYY-MM-DD. |
releasesBeforequery · optional | string | Exclusive local release date, YYYY-MM-DD. |
curl "https://api.boxobserver.com/v1/market-releases" \
-H "Authorization: Bearer $BOX_OBSERVER_API_KEY"Response
200 application/json · Success shape within your granted access.
{
"data": [],
"page": {
"nextCursor": null,
"hasMore": false
},
"meta": {
"requestId": "example-request-id",
"generatedAt": "2026-09-04T12:00:00.000Z"
}
}Response fields
| Field | Type and constraints |
|---|---|
dataRequired | array<object> |
data[].idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].movieIdRequired | string | nullPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].countryCodeRequired | string |
data[].localTitleRequired | string |
data[].releaseDateRequired | string | nullFormat: date |
data[].distributorIdsRequired | array<string> |
pageRequired | object |
page.nextCursorRequired | string | null |
page.hasMoreRequired | boolean |
metaRequired | object |
meta.requestIdRequired | string |
meta.generatedAtRequired | stringFormat: date-time |
Errors: 400, 401, 403, 429, 500, 503. Response format and retry guidance →
GET/v1/market-releases/{id}
Theatrical market release.
Replace {id} with the appropriate public identifier returned by the API.
Parameters
| Name | Type | Details |
|---|---|---|
idpath · required | string | Public resource identifier returned by the API. |
curl "https://api.boxobserver.com/v1/market-releases/{id}" \
-H "Authorization: Bearer $BOX_OBSERVER_API_KEY"Response
200 application/json · Success shape within your granted access.
{
"data": {
"id": "rel_ZXhhbXBsZQ",
"movieId": null,
"countryCode": "RO",
"localTitle": "example",
"releaseDate": null,
"distributorIds": []
},
"meta": {
"requestId": "example-request-id",
"generatedAt": "2026-09-04T12:00:00.000Z"
}
}Response fields
| Field | Type and constraints |
|---|---|
dataRequired | object |
data.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data.movieIdRequired | string | nullPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data.countryCodeRequired | string |
data.localTitleRequired | string |
data.releaseDateRequired | string | nullFormat: date |
data.distributorIdsRequired | array<string> |
metaRequired | object |
meta.requestIdRequired | string |
meta.generatedAtRequired | stringFormat: date-time |
Errors: 400, 401, 403, 404, 429, 500, 503. Response format and retry guidance →
GET/v1/releases
Country Releases with explicit ownership scope.
Parameters
| Name | Type | Details |
|---|---|---|
limitquery · optional | integer | Default: 50 · Minimum: 1 · Maximum: 100 |
cursorquery · optional | string | Opaque cursor from the previous response. Preserve the same filters. |
countryCodequery · optional | string | Optional two-letter country filter. This narrows results; it does not grant access.Pattern: ^[A-Za-z]{2}$ |
movieIdquery · optional | string | Public canonical movie identifier (mov_…). |
scopequery · optional | string | Defaults to current (D1-owned). Archived selects published history; all explicitly combines both. Ownership is independent of Showing or premiere dates. Archived/all requires history:read.Values: current, archived, all |
curl "https://api.boxobserver.com/v1/releases" \
-H "Authorization: Bearer $BOX_OBSERVER_API_KEY"Response
200 application/json · Success shape within your granted access.
{
"data": [],
"page": {
"nextCursor": null,
"hasMore": false
},
"meta": {
"requestId": "example-request-id",
"generatedAt": "2026-09-04T12:00:00.000Z"
}
}Response fields
| Field | Type and constraints |
|---|---|
dataRequired | array<object> |
data[].idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].movieIdRequired | string | nullPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].countryCodeRequired | string |
data[].scopeRequired | stringValues: current, archived |
data[].createdAtRequired | stringFormat: date-time |
pageRequired | object |
page.nextCursorRequired | string | null |
page.hasMoreRequired | boolean |
metaRequired | object |
meta.requestIdRequired | string |
meta.generatedAtRequired | stringFormat: date-time |
Errors: 400, 401, 403, 429, 500, 503. Response format and retry guidance →
GET/v1/releases/{id}
Stable country Release; its URL survives archival.
Replace {id} with the appropriate public identifier returned by the API.
Parameters
| Name | Type | Details |
|---|---|---|
idpath · required | string | Public resource identifier returned by the API. |
curl "https://api.boxobserver.com/v1/releases/{id}" \
-H "Authorization: Bearer $BOX_OBSERVER_API_KEY"Response
200 application/json · Success shape within your granted access.
{
"data": {
"id": "crl_ZXhhbXBsZQ",
"movieId": null,
"countryCode": "RO",
"scope": "current",
"createdAt": "2026-09-04T12:00:00.000Z"
},
"meta": {
"requestId": "example-request-id",
"generatedAt": "2026-09-04T12:00:00.000Z"
}
}Response fields
| Field | Type and constraints |
|---|---|
dataRequired | object |
data.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data.movieIdRequired | string | nullPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data.countryCodeRequired | string |
data.scopeRequired | stringValues: current, archived |
data.createdAtRequired | stringFormat: date-time |
metaRequired | object |
meta.requestIdRequired | string |
meta.generatedAtRequired | stringFormat: date-time |
Errors: 400, 401, 403, 404, 429, 500, 503. Response format and retry guidance →
GET/v1/releases/{id}/showings
Showings of one Release, automatically read from its authoritative owner.
Replace {id} with the appropriate public identifier returned by the API.
Parameters
| Name | Type | Details |
|---|---|---|
idpath · required | string | Public resource identifier returned by the API. |
limitquery · optional | integer | Default: 50 · Minimum: 1 · Maximum: 100 |
cursorquery · optional | string | Opaque cursor from the previous response. Preserve the same filters. |
venueIdquery · optional | string | Public venue identifier (ven_…). |
movieIdquery · optional | string | Public canonical movie identifier (mov_…). |
operatorIdquery · optional | string | Public operator identifier (opr_…). |
marketIdquery · optional | string | Public market identifier (mkt_…). |
countryCodequery · optional | string | Optional two-letter country filter. This narrows results; it does not grant access.Pattern: ^[A-Za-z]{2}$ |
localDatequery · optional | string | Cinema-local calendar date, YYYY-MM-DD. Cannot be combined with timestamp bounds. |
startsFromquery · optional | string | Inclusive start timestamp. ISO 8601; offsets are normalized to UTC. |
startsBeforequery · optional | string | Exclusive end timestamp. The schedule window is limited to 31 days. |
curl "https://api.boxobserver.com/v1/releases/{id}/showings" \
-H "Authorization: Bearer $BOX_OBSERVER_API_KEY"Response
200 application/json · Success shape within your granted access.
{
"data": [],
"page": {
"nextCursor": null,
"hasMore": false
},
"meta": {
"requestId": "example-request-id",
"generatedAt": "2026-09-04T12:00:00.000Z"
}
}Response fields
| Field | Type and constraints |
|---|---|
dataRequired | array<object> |
data[].idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].releaseIdRequired | string | nullPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].statusRequired | stringValues: scheduled, unlisted, cancelled |
data[].startsAtRequired | stringFormat: date-time |
data[].localDateRequired | stringFormat: date |
data[].timeZoneRequired | string |
data[].venueRequired | object |
data[].venue.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].venue.nameRequired | string |
data[].venue.programmingTypeRequired | stringValues: mainstream, mixed, specialist |
data[].venue.marketRequired | object |
data[].venue.market.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].venue.market.nameRequired | string |
data[].venue.market.countryCodeRequired | string |
data[].venue.market.timeZoneRequired | string |
data[].auditoriumRequired | object | null |
data[].auditorium.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].auditorium.nameRequired | string |
data[].auditorium.capacityRequired | integer | nullMinimum: 0 |
data[].auditorium.experiencesRequired | array<string> | null |
data[].movieRequired | object |
data[].movie.canonicalMovieRequired | object | null |
data[].movie.canonicalMovie.idRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].movie.canonicalMovie.titleRequired | string |
data[].movie.canonicalMovie.originalTitleRequired | string | null |
data[].movie.canonicalMovie.releaseYearRequired | integer | null |
data[].movie.canonicalMovie.runtimeMinutesRequired | integer | nullMinimum: 0 |
data[].movie.sourceTitleRequired | string |
data[].movie.sourceOriginalTitleRequired | string | null |
data[].movie.identityStatusRequired | stringValues: canonical, source |
data[].formatRequired | stringValues: 2d, 3d |
data[].experiencesRequired | array<string> |
data[].experienceSourceRequired | string | nullValues: showing, auditorium, |
data[].languageRequired | string | null |
data[].capacityRequired | integer | nullMinimum: 0 |
data[].capacitySourceRequired | string | nullValues: showing, observation, auditorium, |
data[].priceRequired | object |
data[].price.statusRequired | stringValues: exact, derived, unavailable |
data[].price.amountMinorRequired | integer | nullMinimum: 0 |
data[].price.currencyRequired | string | null |
data[].price.sourceRequired | string | nullValues: providerSchedule, providerBooking, officialTariff, legacyUnknown, |
data[].price.observedAtRequired | string | nullFormat: date-time |
data[].price.lastConfirmedAtRequired | string | nullFormat: date-time |
data[].price.optionsOptional | array<object>Default: [] |
data[].price.options[].offerKeyRequired | stringPattern: ^(mkt|opr|ven|aud|mov|shw|dst|rel|crl|pof)_[A-Za-z0-9_-]+$ |
data[].price.options[].labelRequired | string |
data[].price.options[].amountMinorRequired | integerMinimum: 0 |
data[].price.options[].currencyRequired | string |
data[].price.options[].admissionsIncludedRequired | integerMinimum: 0 |
data[].seatAvailabilityRequired | object | null |
data[].seatAvailability.statusRequired | stringValues: exact, derived, unavailable |
data[].seatAvailability.observedAtRequired | stringFormat: date-time |
data[].seatAvailability.checkpointRequired | string |
data[].seatAvailability.capacityRequired | integer | nullMinimum: 0 |
data[].seatAvailability.availableSeatsRequired | integer | nullMinimum: 0 |
data[].seatAvailability.occupiedEstimateRequired | integer | nullMinimum: 0 |
data[].seatAvailability.occupancyRatioRequired | number | nullMinimum: 0 · Maximum: 1 |
data[].updatedAtRequired | stringFormat: date-time |
pageRequired | object |
page.nextCursorRequired | string | null |
page.hasMoreRequired | boolean |
metaRequired | object |
meta.requestIdRequired | string |
meta.generatedAtRequired | stringFormat: date-time |
Errors: 400, 401, 403, 404, 429, 500, 503. Response format and retry guidance →