Rosty API

The Rosty API lets you create and maintain manga reading playlists from scripts, tools or your own apps. It is the same API the Rosty browser extension uses.

Create an access token in My profile → Developers → API Access. The token is shown only once, so copy it and store it safely. You can revoke it at any time.

Quickstart

  1. Log in to Rosty and create a token in My profile → Developers → API Access.
  2. Send it on every request as Authorization: Bearer rosty_pat_....
  3. Start creating playlists.
# List your playlists (including private ones)
curl "https://api.rosty.app/api/v1/playlists?mine=1" \
  -H "Authorization: Bearer rosty_pat_..."

# Create a private playlist (may start with no songs)
curl -X POST "https://api.rosty.app/api/v1/playlists" \
  -H "Authorization: Bearer rosty_pat_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "One Piece - Chapter 1",
    "mangaId": "13",
    "chapter": 1,
    "isPublic": false,
    "songs": []
  }'

# Add songs (replace the full list)
curl -X PUT "https://api.rosty.app/api/v1/playlists/42/songs" \
  -H "Authorization: Bearer rosty_pat_..." \
  -H "Content-Type: application/json" \
  -d '{
    "expectedVersion": 1,
    "songs": [
      {
        "songUrl": "https://soundcloud.com/forss/flickermood",
        "rangeStart": 1,
        "rangeEnd": 5,
        "loop": false
      }
    ]
  }'

Visibility: while isPublic is false the playlist is visible only to you. Making it public requires at least one song.

Concurrency: send expectedVersion on writes. If someone else wrote first you get a 409 VERSION_CONFLICT instead of silently overwriting their changes.

Endpoints

Method Path
GET /api/v1/playlists?mine=1
GET /api/v1/playlists?mangaId=13&chapter=1
POST /api/v1/playlists
GET /api/v1/playlists/{id}
PATCH /api/v1/playlists/{id}
PUT /api/v1/playlists/{id}/songs
POST /api/v1/playlists/{id}/publish
GET /api/v1/soundcloud/search?q=...
GET /api/v1/manga/search?q=...

Errors

Every error uses the same shape: { "ok": false, "error": { "code": "...", "message": "..." } }

HTTP When
400 Malformed request
401 Missing, invalid or expired token
403 Authenticated but not the owner
404 Not found (or a private playlist that is not yours)
409 The playlist was modified by someone else
422 The content failed validation
500 Server error

API reference

Full reference generated from the OpenAPI specification.