Questarr

Questarr for Playnite

A Playnite extension that connects your couch PC to a self-hosted Questarr server. It pushes your Playnite library up to Questarr and lets you request a game from the couch without opening a browser.

What it does

Requirements

Install

  1. Copy the playnite-questarr folder into your Playnite extensions directory: %APPDATA%\Playnite\Extensions\ (or Extensions\ next to Playnite.exe for a portable install).
  2. Restart Playnite. Playnite loads unsigned script extensions but will ask you to confirm the first time.

Connect

  1. In Questarr, open Settings → Integrations → API Keys and create a key (name it after the machine, e.g. “Playnite on the living room PC”, and choose the Playnite extension access). Copy it immediately — Questarr stores only a hash and cannot show it again.
  2. In Playnite, open Extensions → Questarr → Connect to Questarr…
  3. Enter the server address (https://questarr.example.com, or whatever your reverse proxy serves) and paste the key. A plain http:// address is also accepted — for a local address (a loopback, 192.168.x.x/10.x.x.x IP, or a .local hostname) or any other address — but always shows a warning first and asks for confirmation, since the key travels in cleartext over http:// either way. Use https:// whenever you can; the warning is stronger for an address outside your own network, where that cleartext traffic can cross the open internet.

The extension pings the server before saving, so a bad address or key fails right there instead of silently at the next sync. A same-host redirect (a reverse proxy enforcing https://, or normalizing a trailing slash) is followed automatically with the key intact; a redirect to any other host, or a same-host redirect from https:// down to http://, is refused instead, since either would otherwise move the key somewhere it never had consent to go.

Where settings are stored

Configuration lives in Playnite’s extension data directory as config.json. The API key is encrypted with Windows DPAPI against the user account that entered it, so the file is useless if copied to another machine or account. It is not protection against code already running as that same user — treat the key as a credential and revoke it in Questarr if the machine is compromised.

What the key can do

An integration API key is accepted only on Questarr’s /api/integration routes. It cannot read your settings, manage indexers or download clients, or create or revoke other API keys — those stay behind an interactive login. Revoke a key at any time from Settings → Integrations → API Keys; it stops working immediately.

Keys have an access level (the extension needs Playnite extension; a Read only key can ping and read the library but not sync or request games) and an optional expiry. Once a key expires Questarr answers 401 with code: "API_KEY_EXPIRED": create a new key and reconnect. Choose Never when creating the key if you prefer not to rotate it. /api/integration/ping returns the key’s scope and expiresAt.

How matching works

Questarr matches an incoming Playnite entry by Steam App ID first (for games from Playnite’s Steam library), then by a normalized title comparison — lowercased, punctuation flattened. Anything it cannot place comes back in the unmatched list rather than being added automatically, so a sync never invents library entries on its own. Use Request on Questarr for those.

Troubleshooting

Extension logs go to Playnite’s extensions.log, next to playnite.log.

Message Cause
Questarr rejected the API key (401) Key revoked, mistyped, or from another Questarr instance.
Questarr has no integration API at this address (404) Wrong address, or the server predates the integration API.
stored API key could not be decrypted config.json was copied from another Windows account or machine. Reconnect.
Questarr is rate limiting this client (429) Too many requests in a short window; retry shortly.