{"id":"29e96ae0-6aae-476e-b38c-2280db96d3e9","task":"Submit a user's music listens to ListenBrainz as an open, non-proprietary alternative to Last.fm scrobbling","domain":"listenbrainz.readthedocs.io","steps":["Have the user retrieve their personal ListenBrainz user token from listenbrainz.org/settings and use it as a bearer credential in the `Authorization` header","Build a JSON payload with `listen_type` set to `single` (one listen), `import` (bulk historical backfill), or `playing_now` (ephemeral now-playing state)","For each listen, include a `track_metadata` object with at minimum `artist_name` and `track_name`, plus a top-level `listened_at` Unix timestamp marking when playback started (required for single/import, omitted for playing_now)","Only submit a listen once the user has played at least half the track or 4 minutes, whichever is shorter — matching the same 'what counts as a listen' convention used by scrobbling services","POST the payload to the submit-listens endpoint, batching multiple listens in one `import`-type request when backfilling history, while staying under the documented max payload size and max listens per request","Remember that `playing_now` listens are only held temporarily by the server and must be separately submitted as `single`/`import` to be permanently recorded"],"gotchas":["`playing_now` submissions are ephemeral — if you only ever send playing_now and never follow up with a `single` submission once the track finishes, nothing is permanently recorded in the user's listen history","There are hard limits on both request payload size and the number of listens per request; large backfills need to be chunked rather than sent as one giant import call","Minimal payloads only require artist_name/track_name text fields, but attaching MusicBrainz identifiers (when known) significantly improves ListenBrainz's ability to match listens to canonical recordings — omitting them isn't wrong, just lower quality"],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"file-sample","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/29e96ae0-6aae-476e-b38c-2280db96d3e9"}