Skip to content

Audio Player API

audioPlayer is the playback namespace exported from plugin.ts and typed as AudioPlayerApi.

interface AudioPlayerApi {
setup(options?: SetupOptions): Promise<void>;
add(options: AddOptions): Promise<PlaybackSnapshot>;
remove(options: RemoveOptions): Promise<PlaybackSnapshot>;
reset(): Promise<PlaybackSnapshot>;
play(): Promise<void>;
pause(): Promise<void>;
stop(): Promise<void>;
seekTo(options: SeekToOptions): Promise<void>;
skipTo(options: SkipToOptions): Promise<PlaybackSnapshot>;
skipToNext(): Promise<void>;
skipToPrevious(): Promise<void>;
getState(): Promise<PlaybackState>;
getPosition(): Promise<number>;
getDuration(): Promise<number | null>;
getCurrentTrack(): Promise<Track | null>;
getQueue(): Promise<QueueSnapshot>;
getSnapshot(): Promise<PlaybackSnapshot>;
getCapabilities(): Promise<BindingCapabilitiesSnapshot>;
addListener<E extends AudioPlayerEventName>(
eventName: E,
listener: AudioPlayerListener<E>
): Promise<BindingListenerHandle>;
removeAllListeners(): Promise<void>;
}
GroupMethods
Setupsetup
Queue mutationadd, remove, reset, skipTo, skipToNext, skipToPrevious
Transportplay, pause, stop, seekTo
QueriesgetState, getPosition, getDuration, getCurrentTrack, getQueue, getSnapshot, getCapabilities
EventsaddListener, removeAllListeners
MethodParameterTypeRequiredDescription
setupoptions.headerGroupsHeaderGroup[]Shared header groups for tracks that reference headerGroupId.
addoptions.tracksTrack[]Tracks to append.
addoptions.startIndexnumberInitial active index after insertion.
removeoptions.idstringQueue item id to remove.
removeoptions.indexnumberQueue index to remove.
seekTooptions.positionnumberTarget playback position.
skipTooptions.indexnumberQueue index to activate.

plugin.ts accepts native bridge return variants and normalizes them before returning to callers:

  • add/remove/reset/skipTo/getSnapshot: unwrap { snapshot } or direct snapshot.
  • getState: unwrap { state } or direct state.
  • getPosition/getDuration/getCurrentTrack/getQueue: unwrap wrapped/object responses where present.
await audioPlayer.setup();
await audioPlayer.add({ tracks: [{ id: 't1', url: 'https://example.com/t1.mp3' }] });
await audioPlayer.play();