---
title: "Copy quiz"
method: POST
path: "/quizzes/{quizId}/copy"
---

# Copy quiz

`POST /quizzes/{quizId}/copy`

## Request

- Base URL: `https://api.web2wave.com/api`
- URL: `https://api.web2wave.com/api/quizzes/{quizId}/copy`
- Auth: API key in header `api_key`

Duplicate a quiz inside the current project: settings, screens, CSS variables
are copied into a new quiz (published version resets to 1, the `Published` tag is dropped).
Same as the "Copy" action in the cabinet.

## Path parameters

- `quizId` integer, required

## Headers

- `api_key` string, required

## Request body

- object
  - `name` string: Name of the copy. Defaults to "<source name> (copy)".
  - `slug` string: Slug of the copy (lowercased, only `0-9 a-z - _`), unique within the project. Defaults to "<source slug>-copy" (with a numeric suffix if taken).

## Response `201`

Quiz copied

- object
  - `success` integer
  - `quiz` Quiz
    - `id` integer
    - `project_id` integer
    - `paywall_id` integer
    - `name` string
    - `slug` string
    - `theme` string, nullable
    - `tags` string[]
    - `custom_js` object
      - `on_before_submit` string, nullable
      - `custom_json` string, nullable
    - `custom_css` string, nullable
    - `custom_head_html` string, nullable
    - `analytics` object
      - `meta_pixel_id` string, nullable
      - `facebook_access_token` string, nullable
      - `tiktok_pixel_id` string, nullable
      - `tiktok_access_token` string, nullable
      - `snap_access_token` string, nullable
      - `pinterest_tag_id` string, nullable
      - `pinterest_ad_account_id` string, nullable
      - `pinterest_access_token` string, nullable
    - `favicon` string, nullable: Favicon CDN URL (upload via `POST /project-files/upload` first).
    - `og` object, nullable: Open Graph / SEO data. On update the object is merged with the stored value; `null` resets title and description (the stored image is kept).
      - `title` string, nullable
      - `description` string, nullable
      - `image` string, nullable
    - `settings` object, nullable: Quiz JSON settings, merged into the stored settings. Does not replace screens.
      - `logo` string, nullable
      - `logo_style` string, nullable
      - `preloader_content` string, nullable
      - `preloader_image` string, nullable
    - `language` string, nullable
    - `country` string, nullable
    - `published_version` integer, nullable
    - `auto_languages` integer
    - `templates_version` integer, nullable
    - `no_cookie` boolean
    - `css_variables` object
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `deleted_at` string, date-time, nullable

## Other responses

- `404`: Quiz not found in current project
- `422`: Validation error (e.g. slug already taken)

## Changes

- **2026-11-03** `eb8b2d9124ac`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/web2wave/apis/web2wave-api/changes/quizzes/:quizId/copy/post.md)

---

[API](https://skmtc.dev/web2wave/apis/web2wave-api.md) - [All operations](https://skmtc.dev/web2wave/apis/web2wave-api/llms.txt) - [OpenAPI document](https://skmtc.dev/web2wave/apis/web2wave-api/revisions/eb8b2d9124ac?raw)
