---
title: "Control democratic play"
method: POST
path: "/democratic/{object_id}"
tags: ["Playback Control"]
---

# Control democratic play

`POST /democratic/{object_id}`

This is for controlling democratic play (Songs only)

## Path parameters

- `object_id` string, required

## Query parameters

- `method` 'vote' | 'devote' | 'playlist' | 'play'

## Request body

- DemocraticRequest
  - `method` 'vote' | 'devote' | 'playlist' | 'play', required

## Response `200`

Democratic response

- union — Depends on the `method` parameter: `play` returns the stream url, `vote`/`devote` return the applied method and its result, and `playlist` returns the current democratic song list.
  - DemocraticPlayResponse — Returned by `method=play`: the stream URL of the democratic playlist.
    - `url` string, required
  - DemocraticVoteResponse — Returned by `method=vote` and `method=devote`.
    - `method` string, required
    - `result` boolean, required
  - DemocraticSongsResponse
    - `song` DemocraticSongObject[], required
      - `id` string, required
      - `title` string, nullable, required
      - `artist` NamedReference, required
        - `id` string, required
        - `name` string, nullable, required
        - `prefix` string, nullable, required
        - `basename` string, nullable, required
      - `album` NamedReference, required
        - `id` string, required
        - `name` string, nullable, required
        - `prefix` string, nullable, required
        - `basename` string, nullable, required
      - `genre` GenreReference[], required
        - `id` string, required
        - `name` string, required
      - `track` integer, required
      - `time` integer, required
      - `format` string, nullable, required
      - `bitrate` integer, nullable, required
      - `mime` string, nullable, required
      - `url` string, required
      - `size` integer, required
      - `art` string, nullable, required
      - `has_art` boolean, required
      - `rating` integer, nullable, required
      - `averagerating` number, nullable, required
      - `playcount` integer, required
      - `vote` integer, required

## Other responses

- `400` — HTTP 400 Bad Request (errors 4705, 4710).
- `401` — HTTP 401 Unauthorized (error 4701).
- `403` — HTTP 403 Forbidden (errors 4700, 4703, 4742).
- `404` — HTTP 404 Not Found (error 4704).
- `500` — HTTP 500 Internal Server Error (error 4702).

---

[API](https://skmtc.net/ampache/apis/ampache-rest-api.md) · [All operations](https://skmtc.net/ampache/apis/ampache-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ampache/ampache-rest-api/revisions/535feee32afb/schema)
