> ## Documentation Index
> Fetch the complete documentation index at: https://rockboxzig.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# API overview

> Four protocols, one source of truth — pick whichever fits your client.

`rockboxd` exposes the same in-process state through four independent
servers. They are all started by `start_servers()` in
`crates/server/src/lib.rs` and all share one set of mutexes around the
firmware, so a change made via gRPC is immediately visible over GraphQL,
HTTP and MPD.

| Protocol      | Default port  | Use it for                                            |
| ------------- | ------------- | ----------------------------------------------------- |
| **HTTP REST** | 6063          | `curl`-able. Simple integrations, scripts, webhooks.  |
| **GraphQL**   | 6062          | Best fit for UIs. Subscriptions for real-time events. |
| **gRPC**      | 6061          | Strongly-typed, multi-language. gRPC-Web supported.   |
| **MPD**       | 6600          | Existing MPD clients (`mpc`, `ncmpcpp`, MALP, …).     |
| **Subsonic**  | 4533          | Cassette, Symfonium, DSub, Ultrasonic, play:sub, …    |
| **Jellyfin**  | 8096 (opt-in) | Finamp, Findroid, Streamyfin, Amcfy Music, Symfonium. |
| **S3**        | 9000 (opt-in) | Upload / delete tracks with `awscli`, `mc`, `rclone`. |

<CardGroup cols={2}>
  <Card title="HTTP REST" icon="bolt" href="/api-reference/rest/overview">
    Open `http://localhost:6063` and explore.
  </Card>

  <Card title="GraphQL" icon="code" href="/api-reference/graphql/overview">
    GraphiQL at `http://localhost:6062/graphiql`.
  </Card>

  <Card title="gRPC" icon="cube" href="/api-reference/grpc/overview">
    Schema published on Buf.
  </Card>

  <Card title="MPD" icon="terminal" href="/api-reference/mpd/overview">
    Anything that speaks MPD on `localhost:6600`.
  </Card>

  <Card title="Jellyfin" icon="film" href="/api-reference/jellyfin/overview">
    Native Jellyfin clients on `localhost:8096`.
  </Card>

  <Card title="S3" icon="cloud-arrow-up" href="/api-reference/s3/overview">
    Upload tracks via the S3 protocol on `localhost:9000`.
  </Card>
</CardGroup>

## Auto-generated REST pages

Every endpoint in the [HTTP REST API](/api-reference/rest/overview) has its
own page generated from the canonical OpenAPI spec
([`openapi.json`](https://github.com/tsirysndr/rockboxd/blob/master/crates/server/openapi.json)).
The spec is also served live at `http://localhost:6063/openapi.json` while
rockboxd is running.

## Authentication

All four servers are unauthenticated. They are intended for use on a
trusted LAN. If you expose Rockbox publicly, put it behind a reverse
proxy with TLS and HTTP basic auth.

## Pick a client SDK

We maintain six first-party SDKs. They wrap the GraphQL transport with
typed methods, real-time subscriptions and a plugin system.

<CardGroup cols={3}>
  <Card title="TypeScript" icon="js" href="/sdks/typescript" />

  <Card title="Python" icon="python" href="/sdks/python" />

  <Card title="Ruby" icon="gem" href="/sdks/ruby" />

  <Card title="Elixir" icon="droplet" href="/sdks/elixir" />

  <Card title="Clojure" icon="lambda" href="/sdks/clojure" />

  <Card title="Gleam" icon="star" href="/sdks/gleam" />
</CardGroup>
