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
ActivateWindowwith 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.
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
- 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.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →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.
{
"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
- 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.
Recommended Free Tools
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.
- 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.
- 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.
- Choose the reference for the outcome. For playback, pass an accepted file or database item reference to
Player.Open. For browsing, use a documentedActivateWindowpath to the appropriate section instead. - Check playback state if confirmation matters.
Player.GetActivePlayerscan identify active players. Player-control methods require a player to be active;Player.GetItemcan 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.
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.
- 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.
- 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.
- Send the JSON-RPC request using that transport. For HTTP, send it as a POST to the configured
/jsonrpcendpoint. The request body contains the JSON-RPC method and parameters. - 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.
Rank #3
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.
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.OpenrequiresControlPlayback. - 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.GetActivePlayersbefore relying on player-control calls, and usePlayer.GetItemto 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.
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
ControlPlaybackpermission. - 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;
9090is 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
/jsonrpcpath, 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
- Define the user-visible result. Decide whether the link should display a Kodi category or immediately begin playback.
- Select the interface. Use
ActivateWindowfor documented in-Kodi navigation. Use JSON-RPC for an external application or direct playback. - 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.
- 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.
- Open the item. Send
Player.Openwith the file or database item form supported by the target Kodi API. - Confirm state when the application needs feedback. Use
Player.GetActivePlayersand, when appropriate,Player.GetItemto verify that playback is active and that Kodi selected the expected item. - 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.”
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsRank #4
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.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →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.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWhat 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
- 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.
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.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallHow 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.
Quick Recap
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.

