OopsPlayerDocumentsURL Scheme

Developer reference

OopsPlayer URL Scheme

Use oopsplayer:// to open OopsPlayer from Shortcuts, a website, or another app, play network media, or import an Emby server. This guide describes the protocol supported by the current iOS / iPadOS version.

iOS / iPadOS · Scheme: oopsplayer

Basic rules

  • The Scheme name is case insensitive. We recommend using lowercase oopsplayer:// consistently.
  • URL encode query parameter values, especially nested URLs, non-ASCII text, spaces, &, ?, and #. Supply each parameter only once.
  • Media URLs can use http, https, rtmp, rtsp, rtp, udp, or mms. Playback depends on the media format and network conditions.
  • The example domains are placeholders. When a website opens the Scheme, the browser may ask the user to confirm opening the app.

Play network media

We recommend the x-callback-url route. Only url is required.

oopsplayer://x-callback-url/play?url=https%3A%2F%2Fmedia.example.com%2Fmovie.mkv
ParameterRequiredDescription
urlYesMedia URL. Encode the complete URL as a single query parameter value.
nameNoName shown in the player and used to identify the file extension. The legacy title parameter also works; name takes precedence when both are present.
positionNoStarting position in seconds, as a non-negative integer. Playback starts at 0 when omitted.
subNoHTTP or HTTPS external subtitle URL. The player will try to select it automatically.
User-AgentNoUser-Agent used when requesting the media URL. Match the parameter name’s capitalization exactly.
x-successNoCalling app’s Scheme URL to open when the user closes the player. See the next section.

With subtitles, a start position, and User-Agent

oopsplayer://x-callback-url/play?url=https%3A%2F%2Fmedia.example.com%2Fmovie.mkv&name=Movie.mkv&position=915&sub=https%3A%2F%2Fmedia.example.com%2Fsubtitle.ass&User-Agent=MyApp

Return to the calling app after closing the player

When x-success is provided and the user closes the player, OopsPlayer appends lastPlayedUrl and position to that URL’s existing query parameters. position is the non-negative integer number of seconds at closing. The calling app must register its own Scheme to receive the callback.

oopsplayer://x-callback-url/play?url=https%3A%2F%2Fmedia.example.com%2Fmovie.mkv&x-success=myapp%3A%2F%2Fplayback-done%3Fsource%3Doops

Example callback:

myapp://playback-done?source=oops&lastPlayedUrl=https%3A%2F%2Fmedia.example.com%2Fmovie.mkv&position=120

This callback is sent only after playback has actually opened and the user closes the player. x-success must use the calling app’s custom Scheme; HTTP, HTTPS, file, and OopsPlayer’s own Scheme are not accepted.

Import an Emby server

Opening the link shows a configuration preview in OopsPlayer. The server is saved only after the user confirms. Passwords use the existing Keychain storage mechanism, and imported servers are stored locally by default.

oopsplayer://importserver?type=emby&address=https%3A%2F%2Femby.example.com%3A443%2Femby&name=Home%20Emby&username=alice&password=example
ParameterRequiredDescription
typeYesCurrently, only emby is supported.
addressYesFull HTTP or HTTPS address. It may include a port and base path.
usernameYesEmby login username.
passwordNoLogin password. You can also enter it in the app after importing.
nameNoDisplay name for the server. Defaults to the hostname when omitted.
addressNname + addressNNoProvide a backup route name and HTTP(S) address as a pair, where N ranges from 1 to 20. For example, address1name and address1.

Example with a backup route

oopsplayer://importserver?type=emby&address=https%3A%2F%2Femby.example.com&username=alice&address1name=Backup&address1=https%3A%2F%2Fbackup.example.com

Links containing passwords may appear in browser history, clipboards, or logs kept by the calling app. Share them only through trusted channels and enter passwords in the app when possible. Imports remain subject to OopsPlayer’s current server limit; an Emby server with the same address will not be added twice.

Last updated: 2026-09-24