ReelRifter
Account
๐Ÿ”Œ

Public API

Read your watchlist and history, and send scrobble events, from any third-party script, automation, or browser extension.

Overview

The ReelRifter Public API gives third-party apps read access to your watchlist and watch history, plus a write endpoint for scrobbling watch events from browser extensions or self-hosted automations.

All requests are authenticated with a Personal Access Token you mint yourself. There's no OAuth flow and no client registration โ€” generate a token, copy it once, and use it as a bearer header.

> Just want auto-scrobbling on Netflix / Disney+ / Prime Video / Max? You don't need to build anything. Install the official browser extension from /extension and paste a token โ€” it does the rest.

Generating a Token

1. Go to Settings โ†’ Integrations โ†’ API Tokens. 2. Enter a label (e.g. Home Assistant, Netflix Scrobbler) and click Create. 3. Copy the raw token โ€” it starts with rr_pat_. We only store the hash, so this is the only time it's shown. 4. Use it in the Authorization header on every request:

Authorization: Bearer rr_pat_xxxxxxxxxxxxxxxxxxxx

You can hold up to 20 active tokens. Revoke any token from the same screen โ€” anything using it stops working immediately.

Base URL

https://reelrifter.com/api/public/v1

Endpoints

`GET /me`

Returns the identity of the token's owner. Useful for verifying a token works before doing anything else.

`GET /watchlist`

List items from your watchlist. Supports filters and cursor-based pagination.

Query parameters:

  • โ€ขstatus โ€” one of WANT_TO_WATCH, WATCHING, FINISHED, DROPPED, ON_HOLD
  • โ€ขmediaType โ€” TV or MOVIE
  • โ€ขlimit โ€” 1-200 (default 50)
  • โ€ขcursor โ€” nextCursor value from a previous response

`GET /history`

Returns a unified timeline of finished watchlist items and individual watched episodes, sorted most-recent first. Supports limit (1-200).

`POST /scrobble`

Log a watch event. Identical to how Plex/Jellyfin webhooks update your watchlist โ€” the server matches the title against TMDB, then advances your current episode (TV) or marks the title finished (movie).

Body fields:

  • โ€ขtitle (required) โ€” show name or movie title
  • โ€ขmediaType โ€” optional, inferred from season/episode if omitted
  • โ€ขseason, episode โ€” numbers; presence implies TV
  • โ€ขyear โ€” disambiguates reboots
  • โ€ขaction โ€” watched (default) or watching for play-start events
  • โ€ขsource โ€” free-form label for your own debugging

If TMDB can't match the title, the response is { "matched": false } with status 200 (rather than 4xx) so clients don't waste retries on titles that will never match.

Rate Limits

There are no published rate limits yet. Please be reasonable โ€” under 60 requests per minute per token is the soft ceiling. We may add hard limits without notice if abuse appears.

Examples

curl

bash curl https://reelrifter.com/api/public/v1/watchlist?status=WATCHING \ -H "Authorization: Bearer rr_pat_xxxxxxxxxxxx"

Node / fetch

js const res = await fetch("https://reelrifter.com/api/public/v1/scrobble", { method: "POST", headers: { "Authorization": Bearer ${process.env.REELRIFTER_TOKEN}, "Content-Type": "application/json", }, body: JSON.stringify({ title: "Severance", season: 2, episode: 4 }), });

Security

  • โ€ขTreat the raw token like a password โ€” anyone with it can read your watchlist and write scrobble events.
  • โ€ขTokens are stored as SHA-256 hashes; we can't recover a lost token, only revoke + reissue.
  • โ€ขRevoke tokens you no longer use. The token list shows last-used timestamps so you can spot unused ones.

Related Articles

Get instant answers with ReelRifter AI Pro

Upgrade to Pro and ask the AI anything โ€” "what should I watch tonight?", "am I getting value from my streaming services?", or "how do I set up a Watch Party?"

Upgrade to Pro
Public API โ€” ReelRifter Help