Aggregate counts, averages and revenue metrics.
Count buddy groups (grouped)
Returns the number of buddy groups, grouped.
query Parameters
groupGroup by: day, hour, month, week
createdDatetimeStartcreatedDatetimeEndpageperPageorderCount buddy groups (grouped) › Responses
BuddyGroupsCountGrouped list
Catchment of a set of cinemas
Returns how many people live in the cities that fall within the given radius around at least one of the given cinemas. A city covered by several cinemas counts once. The figures come from city points with a population value, so they describe people living in nearby cities — not a population grid and not a travel-time catchment. POST rather than GET because the cinema id list is unbounded.
Catchment of a set of cinemas › Request Body
cinemaIdsradiusKmOne of 5, 10, 20, 30, 50.
withCitiesAlso return the covered city points, for drawing them on a map. Capped; the aggregate figures stay exact regardless.
Catchment of a set of cinemas › Responses
Catchment figures for the given cinemas
radiusKmThe radius the figures were computed for.
cinemaCountCinemas that contributed — they exist, are not deleted and have coordinates.
cinemaWithoutLocationCountRequested cinemas that could not contribute, e.g. because they have no coordinates.
cityCountDistinct cities inside the radius of at least one contributing cinema. A city covered by several cinemas counts once.
populationSummed population of those cities. This is the population of city points from the SimpleMaps import, not a population grid and not a travel-time catchment — label it as "people living in cities within the radius", not as a catchment area.
populationKnownCityCountHow many of the counted cities carry a population figure at all, so consumers can tell a complete sum from a partial one.
Covered city points, only present when withCities was requested. Capped — check isCityListTruncated; the aggregate figures above stay exact either way.
isCityListTruncatedTrue when more cities were covered than cities carries points for.
Count cinemas
Returns the number of cinemas.
path Parameters
movieIdquery Parameters
contentIdshowingDatetimeStartshowingDatetimeEndmarketingAssistantBookedDatetimeStartmarketingAssistantBookedDatetimeEndwebsiteCustomerDatetimeStartwebsiteCustomerDatetimeEndonlineTicketingEnabledDatetimeStartonlineTicketingEnabledDatetimeEndisOnlineTicketingCinemaWebsiteisOnlineTicketingIosisOnlineTicketingAndroidisOnlineTicketingWebCount cinemas › Responses
CinemasCount number
Count event requests
Returns the number of event requests.
query Parameters
cineamoMovieIdDeprecated: use movieId instead (filters by the legacy Cineamo movie id).
movieIdFilter the count by the movie id (Content.movie relation). Takes precedence over cineamoMovieId when both are given.
Count event requests › Responses
EventRequestsCount number
Count messages (grouped)
Returns the number of messages, grouped.
query Parameters
groupcreatedDatetimeStartcreatedDatetimeEndpageperPageorderisReadisReceivedClientisClickeduserIdcinemaIdcontentIdeventseventNamecontextCount messages (grouped) › Responses
MessagesCountGrouped list
Average movie ratings
Returns the average movie rating.
query Parameters
cineamoMovieIdDeprecated: use movieId instead (filters by the legacy Cineamo movie id).
movieIdFilter movie-ratings by the movie id (Movie.id). Takes precedence over cineamoMovieId when both are given.
movieDateIdAverage movie ratings › Responses
MovieRatingAverage number
Movie showings per cinema
Returns which cinemas a movie ran in and how many showings it had in each of them, plus the aggregate figures over the whole run. An unknown movie, or one that never ran, is a zero result rather than an error.
What counts as part of the run: both content↔movie link styles resolve, the content.movie foreign key and the legacy content.external_id string — per CIN-13359 the key is not yet written on the whole write path, so a foreign-key-only lookup can report zero cinemas for a movie that ran wide. Private showings are excluded, because a private booking is not part of a theatrical run. Inactive and soft-deleted cinemas are excluded, so a house that has left the network is not reported as reach. Showing state is deliberately not filtered, matching the tenant-reach query these semantics are taken from — filtering it here would make two figures that describe the same run disagree.
The window bounds are independently optional and behave like every other datetime window in this API: showingDatetimeStart inclusive, showingDatetimeEnd exclusive. Every figure then describes that window alone, firstShowingDatetime included — so a window anchored on the movie's own start has to be derived from an unwindowed response first.
A GET rather than a POST, the deliberate contrast with POST /analytics/cinemas-catchment: that endpoint needs a body because its cinema id list is unbounded, whereas the input here is one id plus two dates, so the request stays HTTP-cacheable.
The cinemas breakdown is deliberately not HAL-paginated, and carries no cap or truncation flag. This is an analytics aggregate, not a resource collection: a consumer needs the complete breakdown to derive a scope from it at all, a page of it is meaningless, and the array is bounded by the network's own cinema count — the very list the consumer already holds. POST /analytics/cinemas-catchment set that precedent with its nested cities, and unlike city points this set cannot outgrow that bound.
query Parameters
movieIdThe numeric Movie id, not the legacy cineamo movie id string.
showingDatetimeStartInclusive lower bound on the showing start. Omit both bounds for the whole run.
showingDatetimeEndExclusive upper bound on the showing start.
Movie showings per cinema › Responses
The movie's run across the network, broken down per cinema
movieIdThe movie the figures describe, echoed back.
cinemaCountCinemas with at least one qualifying showing — the length of cinemas.
showingCountQualifying showings across all of those cinemas — the sum over cinemas.
firstShowingDatetimeEarliest qualifying showing start. Null when nothing qualified — the movie never ran in the network, or not inside the requested window. When a window was requested this is the first showing inside it, not the movie's first day in the network, so a window anchored on the run's own start has to be derived from an unwindowed response.
lastShowingDatetimeLatest qualifying showing start, null under the same conditions as firstShowingDatetime.
The complete per-cinema breakdown, ordered by cinema id. Deliberately not HAL-paginated, and deliberately without a cap or a truncation flag: this is an analytics aggregate rather than a resource collection, a consumer needs all of it to derive a scope from it at all, and the array is bounded by the network's own cinema count — the list the consumer already holds. CinemasCatchment.cities set that precedent, and unlike city points this set cannot outgrow its bound. Cinemas the movie never played in are absent rather than present with a zero count.
Count ticket purchase intents (grouped)
Returns the number of ticket purchase intents, grouped.
query Parameters
createdDatetimeStartcreatedDatetimeEndgrouppageperPageordercinemaIdcontentIdshowingIdpurchaseReasonexcludePurchaseReasonsCount ticket purchase intents (grouped) › Responses
TicketPurchaseIntentsCountGrouped list
Count ticket purchase intents
Returns the number of ticket purchase intents.
query Parameters
createdDatetimeStartcreatedDatetimeEndcinemaIdcontentIdshowingIdpurchaseReasonCount ticket purchase intents › Responses
TicketPurchaseIntentsCount number
Count users (grouped)
Returns the number of users, grouped.
query Parameters
groupregisterDatetimeStartregisterDatetimeEndpageperPageordersortorderisActivatedisGuestroleIddeviceTypeemployerCinemaIdemployerDistributorIdfavoriteCinemaIdCount users (grouped) › Responses
UsersCountGrouped list

