Skip to content

Playback API ​

English API reference for the playback family.

This page is the primary owner for the namespaces listed below. Method names, parameter keys, and return fields follow the C++ RegisterApi handlers.

playback ​

playback.getCurrentTrack ​

No parameters.

Returns: {"found":"...","playing":"...","success":true}

js
const result = await fb2k.invoke('playback.getCurrentTrack');

playback.getCurrentTrackIndex ​

ParameterTypeRequiredDefaultDescription
includeTrackInfobooleanNofalseIncludes the full track info object.

Returns: {"found":true,"index":0,"playlist":0,"success":true,"track":{}}

js
const { playlist, index } = await fb2k.invoke('playback.getCurrentTrackIndex');

playback.getPlaybackOrder ​

No parameters.

Returns: {"name":"...","order":"...","orderIndex":"...","orderName":"..."}

js
const result = await fb2k.invoke('playback.getPlaybackOrder');

playback.getPlayingPlaylist ​

No parameters.

Returns: {"found":"...","name":"...","playlist":"...","success":true}

js
const result = await fb2k.invoke('playback.getPlayingPlaylist');

playback.getPosition ​

No parameters.

Returns: {"duration":"...","path":"...","position":"...","subsong":"..."}

js
const result = await fb2k.invoke('playback.getPosition');

playback.getState ​

No parameters.

Returns: {"canPause":"...","canSeek":"...","state":"..."}

js
const result = await fb2k.invoke('playback.getState');

playback.getStopAfterCurrent ​

No parameters.

Returns: {"enabled":"..."}

js
const result = await fb2k.invoke('playback.getStopAfterCurrent');

playback.getVolume ​

No parameters.

Returns: {"isMuted":"...","muted":"...","volume":"...","volumeDb":"..."}

js
const result = await fb2k.invoke('playback.getVolume');

playback.mute ​

ParameterTypeRequiredDefaultDescription
mutedbooleanNotruefalse unmutes.

Returns: {"success":true}

js
await fb2k.invoke('playback.mute', { muted: true });

playback.next ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.next');

playback.pause ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.pause');

playback.play ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.play');

playback.playOrPause ​

No parameters.

Returns: {"isPlaying":"...","success":true}

js
const result = await fb2k.invoke('playback.playOrPause');

playback.playPath ​

ParameterTypeRequiredDescription
pathstringYesFile path to play; a missing or empty value returns path is required.

Returns: {"error":"...","path":"...","subsong":"...","success":true,"tracksAdded":"..."}

js
await fb2k.invoke('playback.playPath', { path: 'C:\\Music\\song.flac' });

Use a path|subsong:N value to address a CUE subsong explicitly. The handler separates the file path from the optional subsong suffix before playback.

playback.playPaths ​

ParameterTypeRequiredDefaultDescription
pathsarray<string>Yes—File paths or URLs.
startIndexintegerNo0Index to start playing after the add.
replacebooleanNofalseReplaces existing content instead of appending.

Returns: {"error":"...","startedAt":"...","success":true,"tracksAdded":"..."}

js
await fb2k.invoke('playback.playPaths', { paths: ['C:\\Music\\a.flac', 'C:\\Music\\b.flac'] });

playback.playPause ​

No parameters.

Returns: {"isPlaying":"...","success":true}

js
const result = await fb2k.invoke('playback.playPause');

playback.previous ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.previous');

playback.random ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.random');

playback.setPlaybackOrder ​

ParameterTypeRequiredDescription
orderinteger | stringNoOrder index or name. Default 0 (default).

Returns: { "success": true, "order": 3, "orderName": "random" }

Accepts either the index or the name: 0 default, 1 repeat-playlist, 2 repeat-track, 3 random, 4 shuffle-tracks, 5 shuffle-albums, 6 shuffle-folders. An unrecognized name falls back to 0. An out-of-range index is passed through unvalidated and echoed back in order, with orderName reported as default — read the returned pair to confirm what took effect.

js
await fb2k.invoke('playback.setPlaybackOrder', { order: 'random' });

playback.setPosition ​

ParameterTypeRequiredDefaultDescription
positionnumberNo0Target position in seconds.
secondsnumberNo0Alias of position; ignored when position is present.

Returns: {"actualPosition":"...","duration":"...","error":"...","newPosition":"...","oldPosition":"...","requestedPosition":"...","subsong":"...","success":true}

js
await fb2k.invoke('playback.setPosition', { position: 42.5 });

playback.setStopAfterCurrent ​

ParameterTypeRequiredDefaultDescription
enabledbooleanNofalse

Returns: {"enabled":"...","success":true}

js
await fb2k.invoke('playback.setStopAfterCurrent', { enabled: true });

playback.setVolume ​

ParameterTypeRequiredDefaultDescription
volumenumberNo100Volume percent (0-100).

Returns: {"success":true}

js
await fb2k.invoke('playback.setVolume', { volume: 80 });

playback.stop ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.stop');

playback.toggleMute ​

No parameters.

Returns: {"muted":"...","success":true}

js
const result = await fb2k.invoke('playback.toggleMute');

playback.toggleStopAfterCurrent ​

No parameters.

Returns: {"enabled":"..."}

js
const result = await fb2k.invoke('playback.toggleStopAfterCurrent');

playback.volumeDown ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.volumeDown');

playback.volumeUp ​

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('playback.volumeUp');

Related event playback:stopAfterCurrentChanged uses payload { enabled } (same field name as the API).