API for Third-Party Apps & Services

  • Updated

Developers of third-party apps and services can leverage Infuse’s powerful video playback features to play, bookmark, download, and monitor playback status using flexible URL schemes. Support for x-callback is also available which allows for returning back to another app once an action has been completed.

Available platforms: iPhone, iPad, Apple TV, Mac, and Vision

Infuse version: 8.4.7 (or later)

Sending Videos to Infuse for Playback

Play one or more videos and return to another app when finished

infuse://x-callback-url/play?url=https://files.firecore.com/infuse/sample-5s-360p.mp4&
position=0&
filename=Inception-2010.mp4&
sub=https://files.firecore.com/infuse/example.srt&
url=https://files.firecore.com/infuse/mov_bbb.mp4&
position=6&
filename=Mad-Men-S01-E01.mp4&
sub=https://files.firecore.com/infuse/example2.srt&
x-success=some-app://success&
x-error=some-app://error

Success and error reporting

x-success

some-app://success?lastPlayedUrl=https://files.firecore.com/infuse/mov_bbb.mp4&
position=8

x-error

some-app://error?errorCode=100&
errorMessage=Unsupported%20content&
failedUrl=invalid_url1&
failedUrl=invalid_url2

Notes

  • Supports single or multiple url entries
  • Subtitle, filename, and position parameters are optional
  • Specifying a filename can help provide accurate metadata when using one of the recommended file naming styles
  • Specifying a position value (expressed as an integer number of seconds) will cause the video to start/resume from the specified position
  • All URLs are played sequentially as a temporary playlist
  • x-success is not called for each individual URL in the list, but once when playlist playback ends or when the player is closed. Returns last URL + position (in seconds).
  • x-error is called once and returns failed URLs (invalid or playback errors)

Saving Links in Infuse for Playback and/or Download

Save (bookmark) one or more video URL to play later

infuse://x-callback-url/save?
url=https://files.firecore.com/infuse/sample-5s-360p.mp4&
filename=Inception-2010.mp4&
sub=https://files.firecore.com/infuse/example1.srt&
url=https://files.firecore.com/infuse/mov_bbb.mp4&
filename=Mad-Men-S01-E01.mp4&
sub=https://files.firecore.com/infuse/example2.srt&
download=0&
x-success=some-app://success&
x-error=some-app://error

Success and error reporting

x-success

some-app://success

x-error

some-app://error?errorCode=100&
errorMessage=Unsupported%20content&
failedUrl=invalid_url1&
failedUrl=invalid_url2

Notes

  • Supports single or multiple url entries
  • Subtitle and filename parameters are optional
  • Specifying a filename can help provide accurate metadata when using one of the recommended file naming styles
  • Download parameter can be used to begin downloading files for offline playback (0=save link only, 1=save link and download)
  • Download parameter applies to the entire request
  • x-success has no parameters
  • x-error is called once and returns failed URLs (EG invalid links)

URL Encoding

Per the x-callback-url spec, all querystring values should be url-safe or encoded. Unencoded URLs may work in some cases, but when using actions with multiple parameters or URLs with multiple keys you will probably need to manually encode your URLs.

Examples

Unencoded URL

http://192.168.162.100/Movies/movie.mkv

Encoded URL

http%3A%2F%2F192.168.162.100%2FMovies%2Fmovie.mkv

Deep Linking to Infuse Library Items

Apps can link directly to items in the Infuse library using the appropriate TMDB ID numbers. Note: If a title is not present in the library, a placeholder page with TMDB data will be shown.

Link to a movie

infuse://movie/{tmdb_id}

Link to a TV series

infuse://series/{tmdb_id}

Link to a TV series season

infuse://series/{tmdb_id}-{season_number}

Link to a TV series episode

infuse://series/{tmdb_id}-{season_number}-{episode_number}

Optional

Add the ?play parameter to the end of a deep link to automatically start playback of the linked library item.

Example

infuse://movie/1327819?play

Now Playing Status

Infuse can advertise a read-only Now Playing service on the local network, letting other apps see what is currently playing - regardless of the source (NAS, Plex, Jellyfin, etc.). This allows other 3rd party apps or services to read details about what is being played in Infuse at any given moment.

Note: The feature is disabled by default, but can be enabled in Infuse > Settings > Playback > Now Playing API. Requires Infuse 8.5.9 or later.

Discovery

Spec Value
Service type _infuse-np._tcp
Domain local.
Instance name Infuse (device name)
Port ephemeral - always read from the SRV record

Endpoint

GET /nowplaying
HTTP/1.1, unencrypted, Connection: close
200 + JSON body; 400 malformed request; 404 any other method/path

Response fields

Field Description
state playing, paused, or idle (nothing playing)
positionSeconds Current playback position, seconds
durationSeconds Total duration, seconds
item Playback item details; null when state is idle

Example

{
  "state": "playing" | "paused" | "idle",
  "positionSeconds": double | null,
  "durationSeconds": double | null,
  "item": {
    "kind": "movie" | "episode",
    "tmdbID": string | null,
    "imdbID": string | null,
    "tvdbID": string | null,
    "season": int | null,
    "episode": int | null,
    "title": string | null,
    "seriesTitle": string | null
  } | null
}

Item fields

Field Description
kind movie or episode
tmdbID TMDB ID — movie ID for movies, series ID for episodes
imdbID IMDb ID (e.g. “tt0133093”), when available
tvdbID TVDB ID, when available
season / episode Season and episode numbers (episodes)
title Title; falls back to file name for unidentified items
seriesTitle Series title (episodes only)
Share this article

Was this article helpful?

82 out of 130 found this helpful

Have more questions? Submit a request