[GH-ISSUE #1085] Subsonic API #636

Closed
opened 2026-02-26 02:33:48 +03:00 by kerem · 19 comments
Owner

Originally created by @alex-phillips on GitHub (Sep 17, 2019).
Original GitHub issue: https://github.com/koel/koel/issues/1085

More of a feature request than an issue. Would you be willing to accept a PR that implements the subsonic API into koel?

Originally created by @alex-phillips on GitHub (Sep 17, 2019). Original GitHub issue: https://github.com/koel/koel/issues/1085 More of a feature request than an issue. Would you be willing to accept a PR that implements the subsonic API into koel?
Author
Owner

@phanan commented on GitHub (Sep 18, 2019):

Hey! TBH I'm not familiar with Subsonic. What extra capabilities will it bring?

<!-- gh-comment-id:532598242 --> @phanan commented on GitHub (Sep 18, 2019): Hey! TBH I'm not familiar with Subsonic. What extra capabilities will it bring?
Author
Owner

@alex-phillips commented on GitHub (Sep 18, 2019):

It's another self hosted music app but it's got a standard API that a lot of mobile apps use. This will essentially make it so you can use any of the mobile apps with koel.

For android, I use dsub.

<!-- gh-comment-id:532621414 --> @alex-phillips commented on GitHub (Sep 18, 2019): It's another self hosted music app but it's got a standard API that a lot of mobile apps use. This will essentially make it so you can use any of the mobile apps with koel. For android, I use dsub.
Author
Owner

@phanan commented on GitHub (Sep 18, 2019):

That sounds great. How exactly will the integration/implementation look like, though?

<!-- gh-comment-id:532690174 --> @phanan commented on GitHub (Sep 18, 2019): That sounds great. How exactly will the integration/implementation look like, though?
Author
Owner

@alex-phillips commented on GitHub (Sep 18, 2019):

Here are the docs on the subsonic API: http://www.subsonic.org/pages/api.jsp

Obviously the endpoints will need to match, so although it would be nice, we wouldn't be able to do a 'subsonic' path prefix. Also, it looks like the response is all XML output. I know Koel uses JSON currently, so XML support would be added in. Again, this would only be for the subsonic endpoints though.

<!-- gh-comment-id:532693642 --> @alex-phillips commented on GitHub (Sep 18, 2019): Here are the docs on the subsonic API: http://www.subsonic.org/pages/api.jsp Obviously the endpoints will need to match, so although it would be nice, we wouldn't be able to do a 'subsonic' path prefix. Also, it looks like the response is all XML output. I know Koel uses JSON currently, so XML support would be added in. Again, this would only be for the subsonic endpoints though.
Author
Owner

@phanan commented on GitHub (Sep 18, 2019):

Sounds good! I'm all for it.

Am Mi., 18. Sept. 2019 um 15:50 Uhr schrieb Alex Phillips <
notifications@github.com>:

Here are the docs on the subsonic API:
http://www.subsonic.org/pages/api.jsp

Obviously the endpoints will need to match, so although it would be nice,
we wouldn't be able to do a 'subsonic' path prefix. Also, it looks like the
response is all XML output. I know Koel uses JSON currently, so XML support
would be added in. Again, this would only be for the subsonic endpoints
though.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/phanan/koel/issues/1085?email_source=notifications&email_token=AB5O3UT2WVY62CROAB3L5TDQKIW4FA5CNFSM4IXOYTO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7AEFCQ#issuecomment-532693642,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB5O3USTZAUST3LWJAI4VS3QKIW4FANCNFSM4IXOYTOQ
.

<!-- gh-comment-id:532700934 --> @phanan commented on GitHub (Sep 18, 2019): Sounds good! I'm all for it. Am Mi., 18. Sept. 2019 um 15:50 Uhr schrieb Alex Phillips < notifications@github.com>: > Here are the docs on the subsonic API: > http://www.subsonic.org/pages/api.jsp > > Obviously the endpoints will need to match, so although it would be nice, > we wouldn't be able to do a 'subsonic' path prefix. Also, it looks like the > response is all XML output. I know Koel uses JSON currently, so XML support > would be added in. Again, this would only be for the subsonic endpoints > though. > > — > You are receiving this because you commented. > Reply to this email directly, view it on GitHub > <https://github.com/phanan/koel/issues/1085?email_source=notifications&email_token=AB5O3UT2WVY62CROAB3L5TDQKIW4FA5CNFSM4IXOYTO2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD7AEFCQ#issuecomment-532693642>, > or mute the thread > <https://github.com/notifications/unsubscribe-auth/AB5O3USTZAUST3LWJAI4VS3QKIW4FANCNFSM4IXOYTOQ> > . >
Author
Owner

@legobuild commented on GitHub (Nov 1, 2019):

I currently use Airsonic with play:sub on iOS. I've really wanted to switch over to Koel, but need offline caching on iOS. Would love this.

<!-- gh-comment-id:548943865 --> @legobuild commented on GitHub (Nov 1, 2019): I currently use Airsonic with play:sub on iOS. I've really wanted to switch over to Koel, but need offline caching on iOS. Would love this.
Author
Owner

@JuniorJPDJ commented on GitHub (Jan 13, 2020):

Is it going in any way?

<!-- gh-comment-id:573480203 --> @JuniorJPDJ commented on GitHub (Jan 13, 2020): Is it going in any way?
Author
Owner

@phanan commented on GitHub (Jan 13, 2020):

@JuniorJPDJ I'm open to this but unfortunately won't have time to work on it, so I'm relying on you folks ;)

<!-- gh-comment-id:573578016 --> @phanan commented on GitHub (Jan 13, 2020): @JuniorJPDJ I'm open to this but unfortunately won't have time to work on it, so I'm relying on you folks ;)
Author
Owner

@alex-phillips commented on GitHub (Jan 21, 2020):

I'll see if I can start working on it this week

<!-- gh-comment-id:576859393 --> @alex-phillips commented on GitHub (Jan 21, 2020): I'll see if I can start working on it this week
Author
Owner

@antipiot commented on GitHub (Feb 11, 2020):

Subsonic API Would be a real + :-)

<!-- gh-comment-id:584727022 --> @antipiot commented on GitHub (Feb 11, 2020): Subsonic API Would be a real + :-)
Author
Owner

@alex-phillips commented on GitHub (Feb 11, 2020):

Unfortunately with the way Koel is built, I won't be using Koel anymore so adding in a Subsonic API isn't something I am interested in pursuing. Its method of populating the standard UI causes PHP to run out of memory with a rather large library, so continuing to use this isn't possible for me. Sorry :-/

<!-- gh-comment-id:584746177 --> @alex-phillips commented on GitHub (Feb 11, 2020): Unfortunately with the way Koel is built, I won't be using Koel anymore so adding in a Subsonic API isn't something I am interested in pursuing. Its method of populating the standard UI causes PHP to run out of memory with a rather large library, so continuing to use this isn't possible for me. Sorry :-/
Author
Owner

@JuniorJPDJ commented on GitHub (Feb 14, 2020):

You could leave this issue open as I think that maybe someone would like to implement it in the future.

<!-- gh-comment-id:586033768 --> @JuniorJPDJ commented on GitHub (Feb 14, 2020): You could leave this issue open as I think that maybe someone would like to implement it in the future.
Author
Owner

@alex-phillips commented on GitHub (Feb 14, 2020):

@JuniorJPDJ Sure thing!

<!-- gh-comment-id:586330218 --> @alex-phillips commented on GitHub (Feb 14, 2020): @JuniorJPDJ Sure thing!
Author
Owner

@deanlongstaff commented on GitHub (Apr 16, 2020):

+1, i would like to use KOEL but i wont be switching until there is an API that i can use on a mobile app.

<!-- gh-comment-id:614504927 --> @deanlongstaff commented on GitHub (Apr 16, 2020): +1, i would like to use KOEL but i wont be switching until there is an API that i can use on a mobile app.
Author
Owner

@Hukuma1 commented on GitHub (Aug 31, 2021):

Wish someone made this. :/

<!-- gh-comment-id:909656861 --> @Hukuma1 commented on GitHub (Aug 31, 2021): Wish someone made this. :/
Author
Owner

@legobuild commented on GitHub (Aug 31, 2021):

Wish someone made this. :/

You can look at Navidrome as an alternative with the subsonic API.

<!-- gh-comment-id:909662491 --> @legobuild commented on GitHub (Aug 31, 2021): > Wish someone made this. :/ You can look at [Navidrome](https://github.com/navidrome/navidrome) as an alternative with the subsonic API.
Author
Owner

@bilogic commented on GitHub (Jul 2, 2023):

Unfortunately with the way Koel is built, I won't be using Koel anymore so adding in a Subsonic API isn't something I am interested in pursuing. Its method of populating the standard UI causes PHP to run out of memory with a rather large library, so continuing to use this isn't possible for me. Sorry :-/

@alex-phillips could you clarify on the out of memory issue? Do you mean the scanning of the music path from a browser?

<!-- gh-comment-id:1616388402 --> @bilogic commented on GitHub (Jul 2, 2023): > Unfortunately with the way Koel is built, I won't be using Koel anymore so adding in a Subsonic API isn't something I am interested in pursuing. Its method of populating the standard UI causes PHP to run out of memory with a rather large library, so continuing to use this isn't possible for me. Sorry :-/ @alex-phillips could you clarify on the out of memory issue? Do you mean the scanning of the music path from a browser?
Author
Owner

@phanan commented on GitHub (Jul 2, 2023):

@bilogic Previously Koel loaded pretty much the whole library into the client. I deliberately chose to do so because I built Koel for my own needs, and my music library was/is never that big. However, newer Koel versions load songs/artists/albums progressively on demand, so memory should not be an issue anymore.

<!-- gh-comment-id:1616507796 --> @phanan commented on GitHub (Jul 2, 2023): @bilogic Previously Koel loaded pretty much the whole library into the client. I deliberately chose to do so because I built Koel for my own needs, and my music library was/is never that big. However, newer Koel versions load songs/artists/albums progressively on demand, so memory should not be an issue anymore.
Author
Owner

@smileBeda commented on GitHub (Apr 23, 2025):

Hi @phanan

First off — I’m a long-time Navidrome user and recently stumbled across Koel while browsing awesome-selfhosted. Gotta say, I was immediately struck by how beautiful Koel’s web interface is. It looks and feels much more modern and refined than Navidrome, and I’d really love to use it as my primary library frontend.

That said, I ran into a few things during setup (Docker-based) that I think are worth sharing:

  1. Docker Setup Could Use Some Clarity

The current Docker instructions work eventually, but they could benefit from clearer examples and expectations around a few common practices:

  • The /music path: It’s unclear whether it’s required to map a host folder to this — in testing, it definitely seemed necessary, but the Compose file and docs don’t address it, rather it seems to be assumed that this can be set in the backed (which did however not work in my case so I mapped ./music to /music, which did the trick).
  • The php artisan koel:init --no-assets step: It’s critical, but it’s not automated. Most users do not like bothering with container commands (kind of defies the purpose of docker, I think, anyway). It might be worth including this in the entrypoint, so the garbling with container commands could be bypassed.

Not a huge issue, but these things add friction - especially for new users evaluating Koel (and I have seen several online comparisons listing these two factors as the "why I did not choose Koel" reason).

  1. Lack of Subsonic API Support Is a Dealbreaker

This is the real showstopper for me. Without Subsonic API support, Koel can’t be used with the wide ecosystem of clients that rely on subsonic. For many users, it’s not just about choosing one app - it’s about supporting a workflow that may involve:

  • Multiple client apps (mobile, desktop, car interfaces, etc.)
  • Long-standing preferences
  • Third-party integrations
  • Avoiding single points of failure

Think of Subsonic like the REST API of self-hosted music: it’s the universal standard that ensures interop and future-proofing. Not supporting it makes Koel harder to adopt in serious setups - even for users who love the UI - simply because we can’t connect it to the apps we already use, and have to either buy (or compile) the specifically for-it designed app.


I’m sharing this in the spirit of being constructive, because I really want to use Koel. It has massive potential, is super nice, feels slick af. But for those with large libraries and diverse client needs, Subsonic support is not a "nice to have" - it’s foundational.
As much I want, I cannot use Koel right now unless I force my family to switch their apps, which even if I build it on my own using the Github repo, is something I really would like to avoid.

Of course, I do understand one can't just "magically" implement it. It needs work - and thanks for the amazing work so far!
But I feel that you could, if integrating subsonic, actually gain quite a bunch of (eventually even paying) users who want to arrive in the 21st century and are tired of the rather 90s look of (example) navidrome. Most of us are using that because... it is well integrated.

Cheers!

<!-- gh-comment-id:2825369007 --> @smileBeda commented on GitHub (Apr 23, 2025): Hi @phanan First off — I’m a long-time Navidrome user and recently stumbled across Koel while browsing [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted). Gotta say, I was immediately struck by how beautiful Koel’s web interface is. It looks and feels _much_ more modern and refined than Navidrome, and I’d really love to use it as my primary library frontend. That said, I ran into a few things during setup (Docker-based) that I think are worth sharing: 1. Docker Setup Could Use Some Clarity The current Docker instructions work eventually, but they could benefit from clearer examples and expectations around a few common practices: - The /music path: It’s unclear whether it’s required to map a host folder to this — in testing, it definitely seemed necessary, but the Compose file and docs don’t address it, rather it seems to be assumed that this can be set in the backed (which did however not work in my case so I mapped `./music` to `/music`, which did the trick). - The `php artisan koel:init --no-assets` step: It’s critical, but it’s not automated. Most users do not like bothering with container commands (kind of defies the purpose of docker, I think, anyway). It might be worth including this in the entrypoint, so the garbling with container commands could be bypassed. **Not a huge issue**, but these things add friction - especially for new users evaluating Koel (and I have seen several online comparisons listing these two factors as the "why I did not choose Koel" reason). 2. **Lack of Subsonic API Support Is a Dealbreaker** This is the real showstopper for me. Without Subsonic API support, Koel can’t be used with the wide ecosystem of clients that rely on subsonic. For many users, it’s not just about choosing one app - it’s about supporting a workflow that may involve: - Multiple client apps (mobile, desktop, car interfaces, etc.) - Long-standing preferences - Third-party integrations - Avoiding single points of failure Think of Subsonic like the REST API of self-hosted music: it’s the universal standard that ensures interop and future-proofing. Not supporting it makes Koel harder to adopt in serious setups - even for users who love the UI - simply because we can’t connect it to the apps we already use, and have to either buy (or compile) the specifically for-it designed app. --- I’m sharing this in the spirit of being constructive, because I really want to use Koel. It has massive potential, is super nice, feels slick af. But for those with large libraries and diverse client needs, Subsonic support is not a "nice to have" - it’s foundational. As much I want, I _cannot_ use Koel right now unless I force my family to switch their apps, which even if I build it on my own using the Github repo, is something I really would like to avoid. Of course, I do understand one can't just "magically" implement it. It needs work - and thanks for the amazing work so far! But I feel that you could, if integrating subsonic, actually gain quite a bunch of (eventually even paying) users who want to arrive in the 21st century and are tired of the rather 90s look of (example) navidrome. Most of us are using _that_ because... it is well integrated. Cheers!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#636
No description provided.