---
title: "Put an account on the demo-account allowlist (admins only)."
method: PUT
path: "/admin/demo-accounts/{userId}"
tags: ["Admin"]
---

# Put an account on the demo-account allowlist (admins only).

`PUT /admin/demo-accounts/{userId}`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/admin/demo-accounts/{userId}`
- Auth: HTTP bearer

Admins only. A demo account is a dedicated non-admin account that agents produce Sleeper's own showcase videos with; it is on the allowlist only while an admin keeps it there, and every use is recorded. Idempotent. 403 `demo_account_not_allowed` for an admin account (a demo account never is); 404 `not_found` for an unknown id. Audited. Scope: `account:write`. Free.

## Response `200`

The account is a demo account.

- DemoAccountChange
  - `userId` string, required
  - `demo` boolean, required
  - `revokedSessions` integer, required: Sessions minted for the account that removing it ended.

## Other responses

- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/64c1102ccb2f?raw)
