Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

In Kodi, the right “deep link” depends on what you want to happen. To open a library browsing view inside Kodi, use the ActivateWindow built-in with a documented library path. To start a particular movie or episode, use JSON-RPC’s Player.Open with a supported file or database item reference. Those are different jobs: a videodb:// path is not a universal external URL for opening every individual item.

Choose between opening a library view and playing an item

“Open a movie in Kodi” can mean either showing a screen where the movie appears or beginning playback. Decide which outcome you need before choosing a method:

  • Show a Kodi section or listing: use ActivateWindow with a window and library path. This is suited to navigation within Kodi, such as a menu button, skin action, or keymap.
  • Start playback of a particular file or library item: use the JSON-RPC method Player.Open. It accepts a file or database item, provided you supply a reference supported by the Kodi installation you are controlling.

The distinction matters because a path that takes Kodi to a movie or episode listing does not necessarily identify one specific item for playback. Kodi’s documented navigation examples establish paths to sections and categories; its API documentation describes playback as a separate operation.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

It also matters where the request originates. An action executed inside Kodi can invoke a built-in directly, while a phone, desktop application, or automation service normally needs to reach Kodi through an enabled JSON-RPC transport. In the latter case, the network endpoint, permissions, and Kodi version become part of the deep-link design.

#1 Best Overall
Sale
ONN Android TV 4K UHD Streaming Device with Voice Remote Control Google Assistant & High Speed HDMI Cable (100026240) Black
  • 4K Ultra HD Resolution: Enjoy your TV in stunning resolution Ultra HD ers four times the resolution of Full HD for greater clarity and detail
  • Android TV: With the Android TV operating system you will have access to the best content, download the infinity of applications available through the Google Play Store!
  • Voice remote control: Just press the Google Assistant button and ask it to find, play and control content
  • Chromecast Built-in: Easily cast movies, shows, and photos from your Android or iOS device to your Android TV
  • Easy Setup: Access your Google account and configure the device, language and Wi-Fi network

Use ActivateWindow to navigate to a Kodi library section

ActivateWindow() opens a Kodi window and can navigate to a subsection by name or path. Kodi’s documented example is:

ActivateWindow(Videos,videodb://movies/titles/)

The path in this example opens the movie-titles view. Other documented library paths include:

  • library://video/
  • videodb://movies/
  • videodb://movies/titles/
  • videodb://tvshows/
  • videodb://recentlyaddedepisodes/

These paths are useful when the desired result is a Kodi browsing screen. For example, a skin action can take a user to movie titles, while a keymap can open a TV-show section. The exact place to configure such an action depends on how the Kodi interface or skin is set up; the documented built-in and paths do not imply that every version or skin offers the same configuration screen.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use this route when a person should continue browsing, filter a collection, or select an item manually. It is also appropriate for a home-screen button that should always land in a known category, such as all movies, TV shows, or recently added episodes. The path identifies the destination view, not necessarily a unique database record.

Do not assume that adding a title, database ID, or guessed suffix to one of these paths will reliably open an individual movie or episode’s detail screen. The documented examples support navigation to the listed sections and categories, not a universal item-level URL convention. If the requirement is to play one item, use the playback API route instead.

Use JSON-RPC Player.Open to start a specific item

Kodi defines Player.Open to start playback of a single file or an item from Kodi’s database. It can also open a playlist or slideshow, but for a single movie or episode the relevant choice is a file or database item reference. The method requires the ControlPlayback permission.

A JSON-RPC request using a file path has this shape:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "jsonrpc": "2.0",
  "method": "Player.Open",
  "params": {
    "item": {
      "file": "/path/to/media/file.mkv"
    }
  },
  "id": 1
}

This is an illustrative request shape, not a verified request for every Kodi installation. The file path must be meaningful to the Kodi host, and the accepted reference depends on the target and Kodi/API version. A path visible on the computer or phone sending the request is not automatically a path Kodi can read.

For a library-backed movie or episode, do not substitute an invented videodb:// string for the item reference. Use a database item reference accepted by the installed API. The form to use depends on what the target Kodi release exposes and what reference you have retrieved. Kodi’s API includes video-library methods and fields for finding movie, episode, and TV-show information; check the local API schema when implementing an integration.

Rank #2
IT'S BRAZILIAN onn 4K Pro Streaming Device, Google TV with Gemini* - Ultra-Fast Streaming, Stunning 4K UHD, 32GB Storage, 3GB RAM, Dolby Vision & Atmos, Find My Remote with Backlight, Ethernet Port
  • Enjoy nextlevel streaming at an affordable price with the onn Google TV 4K Pro Streaming Devicewith Gemini This powerhouse streaming device delivers uncompromising performance and stunning visualstransforming your TV into a premium entertainment hub
  • Immerse yourself in vivid colorssharp contrastand cinematic quality with stunning 4K Ultra HD and Dolby Vision
  • Experience theaterqualitymultidimensional sound with immersive Dolby Atmos Audio
  • Powerful performance with 3GB of RAMis 50% more than the 4K Plus modelfor super smooth app performancefast navigationand seamless multitasking
  • Enjoy incredibly smoothbufferfree streaming and gaming with blazingfast WiFi 6 Connectivity or use the optional Ethernet Port for the feastestreliable connectivity

Think of Player.Open as an instruction to Kodi’s player, not as a web page URL. The JSON-RPC method receives structured parameters, and Kodi resolves them in the context of its own library and file access. A client should therefore avoid hard-coding an assumed representation when it can first discover the item through the target instance.

The same principle applies to episodes. An episode title by itself is not a reliable playback target when several shows or seasons contain similar names. Retrieve the episode entry and use the reference or file value that the installed API returns for that entry. If your application only needs to show the TV library, use the documented TV navigation path instead of forcing a playback call.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Find the right movie or episode before opening it

If you do not already have a usable file path or database reference, query Kodi’s video library first. The JSON-RPC examples include VideoLibrary.GetMovies and VideoLibrary.GetTVShows, which can return titles, files, and other metadata. Kodi also documents methods and fields for video-library information about episodes.

  1. Query the relevant library collection. Use the installed Kodi API’s schema to form the request for movies, TV shows, or episodes. The exact fields and request options should be checked against that installation rather than copied from an assumed version.
  2. Identify the intended entry. Match the returned item using the metadata available to your client. Titles alone may not be enough where a library contains similarly named entries; use the returned identifying information and reference.
  3. Choose the reference for the outcome. For playback, pass an accepted file or database item reference to Player.Open. For browsing, use a documented ActivateWindow path to the appropriate section instead.
  4. Check playback state if confirmation matters. Player.GetActivePlayers can identify active players. Player-control methods require a player to be active; Player.GetItem can retrieve the currently playing item.

A practical client flow is therefore: connect to the Kodi endpoint, request the collection and fields needed to identify the item, select the returned entry, send Player.Open, then inspect player state if the user interface needs confirmation. Store the Kodi-side reference only for as long as it remains valid for that installation and API version; do not present it as a portable URL for every Kodi system.

When matching entries, include enough context to avoid ambiguity. For movies, that can mean using the complete title and other metadata returned by the library. For episodes, distinguish the show and episode entry rather than matching an episode title in isolation. The point is not to invent a new identifier, but to use the identifying information Kodi already returns.

This is an API-derived workflow, not a tested end-to-end recipe for a specific library, operating system, client, or Kodi release. Validate the exact request and item representation against the API schema exposed by the Kodi instance you will control.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Enable a transport when calling Kodi from another app

An external client needs a reachable JSON-RPC transport. Kodi documents HTTP, TCP, WebSocket, and its Python transport. HTTP control must be enabled in Kodi’s settings; the documented HTTP endpoint pattern is http://<your-ip>:<your-port>/jsonrpc, and calls can be sent as HTTP POST requests.

TCP and WebSocket access use Kodi’s configured TCP port. The documentation gives 9090 as the default, but a local configuration can differ, and the relevant access settings must be enabled. Use the actual endpoint and port configured on the Kodi device rather than assuming the default applies.

  1. Enable the transport you intend to use in Kodi’s settings. For HTTP, enable HTTP control; for TCP or WebSocket, enable the corresponding access setting.
  2. Determine the Kodi host’s reachable address and configured port. Use the endpoint configured for that installation. The documented HTTP URL is a pattern, not a literal address to paste unchanged.
  3. Send the JSON-RPC request using that transport. For HTTP, send it as a POST to the configured /jsonrpc endpoint. The request body contains the JSON-RPC method and parameters.
  4. Confirm the method permission and network access. A correctly formed request can still fail if the account or API context lacks the required permission, or if the client cannot reach the Kodi host.

Read-only discovery and playback are separate permission concerns. Library queries need the relevant read access, while Player.Open needs ControlPlayback. Grant only the access the client needs, and test with a harmless library query before attempting playback.

Do not expose a controllable Kodi endpoint to untrusted networks. Remote access is not merely a way to browse metadata: a caller with the required playback permission can direct Kodi to play content. Keep access limited to trusted clients and networks, and use the endpoint and authentication configuration appropriate to your installation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Inside-Kodi actions versus external deep links

Question Inside Kodi External client
What is being invoked? An ActivateWindow built-in or a skin/keymap action A JSON-RPC request sent over an enabled transport
Typical goal Open a section or listing for browsing Find an item and start playback, or query metadata
What must be configured? The Kodi interface, skin, or keymap action Transport, endpoint, network reachability, permissions, and API-compatible parameters
What can be assumed? Only the documented window and library paths Only the item forms accepted by the target Kodi API

This comparison explains why copying an internal path into a phone’s browser or another app usually does not create a complete external deep link. The internal action and the remote API are different interfaces with different inputs.

Which method fits your use case?

Need Use What the reference identifies
Open a movie or TV section in Kodi ActivateWindow with a documented library path A Kodi window or library view, such as movie titles or TV shows
Start a particular movie or episode JSON-RPC Player.Open A file or database item accepted by the installed API
Find a library entry for an external client Video-library JSON-RPC methods, then Player.Open if playback is wanted Library metadata and an item reference available from the target API

The first option is navigation within Kodi. The latter two use JSON-RPC, and an external client also needs a configured, reachable transport. A browsing path and a playback request are not interchangeable.

Choose based on three axes: the desired outcome, the environment, and the reference you possess. “Show the movie library” points to ActivateWindow. “Play this one episode” points to Player.Open. “Let another app choose from Kodi’s library” generally requires a read query first and a playback request second. Then account for transport availability, network reachability, permissions, and the API version.

Common implementation pitfalls

  • Calling every videodb:// string a deep link. The documented paths are navigation examples for sections and categories. They should not be advertised as a universal item-page or playback URL format.
  • Using the sender’s file path. Kodi resolves the file on the Kodi host. A path that exists on the controlling phone or computer may be meaningless to Kodi.
  • Guessing database references. Database IDs and string forms can depend on the installed API. Retrieve or confirm the accepted representation instead of constructing one from a title.
  • Assuming port 9090 is always available. It is the documented TCP default, not a guarantee. Settings and ports can be changed locally.
  • Ignoring permissions. A library query and playback control do not necessarily have the same permission requirement. In particular, Player.Open requires ControlPlayback.
  • Testing only the request syntax. A valid JSON body can still fail because the transport is disabled, the host is unreachable, the player has no access to the file, or the item form is unsupported by that Kodi release.
  • Sending player commands without a player. Check Player.GetActivePlayers before relying on player-control calls, and use Player.GetItem to inspect what is playing.

Troubleshoot a link or request that does not work

Kodi opens a section, but not the specific movie

The request is probably using a navigation path where a playback reference is needed. Use the documented path to reach a listing, or query the library and pass a supported item reference to Player.Open. Do not assume an arbitrary item-specific videodb:// path is portable.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Player.Open returns an error or does not start playback

  • Check that the request uses the JSON-RPC method name and parameter structure expected by the target API schema.
  • Verify that the file path is accessible to Kodi, not merely to the device sending the request.
  • For a database target, retrieve or confirm an item reference supported by the installed Kodi API instead of guessing a string.
  • Confirm that the caller has ControlPlayback permission.
  • Check whether the target is actually the intended movie or episode and whether the returned metadata points to the expected library entry.

An external app cannot reach Kodi

  • Confirm that the chosen transport is enabled in Kodi’s settings.
  • Check the configured host address and port. The HTTP endpoint uses the configured port, and TCP/WebSocket use the configured TCP port; 9090 is the documented default, not a guarantee about a particular setup.
  • Check that the client can reach the Kodi device over the network. A correct JSON request cannot compensate for an unavailable endpoint.
  • Make sure the client is using the right endpoint form: HTTP requests go to the configured /jsonrpc path, while TCP and WebSocket clients use their corresponding configured connection.

A player-control call has no effect

Some player-control commands require an active player. Use Player.GetActivePlayers to check whether one is active; use Player.GetItem to inspect the currently playing item when needed. These checks can help distinguish a failed open request from a command sent when no player is in use.

The wrong title starts

Revisit the discovery step. A title-only match can select an unintended entry when names repeat. Query enough metadata to distinguish the movie, show, season, or episode, then pass the reference associated with that exact returned item.

The same integration works on one Kodi device but not another

Compare the installations rather than treating the first result as a universal format. Check each device’s Kodi/API version, enabled transport, configured port, permissions, library contents, and accepted item representation. Kodi’s documentation does not promise that an assumed item-level string behaves identically everywhere.

How to design a reliable deep-link workflow

  1. Define the user-visible result. Decide whether the link should display a Kodi category or immediately begin playback.
  2. Select the interface. Use ActivateWindow for documented in-Kodi navigation. Use JSON-RPC for an external application or direct playback.
  3. Discover rather than guess. Query the video library when you lack a file path or accepted database reference. Use returned metadata to identify the intended item.
  4. Validate access before playback. Confirm the transport, host, port, and required permissions. A read-only test can establish that the endpoint is reachable before a control request is attempted.
  5. Open the item. Send Player.Open with the file or database item form supported by the target Kodi API.
  6. Confirm state when the application needs feedback. Use Player.GetActivePlayers and, when appropriate, Player.GetItem to verify that playback is active and that Kodi selected the expected item.
  7. Handle differences explicitly. Keep the Kodi version and local schema in your compatibility checks, and avoid documenting an internal path as if it were an Internet-wide URL.

This sequence separates user intent, discovery, control, and confirmation. It also makes failures easier to diagnose: a problem can be in navigation, library matching, transport, permission, item representation, or playback state rather than in one vaguely defined “deep link.”

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What to verify for a production integration

Kodi’s documented mechanisms provide the basic distinction: built-in navigation for library views and JSON-RPC for playback. They do not establish one universal item-page link that behaves identically across all installations. Before relying on an integration, validate the local API schema, permissions, transport configuration, and exact item representation on the Kodi release it will control. The examples above explain the request patterns and workflow; they have not been executed against a particular user library or remote client.

Document the assumptions your application actually makes: whether it controls Kodi locally or over a network, which transport is enabled, which endpoint and port are configured, what permission scope is required, and whether the target is a file or a database item. If a device changes its library or Kodi version, repeat the discovery and compatibility checks instead of preserving a guessed string indefinitely.

Frequently asked questions

Can I use a videodb:// URL to open any individual movie?

Not as a universal external URL convention. Kodi documents videodb:// examples for navigating to sections and categories. For a specific playback target, query the library if necessary and use Player.Open with an item reference accepted by that Kodi installation.

What is the simplest way to open the movie list inside Kodi?

Use the documented built-in with a movie library path, such as ActivateWindow(Videos,videodb://movies/titles/). That opens a browsing view; it does not promise to start a particular title.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I start one episode from another application?

Enable a JSON-RPC transport, query the video library if you need to identify the episode, and call Player.Open with the supported file or database item reference. The external client also needs network access and ControlPlayback permission.

Do I need JSON-RPC for a skin button or keymap?

Not when the goal is simply to navigate to a documented library section inside Kodi. A skin or keymap can use the ActivateWindow built-in. JSON-RPC is the relevant route when another application must control Kodi or begin playback programmatically.

Is TCP port 9090 required?

No. Kodi documents 9090 as the default TCP port, but the configured port can differ. Use the port and access settings actually enabled on the target installation.

Why does a file request work from one computer but not another?

Player.Open is executed by Kodi, so the file reference must be usable by the Kodi host. A path that exists only on the sending device is not automatically readable by Kodi.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What permission does playback need?

The API reference identifies ControlPlayback as the permission required by Player.Open. Library discovery uses the relevant read permission for the methods being called.

Best Value
Google TV Streamer 4K - Fast Streaming Entertainment on Your Device with Voice Search Remote - Watch Movies, Shows, Live, and Netflix in HDR - Smart Home Control - 32 GB of Storage - Hazel
  • The Google TV Streamer (4K) delivers your favorite entertainment quickly, easily, and personalized to you[1,2]
  • HDMI 2.1 cable required (sold separately)
  • See movies and TV shows from all your services right from your home screen[2]; and find new things to watch with tailored recommendations for everyone in your home based on their interests and viewing habits
  • Watch live TV and access over 800 free channels from Pluto TV, Tubi, and more[3]; if you find an interesting show or movie on your TV, mobile app, or Google search, you can easily add it to your watchlist, so it’s ready when you are[2]
  • Up to 4K HDR with Dolby Vision delivers captivating, true-to-life detail[4]; and you can connect speakers that support Dolby Atmos for more immersive 3D sound

How can I tell whether Kodi actually started playback?

Call Player.GetActivePlayers to see whether a player is active. Player.GetItem can then retrieve information about the currently playing item. These checks are useful when the calling application needs confirmation.

Will the same item reference work on every Kodi version?

Do not assume that it will. The accepted item representation and available fields depend on the installed API and library. Check the schema exposed by the Kodi release you are integrating with and validate the reference on that installation.

Frequently Asked Questions

Can I use a videodb:// URL to open any individual movie?

Not as a universal external URL convention. Kodi documents videodb:// examples for navigating sections and categories; use Player.Open with an accepted file or database item reference for specific playback.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I open a movie or episode from another app?

Enable HTTP, TCP, or WebSocket access, discover the library item if needed, and call JSON-RPC Player.Open. Confirm network reachability and the ControlPlayback permission.

What is the difference between ActivateWindow and Player.Open?

ActivateWindow navigates Kodi to a window or library view. Player.Open instructs Kodi to start a file or database item.

Is port 9090 always the right Kodi port?

No. It is the documented TCP default. Use the port configured on the target Kodi installation.

Why does my file path fail?

Kodi must be able to access the path on the Kodi host. A path that exists only on the device sending the request will not work automatically.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How can I verify playback started?

Use Player.GetActivePlayers to check for an active player and Player.GetItem to inspect the current item.

The Bottom Line

Use ActivateWindow and documented videodb:// paths to navigate Kodi’s library views. Use JSON-RPC Player.Open to start a specific movie or episode, discovering a supported file or database reference when necessary. For external control, configure a transport, use the actual endpoint and port, grant only the required permissions, and validate the item representation against the Kodi version you control.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.