---
title: "Save a reusable style theme"
method: POST
path: "/v1/themes"
---

# Save a reusable style theme

`POST /v1/themes`

## Request body

- object
  - `name` string, required
  - `style` object, required — QR style JSON (fgColor, bgColor, dotType, cornerSquareType, logo, gradient, frame…).

## Response `201`

Created.

- object
  - `theme` Theme
    - `id` string
    - `name` string
    - `style` object — The saved QR style JSON.

## Other responses

- `400` — Invalid request — malformed JSON, a missing/invalid required field, or a disallowed dynamic-code destination (destinations must be public http(s) URLs; private/internal hosts and oqr.to self-loops are rejected).
- `401` — The `Authorization: Bearer oqr_…` header is missing or the API key is invalid or revoked.
- `500` — An unexpected server-side error.

---

[API](https://skmtc.net/openqr/apis/openqr-api.md) · [All operations](https://skmtc.net/openqr/apis/openqr-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openqr/openqr-api/versions/f1b3796cd1f6/schema)
