[Bug]: Updating the progress using me/progress/{id} does not trigger a websocket update in Web/Mobile #3182

Open
opened 2026-04-25 00:14:07 +02:00 by adam · 3 comments
Owner

Originally created by @giejay on GitHub (Jan 10, 2026).

What happened?

I'm using https://github.com/cporcellijr/abs-kosync-bridge to sync my progress between KoReader and ABS.

Unfortunately, it seems that the endpoint we are using in abs-kosync-bridge: api/me/progress/ID is not triggering any websocket callback in either the web or my Android phone.

The regular endpoint which is used by web/app (session/ID/sync) is triggering the websocket on both devices.

Is this expected?

What did you expect to happen?

I'm expecting an updated state/progress in all devices/web.

Steps to reproduce the issue

When sending this manually, I'm not seeing the updated state in the app/web.

curl --location --request PATCH 'https://abs.com/api/me/progress/834da333-c6a1-4cf3-be74-04c374ec7aa6' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xxxxI' \
--data '{"currentTime": 12087.82, "duration": 0, "isFinished": false}'

Only after refreshing the page in web or closing the Android app, the progress is updated.

Audiobookshelf version

v2.32.1

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

If the issue is being seen in the UI, what browsers are you seeing the problem on?

Firefox

Logs


Additional Notes

No response

Originally created by @giejay on GitHub (Jan 10, 2026). ### What happened? I'm using https://github.com/cporcellijr/abs-kosync-bridge to sync my progress between KoReader and ABS. Unfortunately, it seems that the endpoint we are using in abs-kosync-bridge: api/me/progress/ID is not triggering any websocket callback in either the web or my Android phone. The regular endpoint which is used by web/app (session/ID/sync) is triggering the websocket on both devices. Is this expected? ### What did you expect to happen? I'm expecting an updated state/progress in all devices/web. ### Steps to reproduce the issue When sending this manually, I'm not seeing the updated state in the app/web. ``` curl --location --request PATCH 'https://abs.com/api/me/progress/834da333-c6a1-4cf3-be74-04c374ec7aa6' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer xxxxI' \ --data '{"currentTime": 12087.82, "duration": 0, "isFinished": false}' ``` Only after refreshing the page in web or closing the Android app, the progress is updated. ### Audiobookshelf version v2.32.1 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? Firefox ### Logs ```shell ``` ### Additional Notes _No response_
adam added the bug label 2026-04-25 00:14:07 +02:00
Author
Owner

@Vito0912 commented on GitHub (Jan 10, 2026):

Idk if that is expected, I cannot comment on that, but the progress endpoint is not the correct endpoint to continuously updating progress.

For this using sessions and local sessions is the correct endpoint. Incorrectly using that endpoint causes issues with the official clients due to not emitting the websocket. Also note that using progress does not create any stats.

@Vito0912 commented on GitHub (Jan 10, 2026): Idk if that is expected, I cannot comment on that, but the progress endpoint is not the correct endpoint to continuously updating progress. For this using sessions and local sessions is the correct endpoint. Incorrectly using that endpoint causes issues with the official clients due to not emitting the websocket. Also note that using progress does not create any stats.
Author
Owner

@giejay commented on GitHub (Jan 10, 2026):

Thanks @Vito0912, so that means we will need to refactor the bridge to create a new local session right? Just need to figure out where to get all the fields from. It's a lot more than just providing the library ID ;) Are all the fields mandatory? Im missing the "required" column in the API specs.

@giejay commented on GitHub (Jan 10, 2026): Thanks @Vito0912, so that means we will need to refactor the bridge to create a new local session right? Just need to figure out where to get all the fields from. It's a lot more than just providing the library ID ;) Are all the fields mandatory? Im missing the "required" column in the API specs.
Author
Owner

@Vito0912 commented on GitHub (Jan 10, 2026):

Using the "API specs" will exactly lead to these issues. Please note the top of the docs. They are unmaintained for ~2 years now.

As for how to construct a session: Try using the /play endpoint. It makes pretty obvious what is needed or look in the code. I know it's very frustrating that there are no completely accurate docs yet, that mention all quircks. We all have been going trough this, sadly.


I am not sure what about epub progress, because that one is not done via sessions afaik, so a websocket emit probably would be needed for epub, but afaik the position does not update dynamically anyway. So (and this is just my opinion as a contributor, who uses and tests ABS apps a lot), not having the websocket work, has more incentive to use the proper endpoints.

But as for functionality I think that this is just a oversight in adding.

But I am not a maintainer! Just someone who used the API a lot...

@Vito0912 commented on GitHub (Jan 10, 2026): Using the "API specs" will exactly lead to these issues. Please note the top of the docs. They are unmaintained for ~2 years now. As for how to construct a session: Try using the /play endpoint. It makes pretty obvious what is needed or look in the code. I know it's very frustrating that there are no completely accurate docs yet, that mention all quircks. We all have been going trough this, sadly. --- I am not sure what about epub progress, because that one is not done via sessions afaik, so a websocket emit probably would be needed for epub, but afaik the position does not update dynamically anyway. So (and this is just my opinion as a contributor, who uses and tests ABS apps a lot), not having the websocket work, has more incentive to use the proper endpoints. But as for functionality I think that this is just a oversight in adding. But I am not a maintainer! Just someone who used the API a lot...
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf#3182