Group library collection created by API is not syncing to my local library

I'm editing a group library, and one specific collection that was created using the API will show up in the web version of Zotero but not in my local library. Their collections in the same group library are still working exactly as expected. I did update to the newest version and then discovered that some files were syncing that I didn't actually want in cloud storage. I deleted them, so I am not at storage capacity. I checked all my sync settings, and the collection that I'm working with is in a group library that should be syncing. Thanks!

Debug ID: D628411616
  • See Changes Not Syncing for the exact info we need.

    (Note that you disabled syncing for My Library. If this is about a group, that's not relevant, but be aware that your personal library is not syncing.)
  • Hi. Yes it is a group library and I went through all those steps. The collection is visible, I do not have find or a filter on, sync is not spinning and it says it is synced, no error message in the desktop app, the collection is complete in the web browser version, I'm logged in with the correct identity, group libraries are all checked to sync.
  • You haven't provided the info requested in the last step.
  • This is the step you're missing:
    If you’re still having trouble, post to the Zotero Forums (in your existing thread, if you have one) with a Debug ID for the first sync after making a change that doesn’t sync (e.g., making a change to an item in the online library that doesn’t appear in Zotero, or vice versa)
  • The Debug ID is in my original post.

    Debug ID: D628411616
  • You just haven't provided what we ask for and what we need to help you. We need a Debug ID that covers you making a change online and the immediate next sync, as well as the zotero.org URL for the changed item that doesn't get downloaded during that sync.
  • Thanks for the clarification.

    To clarify — the collection I'm asking about was created via the API and has never synced to my local library since its creation, despite repeated syncs. Manually created items in this collection sync immediately (the first manually created item triggered the collection to show up locally), and I've also confirmed that editing an item that was created by the API does not cause it to sync either — so this isn't a matter of a change failing to come down, it's that the original API-created object never downloads, and edits to it don't trigger a fix. Here's a Debug ID from a sync attempt where it's still absent: D1815380389. The item I tried editing manually in the collection in question: https://www.zotero.org/groups/2187538/liturgy/collections/AB95AP6X/items/ZKAVVIX7/collection. Let me know if there's something else you'd like me to try.

  • Well the collection has synced — your screenshot shows it existing locally. Item collection membership is a property of items, not collections. So the "change that doesn’t sync" would be creating or updating an item that isn't synced down during the next sync.

    The item that you say you edited manually hasn't changed online in two days. How exactly are you editing it manually?
  • "Item collection membership is a property of items, not collections."

    That is helpful. You are right that my previous edit did not save at all, even online. I added a note and that saved and synced to the same item locally, but that item still does not appear in the collection. So the specific thing that isn't syncing locally is the data that these items (there are 39 now in the online collection, 37 were created by the API) are in the new collection.

    I can't capture a URL for a unique item, nor do I see that there's any manual way of editing what collections an item belongs to besides clicking and dragging.

    Thanks for looking at this.
  • A note is a separate item. You have to edit the item itself. Any change would work, such as dragging all items to a temporary collection and then removing them.

    If you can reproduce the original problem, starting with item creation, we'd want to see a Debug ID that covers the entire process.
  • Ok I will turn debugging on and run a new set of tests and see what happens. Thanks! Trying to get the API working before starting a big reorg.
  • edited 18 days ago
    Follow-up: cause found. It was an API call on my side, not the desktop client.

    I can now reproduce this, and the collection that started this thread is fixed. Reporting what I found in case you want to change how the call behaves.

    What I was doing

    The items were added to the collection by a script using the Web API, with this call (group library 2187538, Zotero-API-Version: 3):

    POST /groups/2187538/collections/<collectionKey>/items
    Content-Type: text/plain
    Body: space-separated item keys

    It returns 204 and the items do appear in the collection on the server (web library and API both show them).

    What goes wrong

    The call does not increment the library version. The affected items are stamped with the current library version instead of a new one.

    Reproduced today, 5 October 2026:

    1. Library at version 14720. Desktop client (Zotero 10.0.2, macOS) fully synced at 14720.
    2. Sent the call above for one existing item, TBHHP53Y, into existing collection 9LTEBZUN.
    3. Response: 204, Last-Modified-Version: 14720.
    4. GET /items/TBHHP53Y now shows the collection in "collections" and "version": 14720 (it was 14696 before).
    5. GET /items?since=14720&format=versions returns nothing.
    6. Desktop client syncs, stays at 14720, and never shows the item in the collection. Its local copy of the item is still at version 14696.

    So a client that is already at the current version has no way to learn about the change. This matches my original report: collection AB95AP6X had 39 top-level items on the server and 4 in the desktop client, three weeks and many syncs later.

    It is easy to miss, because if the client happens to sync after the call for some other reason while still behind that version, the items do arrive. A second collection I filled today looked fine for exactly that reason.

    For completeness: an item key that does not exist in the library returns 400 "Item 'XXXXXXXX' not found in library" and nothing is added, so that part behaves sensibly.

    What fixed it

    Writing the same membership through the items endpoint instead:

    POST /groups/2187538/items
    [{"key": "...", "version": N, "collections": ["<collectionKey>"]}, ...]

    That increments the library version as expected (14720 to 14722 for one item removed and re-added; then to 14800 for the 39 items of the original collection), and the desktop client picked everything up within a minute.

    Suggestion

    I could not find the collections/<key>/items POST in the current v3 write documentation, so it may be a holdover from an earlier API version. Either of these would have saved me the confusion:

    - have the call increment the library version like other writes, or
    - have it return an error under API version 3 if it is not meant to be supported.

    Happy to provide a fresh Debug ID or run anything else that would help.
  • dstillman Zotero Team
    Sorry about that. This was a regression from earlier this year. Fixed now — thanks.
  • Confirmed that the call now works. Thanks!
Sign In or Register to comment.