{"id":50770372,"url":"https://github.com/isaced/tmdb-kit","last_synced_at":"2026-06-11T18:00:30.355Z","repository":{"id":364098561,"uuid":"1266048384","full_name":"isaced/tmdb-kit","owner":"isaced","description":"A modern, hand-crafted, zero-runtime-dependency Node.js SDK for The Movie Database (TMDB)","archived":false,"fork":false,"pushed_at":"2026-06-11T17:02:38.000Z","size":48,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T17:17:45.200Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isaced.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-11T09:30:05.000Z","updated_at":"2026-06-11T17:04:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/isaced/tmdb-kit","commit_stats":null,"previous_names":["isaced/tmdb-sdk"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/isaced/tmdb-kit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaced%2Ftmdb-kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaced%2Ftmdb-kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaced%2Ftmdb-kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaced%2Ftmdb-kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaced","download_url":"https://codeload.github.com/isaced/tmdb-kit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaced%2Ftmdb-kit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34211067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-11T18:00:22.660Z","updated_at":"2026-06-11T18:00:30.348Z","avatar_url":"https://github.com/isaced.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tmdb-kit\n\nA tiny, typed, zero-runtime-dependency TMDB SDK for Node.js, Bun, Deno, and edge runtimes.\n\nThis package intentionally does not generate code from OpenAPI. It ships a small hand-designed API surface for common TMDB workflows, plus a typed `request\u003cT\u003e()` escape hatch for endpoints that are not wrapped yet.\n\n## Features\n\n- Zero runtime dependencies.\n- Built with tsdown and published as ESM + CommonJS.\n- Uses only Web standard APIs: `fetch`, `Headers`, `URL`, and `AbortSignal`.\n- Works in Node.js 18+, Bun, Deno, Cloudflare Workers, Vercel Edge, and other fetch-compatible runtimes.\n- Typed resources for movies, TV, search, trending, people, genres, configuration, credits, videos, and images.\n- High-coverage unit tests with mocked fetch; no real TMDB requests in tests.\n\n## Install\n\n```bash\nnpm install tmdb-kit\n```\n\n## Quick Start\n\n```ts\nimport { createTMDB } from 'tmdb-kit'\n\nconst tmdb = createTMDB({\n  accessToken: process.env.TMDB_ACCESS_TOKEN!,\n  defaultLanguage: 'en-US',\n})\n\nconst popular = await tmdb.movies.popular({ page: 1 })\nconst movie = await tmdb.movies.details(popular.results[0]!.id, {\n  appendToResponse: ['credits', 'videos'],\n})\n\nconst posterUrl = tmdb.images.url(movie.poster_path, 'w500')\n```\n\nCommonJS:\n\n```js\nconst { createTMDB } = require('tmdb-kit')\n\nconst tmdb = createTMDB({ accessToken: process.env.TMDB_ACCESS_TOKEN })\n```\n\nDeno:\n\n```ts\nimport { createTMDB } from 'npm:tmdb-kit'\n\nconst tmdb = createTMDB({ accessToken: Deno.env.get('TMDB_ACCESS_TOKEN')! })\n```\n\n## Authentication\n\nThe recommended option is TMDB's API Read Access Token:\n\n```ts\ncreateTMDB({ accessToken: 'tmdb-read-access-token' })\n```\n\nThe legacy v3 `api_key` query parameter is also supported:\n\n```ts\ncreateTMDB({ apiKey: 'tmdb-v3-api-key' })\n```\n\nExactly one of `accessToken` or `apiKey` is required.\n\n## Supported Resources\n\n```ts\ntmdb.movies.popular()\ntmdb.movies.topRated()\ntmdb.movies.nowPlaying()\ntmdb.movies.upcoming()\ntmdb.movies.details(550, { appendToResponse: ['credits', 'videos'] })\ntmdb.movies.credits(550)\ntmdb.movies.images(550)\ntmdb.movies.recommendations(550)\ntmdb.movies.similar(550)\ntmdb.movies.videos(550)\n\ntmdb.tv.popular()\ntmdb.tv.topRated()\ntmdb.tv.airingToday()\ntmdb.tv.onTheAir()\ntmdb.tv.details(1399)\ntmdb.tv.credits(1399)\ntmdb.tv.images(1399)\ntmdb.tv.recommendations(1399)\ntmdb.tv.similar(1399)\ntmdb.tv.videos(1399)\n\ntmdb.search.movies('Dune')\ntmdb.search.tv('Dark')\ntmdb.search.people('Sofia Coppola')\ntmdb.search.multi('Tom Hardy')\n\ntmdb.trending.all('week')\ntmdb.trending.movies('day')\ntmdb.trending.tv('day')\ntmdb.trending.people('week')\n\ntmdb.people.popular()\ntmdb.people.details(31)\n\ntmdb.genres.movies()\ntmdb.genres.tv()\n\ntmdb.configuration.details()\ntmdb.configuration.countries()\ntmdb.configuration.jobs()\ntmdb.configuration.languages()\ntmdb.configuration.primaryTranslations()\ntmdb.configuration.timezones()\n```\n\nFor an endpoint that is not wrapped yet:\n\n```ts\nconst response = await tmdb.request\u003c{ results: unknown[] }\u003e('/discover/movie', {\n  query: {\n    sort_by: 'popularity.desc',\n    with_genres: [28, 12],\n  },\n})\n```\n\n## Errors\n\n```ts\nimport { TMDBResponseError } from 'tmdb-kit'\n\ntry {\n  await tmdb.movies.popular()\n} catch (error) {\n  if (error instanceof TMDBResponseError) {\n    console.log(error.status, error.statusCode, error.statusMessage)\n  }\n}\n```\n\n## Development\n\n```bash\nnpm install\nnpm run typecheck\nnpm run test:coverage\nnpm run build\n```\n\n## References\n\n- [TMDB authentication](https://developer.themoviedb.org/docs/authentication-application)\n- [TMDB API reference](https://developer.themoviedb.org/reference/intro/getting-started)\n- [tsdown output formats](https://tsdown.dev/options/output-format)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaced%2Ftmdb-kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaced%2Ftmdb-kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaced%2Ftmdb-kit/lists"}