# NuvioTV → UNSPOOLED API Key Cross-Reference

When auditing UNSPOOLED, always cross-reference NuvioTV's BuildConfig fields.
NuvioTV (530 Kotlin files) at `~/NuvioTV-0.6.21-beta/` is the reference app.

## NuvioTV BuildConfig Fields (from app/build.gradle.kts)

```
TMDB_API_KEY
TRAKT_CLIENT_ID
TRAKT_CLIENT_SECRET
TRAKT_REDIRECT_URI       (defaults to urn:ietf:wg:oauth:2.0:oob)
TRAKT_API_URL            (defaults to https://api.trakt.tv/)
PREMIUMIZE_CLIENT_ID
PARENTAL_GUIDE_API_URL
INTRODB_API_URL
TRAILER_API_URL
IMDB_RATINGS_API_BASE_URL
IMDB_TAPFRAME_API_BASE_URL
TV_LOGIN_WEB_BASE_URL
DONATIONS_BASE_URL
DONATIONS_DONATE_URL
AVATAR_PUBLIC_BASE_URL
UNIQUE_CONTRIBUTIONS_BASE_URL
GITHUB_OWNER
GITHUB_REPO
SUPABASE_URL              (dev only)
SUPABASE_ANON_KEY         (dev only)
```

## UNSPOOLED BuildConfig Fields

```
TMDB_API_KEY
TRAKT_CLIENT_ID
TRAKT_CLIENT_SECRET
RD_CLIENT_ID
NEXSTREAM_CATALOG_BASE_URL
```

## Gaps That Matter

| Key | NuvioTV | UNSPOOLED | Impact |
|-----|---------|-----------|--------|
| TRAKT_REDIRECT_URI | BuildConfig | Hardcoded `oob` in TraktAuthManager | Low — standard device flow value |
| TRAKT_API_URL | BuildConfig (defaults) | Hardcoded in TraktModule.kt:44 | Cosmetic |
| PREMIUMIZE_CLIENT_ID | BuildConfig | Not present | Premiumize uses API key auth, not OAuth client ID — cosmetic |

## Gaps That Don't Matter

- Supabase keys — UNSPOOLED doesn't use Supabase
- IMDB/Tapframe URLs — UNSPOOLED uses TMDB directly
- Donations/contributions — not relevant
- Parental guide / IntroDB / Trailer API — UNSPOOLED uses different services
