Java client for the Voice Box Karaoke API.
Voice Box Karaoke is a private-room karaoke platform (voiceboxpdx.com). vbclient is the Java SDK that wraps its HTTP API — searching the song catalog, managing per-room sessions and queues, posting popups, controlling room lights and audio, sending current-song commands, validating room codes, handling service calls, and collecting feedback. As of 0.3.0 it covers the full karaoke API surface. It's used by the [DJ VoxBox] Spring Boot backend.
- Java 17
- Maven
- Spring Boot 3.2 (the library uses Spring's
RestTemplatefor HTTP)
<dependency>
<groupId>com.vpo</groupId>
<artifactId>vbclient</artifactId>
<version>0.3.0</version>
</dependency>All clients share the same constructor pattern. root overrides the API base URL (defaults to https://voiceboxpdx.com); organization is the 32-character org identifier required for every call.
String org = "00000000000000000000000000000000"; // your 32-char org IDSongClient songs = new SongClient(null, org);
Search results = songs.findSongs(new Search("love"));
Song song = songs.getSongById(68733);
TagList tags = songs.tags();
LanguageList languages = songs.languages();
List<AutocompleteSuggestion> suggestions = songs.autocomplete("lov");
List<Song> random = songs.roulette(new RouletteRequest());
SongStats stats = songs.stats();
songs.requestSong(new SongRequest("Beatles", "Let It Be"), session);SessionClient sessions = new SessionClient(null, org);
Session s = new Session();
s.setHandle("Alice");
s.setSession(UUID.randomUUID().toString());
Session created = sessions.createSession(s);
sessions.postPopup(created, "CQFW", "Hello room!");
sessions.controlLights("CQFW", 2);QueueClient queue = new QueueClient(null, org);
Queue current = queue.getQueue("CQFW");
queue.addSong(new PlayRequest(/* ... */));
queue.reorder("CQFW", "0", "1");CurrentSongClient current = new CurrentSongClient(null, org);
current.pause("CQFW");
current.resume("CQFW");
current.skip("CQFW");
current.restart("CQFW");
current.setAudio("CQFW", 75, 0, null); // volume, pitch_shift, channelsRoomClient rooms = new RoomClient(null, org);
Room room = rooms.getRoom("CQFW");
ServiceCall call = rooms.getServiceCall("CQFW");
rooms.setServiceCall(session, "CQFW", ServiceCall.STATE_REQUESTED);FeedbackClient feedback = new FeedbackClient(null, org);
List<FeedbackPrompt> prompts = feedback.getPrompts(session, "CQFW");
feedback.submit(session, "CQFW", List.of(
new FeedbackResponse(prompts.get(0).getGuid(), 5, "great room")));Room codes (e.g. "CQFW") identify a karaoke room within the organization.
mvn clean verifyThe same command runs on every push and pull request via GitHub Actions.
0.3.0brings the library to full parity with the karaoke API: addsRoomClient,CurrentSongClient,FeedbackClient, and newSongClientmethods (autocomplete,roulette,stats,requestSong), plus profile/queue/search fields that the prior models didn't expose.0.2.0migrated the library to Spring Boot 3.2, Java 17, and JUnit 5.- Prior
0.1.xreleases targeted Spring Boot 1.x / Java 7 / JUnit 4.