Skip to content

Queue API

English API reference for the jitQueue, queue, selection family.

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

jitQueue

jitQueue.clear

Public API method. Runtime authority: src/api/QueueApi.cpp:660.

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('jitQueue.clear');

jitQueue.enqueueNext

Public API method. Runtime authority: src/api/QueueApi.cpp:657.

ParameterTypeRequiredDescription
titlestringNoOptional; default .
trackIdstringNoOptional; default .
urlstringNoOptional; default .

Returns: {"bufferSize":"...","error":"...","success":true,"trackId":"..."}

js
const result = await fb2k.invoke('jitQueue.enqueueNext', { title: /* value */, trackId: /* value */, url: /* value */ });

jitQueue.getState

Public API method. Runtime authority: src/api/QueueApi.cpp:661.

No parameters.

Returns: {"bufferSize":"...","currentTrackId":"...","isActive":"...","nextTrackId":"...","shadowPlaylist":"...","state":"..."}

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

jitQueue.notifyEmpty

Public API method. Runtime authority: src/api/QueueApi.cpp:662.

No parameters.

Returns: {"success":true}

js
const result = await fb2k.invoke('jitQueue.notifyEmpty');

jitQueue.playNow

Public API method. Runtime authority: src/api/QueueApi.cpp:656.

ParameterTypeRequiredDescription
titlestringNoOptional; default .
trackIdstringNoOptional; default .
urlstringNoOptional; default .

Returns: {"error":"...","shadowPlaylist":"...","success":true,"trackId":"..."}

js
const result = await fb2k.invoke('jitQueue.playNow', { title: /* value */, trackId: /* value */, url: /* value */ });

jitQueue.preloadBatch

Source-reviewed contract

Authority: src/api/QueueApi.cpp:600-645.

ParameterTypeRequiredDefault
urlsarray<string>No[]
startIndexintegerNo0
replacebooleanNotrue

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

Semantics: The handler accepts an omitted URLs array, delegates batch construction to QueueManager, and returns its success/error result. replace defaults to clearing the JIT buffer before preload; URL/path validity is evaluated by QueueManager.

Public API method. Runtime authority: src/api/QueueApi.cpp:663.

ParameterTypeRequiredDescription
urlsarray<string>NoOptional; default [].
startIndexintegerNoOptional; default 0.
replacebooleanNoOptional; default true.
js
const result = await fb2k.invoke('jitQueue.preloadBatch', { replace: /* value */, startIndex: /* value */, urls: /* value */ });

jitQueue.skip

Public API method. Runtime authority: src/api/QueueApi.cpp:658.

No parameters.

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

js
const result = await fb2k.invoke('jitQueue.skip');

jitQueue.stop

Public API method. Runtime authority: src/api/QueueApi.cpp:659.

ParameterTypeRequiredDescription
clearBufferbooleanNoOptional; default true.

Returns: {"success":true}

js
const result = await fb2k.invoke('jitQueue.stop', { clearBuffer: /* value */ });

queue

queue.add

Source-reviewed contract

Authority: src/api/QueueApi.cpp:221-261.

ParameterTypeRequiredDefault
playlistintegerNoactive playlist
tracksarray<integer>No[]
trackintegerNonot supplied

Return keys (vary by response variant): error, success; addedCount, queueCount, success

Semantics: playlist defaults to the active playlist. tracks takes precedence when it is an array; otherwise track is used. Invalid playlist or item indices produce a false result without queueing an item.

Public API method. Runtime authority: src/api/QueueApi.cpp:471.

ParameterTypeRequiredDescription
playlistintegerNoOptional; default active playlist.
tracksarray<integer>NoOptional; default [].
trackintegerNoOptional; default not supplied.

| --- | --- | --- | --- | | playlist | integer | No | Optional; default active playlist. | | tracks | array<integer> | No | Optional; default []. | | track | integer | No | Optional; default not supplied. |

Returns: {"addedCount":"...","error":"...","queueCount":"...","success":true}

js
const result = await fb2k.invoke('queue.add', { playlist: /* value */, track: /* value */, tracks: /* value */ });

queue.addPaths

Source-reviewed contract

Authority: src/api/QueueApi.cpp:266-337.

ParameterTypeRequiredDefault
pathsarray<string>No[]
useQueuePlaylistbooleanNotrue
playlistintegerNoactive playlist when useQueuePlaylist is false

Return keys (vary by response variant): error, success; error, success; error, success; error, isLocked, playlist, success; error, invalidCount, success; addedCount, invalidCount, playlist, queueCount, success

Semantics: An empty paths array fails. The registration protects paths as a non-empty MediaRead array; each path is parsed for an optional subsong suffix, rejects oversized streams, then resolves to queueable handles. The handler rejects locked target playlists.

Public API method. Runtime authority: src/api/QueueApi.cpp:472.

ParameterTypeRequiredDescription
pathsarray<string>NoOptional; default [].
useQueuePlaylistbooleanNoOptional; default true.
playlistintegerNoOptional; default active playlist when useQueuePlaylist is false.

Returns: {"addedCount":"...","error":"...","invalidCount":"...","isLocked":"...","playlist":"...","queueCount":"...","success":true}

js
const result = await fb2k.invoke('queue.addPaths', { paths: /* value */, playlist: /* value */, useQueuePlaylist: /* value */ });

queue.clear

Public API method. Runtime authority: src/api/QueueApi.cpp:474.

No parameters.

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

js
const result = await fb2k.invoke('queue.clear');

queue.flush

Public API method. Runtime authority: src/api/QueueApi.cpp:479.

No parameters.

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

js
const result = await fb2k.invoke('queue.flush');

queue.get

Public API method. Runtime authority: src/api/QueueApi.cpp:470.

No parameters.

Returns: {"count":"...","items":"..."}

js
const result = await fb2k.invoke('queue.get');

queue.getCount

Public API method. Runtime authority: src/api/QueueApi.cpp:475.

No parameters.

Returns: {"count":"...","hasItems":"..."}

js
const result = await fb2k.invoke('queue.getCount');

queue.moveToTop

Source-reviewed contract

Authority: src/api/QueueApi.cpp:422-459.

ParameterTypeRequiredDefault
indexintegerNonot supplied

Return keys (vary by response variant): error, success; movedIndex, queueCount, success

Semantics: index must identify a non-first item in a non-empty queue. The operation rebuilds the native queue with that item first, so queue order—not playlist membership—is changed.

Public API method. Runtime authority: src/api/QueueApi.cpp:476.

ParameterTypeRequiredDescription
indexintegerNoOptional; default not supplied.

Returns: {"error":"...","movedIndex":"...","queueCount":"...","success":true}

js
const result = await fb2k.invoke('queue.moveToTop', { index: /* value */ });

queue.remove

Source-reviewed contract

Authority: src/api/QueueApi.cpp:341-392.

ParameterTypeRequiredDefault
indexintegerNonot supplied
indicesarray<integer>No[]

Return keys (vary by response variant): error, success; error, success; queueCount, removedIndex, success; queueCount, removedCount, success; error, success

Semantics: The handler prefers index when present; otherwise it removes distinct valid entries from indices. An empty queue, invalid single index, or neither field returns success:false with an error.

Public API method. Runtime authority: src/api/QueueApi.cpp:473.

ParameterTypeRequiredDescription
indexintegerNoOptional; default not supplied.
indicesarray<integer>NoOptional; default [].

Returns: {"error":"...","queueCount":"...","removedCount":"...","removedIndex":"...","success":true}

js
const result = await fb2k.invoke('queue.remove', { index: /* value */, indices: /* value */ });

selection

selection.get

Source-reviewed contract

Authority: src/api/SelectionApi.cpp:192-250.

ParameterTypeRequiredDefault
offsetintegerNo0
limitintegerNo100

Returns: {"count":0,"handles":"...","hasMore":true,"offset":"...","truncated":"...","type":"..."}

Semantics: Selection paging uses offset and a bounded limit in the selection service. The method observes global selection state and does not mutate the active playlist.

Public API method. Runtime authority: src/api/SelectionApi.cpp:406.

ParameterTypeRequiredDescription
offsetintegerNoOptional; default 0.
limitintegerNoOptional; default 100.
js
const result = await fb2k.invoke('selection.get', { limit: /* value */, offset: /* value */ });

selection.getType

Source-reviewed contract

Authority: src/api/SelectionApi.cpp:255-278.

No public parameters.

Return keys (vary by response variant): type, typeName

Semantics: No request fields are read. The returned numeric type and typeName describe the current foobar2000 selection source.

Public API method. Runtime authority: src/api/SelectionApi.cpp:407.

No parameters.

Returns: {"type":"...","typeName":"..."}

js
const result = await fb2k.invoke('selection.getType');

selection.getViewerMode

Public API method. Runtime authority: src/api/SelectionApi.cpp:404.

No parameters.

Returns: {"mode":"..."}

js
const result = await fb2k.invoke('selection.getViewerMode');

selection.getViewingTrack

Public API method. Runtime authority: src/api/SelectionApi.cpp:405.

ParameterTypeRequiredDescription
includeTrackInfobooleanNoOptional; default false.

Returns: {"found":true,"handle":"...","itemIndex":"...","mode":"...","playlistIndex":"...","source":"...","success":true,"track":{}}

js
const result = await fb2k.invoke('selection.getViewingTrack', { includeTrackInfo: /* value */ });

selection.set

Source-reviewed contract

Authority: src/api/SelectionApi.cpp:283-361.

ParameterTypeRequiredDefault
handlesarray<object or string>Yesnone

Return keys (vary by response variant): error, success; error, success; error, success; count, success; error, success; error, success

Semantics: handles is required and must be an array. Each item is resolved to a media handle by the selection service; conversion failures are reported by the false/error response variant.

Public API method. Runtime authority: src/api/SelectionApi.cpp:408.

ParameterTypeRequiredDescription
handlesarray<object or string>YesRequired.

| --- | --- | --- | --- | | handles | array<object\\\|string> | Yes | | Required. |

Returns: {"count":"...","error":"...","success":true}

js
const result = await fb2k.invoke('selection.set', { handles: /* value */ });

selection.setPlaylistTracking

Public API method. Runtime authority: src/api/SelectionApi.cpp:409.

ParameterTypeRequiredDescription
modestringNoOptional; default selection.

Returns: {"error":"...","mode":"...","success":true}

js
const result = await fb2k.invoke('selection.setPlaylistTracking', { mode: /* value */ });

Selection behavior

selection.getViewerMode returns either prefer_playing or prefer_selection. selection.getViewingTrack applies that preference, falling back to the other source when the preferred source has no track. selection:changed is broadcast by src/selection/SelectionWatcher.cpp after a selection update; its documented payload is maintained in the event reference.

Paths supplied to queue.addPaths or JIT Queue batch operations may use the path|subsong:N form when a specific subsong must be selected.

JIT Queue events

src/core/QueueManager.cpp emits these events while it maintains the JIT shadow playlist. Subscribe before issuing operations when the frontend needs to refill or observe that buffer.

EventMeaningPayload keys
jitQueue:needNextThe manager needs the next logical track.{ currentTrackId, reason }
jitQueue:trackChangedThe JIT current track changed.{ trackId, title }
jitQueue:listExhaustedThe frontend reported that no additional tracks are available.{ lastTrackId }
jitQueue:preloadCompleteA batch preload completed.{ count, startIndex, replace }
jitQueue:errorA JIT operation failed for a track.{ trackId, error, path }

Contract supplements

The sections below close public-contract findings from the strict parameter audit without replacing existing explanations.

Contract supplement: jitQueue.preloadBatch

Verified contract supplement. Runtime authority: src/api/QueueApi.cpp:600-645.

ParameterTypeRequiredDefaultDescription
urlsarray<string>No[]Optional; default [].
startIndexintegerNo0Optional; default 0.
replacebooleanNotrueOptional; default true.

Return fields

FieldTypeOptional
errorstringYes
successbooleanNo

Semantics: omitted optional parameters use handler defaults; failure branches and error fields are defined by this source file.

js
const result = await fb2k.invoke('jitQueue.preloadBatch', { urls: /* value */, startIndex: /* value */, replace: /* value */ });