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://errorSuccess 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.mkvEncoded URL
http%3A%2F%2F192.168.162.100%2FMovies%2Fmovie.mkvDeep 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?playNow 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) |