Pathé Netherlands API Reference
Extracted from APK v10.6 via static analysis (jadx). Not an official document.
API Domains
apps.pathe.nl
Public content: movies, cinemas, showtimes, home feed. No authentication required.
s.pathe.nl
Account & booking: login, tickets, tunnel, scan. Requires Bearer token.
c.pathe.nl
Auth URL broker: returns Auth0 authorize URL for PKCE login flow.
login.pathe.me
Auth0 tenant for PKCE/OIDC. Handles user login and returns access tokens.
x-lcpg-mobile-key: and/8.0/prd/fuLi-79Qu8wEeMn5m7m2_Me86YG82srEvP5WPTeh95uC67bH43HJThis header is injected by
CPGHeadersInterceptor. Without it the server returns HTTP 403.
The value was recovered by decoding the XOR-obfuscated int arrays in the APK
using the HmacSHA512 key derived from ("someKey", "x7GNQQrnKxLeKHfZdvzv8Hmv").Most endpoints also accept a
language query parameter (nl, fr, en).
A plain Accept: application/json header is recommended but not required.
| Domain | Base URL | Auth | Purpose |
|---|---|---|---|
| apps.pathe.nl | https://apps.pathe.nl/api/v1/ | None | Public content API |
| s.pathe.nl | https://s.pathe.nl/ | Bearer token | Account & booking API |
| c.pathe.nl | https://c.pathe.nl/api/v1/ | None | Auth URL broker |
| login.pathe.me | https://login.pathe.me/ | — | Auth0 tenant (PKCE/OIDC) |
| www.pathe.nl | https://www.pathe.nl/api/ | None | Search proxy |
| walletobjects.googleapis.com | https://walletobjects.googleapis.com/walletobjects/v1/ | Google Pay wallet objects |
Authentication
Auth0 PKCEQAYtx0lRPXfh9MtVbXmOKj9ND2rmEgG7 and the tenant is login.pathe.me.
Get Auth0 authorize URL
GET https://c.pathe.nl/api/v1/authUrl — Returns an AuthUrlResponse containing the full Auth0 authorize URL with PKCE code_challenge already embedded.
Open URL in browser
Direct the user to the returned URL (Auth0 Universal Login at login.pathe.me). The user enters their credentials.
Receive authorization code
Auth0 redirects back to the app's custom scheme with ?code=…. Exchange it for tokens using the standard Auth0 token endpoint with your code_verifier.
Use Bearer token
Add Authorization: Bearer {access_token} header to all s.pathe.nl requests.
Refresh on 401
POST https://s.pathe.nl/api/{language}/refresh-authentication — The AuthInterceptor automatically retries with a fresh token on HTTP 401 responses.
Auth0 Configuration
| Property | Value |
|---|---|
| Auth0 Domain | login.pathe.me |
| Client ID | QAYtx0lRPXfh9MtVbXmOKj9ND2rmEgG7 |
| Flow | Authorization Code + PKCE |
| Token endpoint | https://login.pathe.me/oauth/token |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
language | string | optional | Language code (nl, fr) |
Response · AuthUrlResponse
Path Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code (nl, fr) |
Request Body (JSON)
Response · JwtToken
Called automatically by AuthInterceptor when a request returns HTTP 401. Send the current refresh_token to receive a new access_token.
Public Content API
No auth required apps.pathe.nlQuery Parameters
| Name | Type | Required | Description |
|---|---|---|---|
language | string | optional | Language (nl, fr) |
Response · List<CinemaResponse>
Path Parameters
| Name | Type | Description |
|---|---|---|
idCinema | string | Cinema ID (from /v4/cinemas) |
Query Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code |
Response · CinemaDetailResponse
Path Parameters
| Name | Type | Description |
|---|---|---|
idCinema | string | Cinema ID |
date | string | Date in YYYY-MM-DD format |
Query Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code |
Response · List<ShowTimeResponse>
💡 The url field contains a per-showtime booking reference used as the i field in CpgTunnelRequest.
Query Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code |
Response · List<ShowResponseV5>
Array of show objects. See ShowResponseV5 model — superset of ShowResponse with additional fields.
Path Parameters
| Name | Type | Description |
|---|---|---|
idShow | string | Show ID |
Query Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code |
Response · ShowResponseV5
Fetch a show using an external identifier (e.g. partner system ID). Returns ShowResponse.
Path Parameters
| Name | Description |
|---|---|
idCinema | Cinema ID |
Response · CinemaShowsResponse
Contains an array of CinemaShow objects linking shows to their showtimes at this cinema.
Returns ShowCinemasResponse — list of cinemas that have scheduled showings of this show.
Available Sections
| Path | Returns | Description |
|---|---|---|
/v3/home/current?language= | List<CurrentFilmResponse> | Currently showing films |
/v3/home/featuring?language= | List<HomeFeaturingResponse> | Featured films (optionally filter with &genre=) |
/v3/home/highlighted?language= | List<String> | Highlighted show IDs |
/v3/news?language= | List<NewsResponse> | News articles |
/v3/alerts?language= | List<AlertResponse> | App alerts/announcements |
Returns List<TechnoResponse>. Each entry is a premium format (GPXP = Grande Première eXpériences Premium). Use idTechno in the related endpoints below.
Related GPXP Endpoints
| Path | Returns | Description |
|---|---|---|
/v3/gpxp/{idTechno}/shows | TechnoShowsResponse | Shows using this technology |
/v3/gpxp/{idTechno}/highlighted | List<String> | Highlighted show IDs for technology |
/v3/gpxp/{idTechno}/{idCinema}/shows | TechnoShowsResponse | Shows using technology at specific cinema |
/v4/gpxp/{idTechno}/showtimes/{date} | List<ShowTimeResponse> | Showtimes by technology and date |
| URL | Returns | Description |
|---|---|---|
/v1/settings?language= | SettingsResponse | App settings (feature flags, config) |
/v1/tags?language= | List<TagResponse> | Show tags (OV, IMAX, etc.) |
/v1/versions?language= | List<VersionResponse> | Version metadata |
/v1/vouchers?language= | List<EcardResponse> | E-card / voucher types |
/v1/content-ratings?language= | List<ContentRatingResponse> | Age/content rating labels |
/v3/client/feelings?language= | FeelingShowDetailsResponse | User sentiment options for shows |
/v3/client/show/{showId}/feeling | FeelingParamResponse | GET/POST user feeling for a show |
/v3/show/{showId}/hot | FeelingShowDetailsResponse | Trending/hot show details |
/v4/client/shows | List<ShowResponseV5> | Shows on the client's watchlist |
Query Parameters
| Name | Type | Description |
|---|---|---|
language | string | Language code |
q | string | Search query |
Account & Booking API
Bearer token required s.pathe.nls.pathe.nl require the Authorization: Bearer {access_token} header obtained from the Auth0 PKCE flow. The AuthInterceptor automatically refreshes the token on HTTP 401 via POST /api/{language}/refresh-authentication.
Response · UserAccountResponse — key fields
GET or PATCH user preferences. Returns PreferencesResponse with notification settings, language, favorite genres, etc.
| URL | Returns | Description |
|---|---|---|
/accounts/me/cards?language= | List<CardResponse> | Loyalty/e-cards attached to account |
/accounts/me/prepaids?language= | List<PrepaidResponse> | Prepaid credits/passes |
/accounts/me/advantages?language= | List<AdvantageResponse> | Member advantages/rewards |
/accounts/me/goodies?language= | List<GoodiesResponse> | Goodies/free gifts |
/accounts/me/cinemas?language= | List<CinemaFavoriteResponse> | Favourite cinemas |
/accounts/me/movieToNote?language= | List<ShowResponse> | Watchlist (movies to remember) |
/accounts/me/friends?language= | List<RequestFriendResponse> | Friends list |
/accounts/me/notifications | — | Push notification settings |
/api/{language}/accounts/me/newsletters | PreferencesResponse | GET / PATCH newsletter subscriptions |
/api/accounts/prepaids | List<PrepaidResponse> | All prepaids (no language param) |
Also available as GET /api/app/compte/{orderToken}/ebillet for a specific order.
Response · List<TicketResponse>
u) that the app loads in a WebView. The actual seat selection and payment happen inside that WebView via a JavaScript bridge. To build a headless booking flow, you'll need to drive the returned URL with a browser automation tool.
Request Body · CpgTunnelRequest
Alternative constructors: for e-card only pass car=<ecardId> with empty i. For prepaid pass prog (program code) instead.
Response · CpgTunnelResponse
Also: POST /api/app/webview/cs for ClickServe tunnel (response: {"url": "..."}), and POST /api/app/webview with PatheFriendsTunnelRequest body for Pathé Friends.
Request Body · ScanRequest
Response · ScanInfo
Returns validation result with card/ticket info, status, and associated scan data.
Path Parameters
| Name | Type | Description |
|---|---|---|
orderRef | string | Order reference from TicketResponse.orderRef |
email | string | User's email address |
Response · CancelTicketResponse
Confirmation of cancellation. Returns CancelTicketResponse.
Returns TicketPayJwt — a signed JWT for adding the ticket to Google Wallet. ebilletId is the ticket ID from TicketResponse.
CPGHeadersInterceptor injects exactly one obfuscated header recovered by static analysis:x-lcpg-mobile-key: and/8.0/prd/fuLi-79Qu8wEeMn5m7m2_Me86YG82srEvP5WPTeh95uC67bH43HJDecoding:
HmacSHA512(key="someKey", data="x7GNQQrnKxLeKHfZdvzv8Hmv") → lowercase hex → XOR each int in the array with the corresponding hex character.
Verified live: GET /api/v4/cinemas returns HTTP 200 with this header, HTTP 403 without it.