---
title: "Copy drafts (v2)"
method: POST
path: "/api/v1/research/drafts/copy-v2"
tags: ["research"]
---

# Copy drafts (v2)

`POST /api/v1/research/drafts/copy-v2`

## Request

- Base URL: `https://point11.ai`
- URL: `https://point11.ai/api/v1/research/drafts/copy-v2`
- Auth: OAuth 2 (authorization code, authorization URL `https://auth.point11.ai/oauth2/authorize`, token URL `https://auth.point11.ai/oauth2/token`)

Supports original MP3 and WAV audio alongside the existing study media. Copy a Research campaign's saved Custom study into a new unfinished study draft of the signed-in user's: its material and questions as the campaign froze them, its business profile, its schedule (once, weekly or monthly) and the customers on its roster as the draft's picked customers (none when the roster holds more than a draft can pick). Send a new draft id as `id` and the campaign's id as `campaignId`; the copy is that draft at revision 1, which research_drafts_get_v3 reads and research_drafts_save_v3 edits. Launching it (research_campaigns_launch) starts a new campaign, and the copied campaign stays as it ran: a one-time study runs once, so a changed study is a new one. A study other than Custom is refused 409 PRECONDITION_FAILED (details.reason not_copyable); a deleted, unknown or other tenant's campaign answers 404. Drafts belong to the user who saves them, so an API key cannot copy one.

## Headers

- `Point11-Organization` string, uuid
- `Idempotency-Key` string, uuid, required

## Request body

- ResearchDraftsCopyV2Request
  - `id` string, uuid, required: The new draft's id; the client mints it.
  - `campaignId` string, uuid, required: The Research campaign whose saved study is copied.

## Response `200`

Success.

- ResearchDraftsCopyV2Response
  - `id` string, uuid, required
  - `revision` integer, required: Compare-and-swap revision a later save must name.
  - `document` ResearchStudyDraftDocumentV3, required
    - `version` 'research-study-draft.v1', required
    - `kind` 'backtest'
    - `playbookKey` 'ad_copy' | 'brand_health' | 'offers' | 'pricing' | 'product' | 'product_launch' | 'sales' | 'custom' | 'product_roadmap', nullable, required
    - `campaignName` string, required
    - `display` object
      - `description` string
      - `endLabel` string
      - `branchLabels` object
    - `designer` object
      - `messages` object[], required
        - `role` 'user' | 'assistant', required
        - `content` string, required
      - `attachments` object[], required
        - `artifactId` string, required
        - `filename` string, required
        - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
        - `byteLength` integer, required
      - `brief` string
      - `reply` string
      - `reviewedBrief` string
      - `reviewedAttachments` object[]
        - `artifactId` string, required
        - `filename` string, required
        - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
        - `byteLength` integer, required
      - `deliveredQuestionDigests` object
      - `pending` ResearchPending
        - `brief` string, required
        - `attachments` object[], required
          - `artifactId` string, required
          - `filename` string, required
          - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
          - `byteLength` integer, required
        - `request` object, required
          - `operationId` string, uuid, required
          - `profileId` string, uuid, required
          - `contentLanguage` 'en' | 'fr' | 'es' | 'de' | 'pt' | 'ja' | 'it' | 'nl' | 'sv' | 'cs' | 'pl' | 'tr' | 'ru' | 'zh-Hans' | 'ko' | 'ar'
          - `design` ResearchDesign, required
            - `kind` 'backtest': backtest when the study re-asks a decision the business already made, as its people faced it then. Omit it for any other study.
            - `conversation` object, required
              - …
            - `name` string, required
            - `goal` string, required
            - `summary` string
            - `questions` ResearchQuestionsItem[], required
              - …
            - `assumptions` string[]: Customer assumptions: statements every respondent answers as true of themselves for this study only, beside their own profile, in order. Empty when the study states none.
            - `decision` object: For a backtest only: its current decision question and what each option keeps. Omit it when there is none.
              - …
            - `authorEditedQuestions` object[]: The questions in `questions` the author wrote or edited by hand since Alpha last delivered a study, which Alpha keeps as written unless the latest message asks to change them. Omit it when there are none.
              - …
      - `proposal` object
        - `turn` ResearchPending, required
          - `brief` string, required
          - `attachments` object[], required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
          - `request` object, required
            - `operationId` string, uuid, required
            - `profileId` string, uuid, required
            - `contentLanguage` 'en' | 'fr' | 'es' | 'de' | 'pt' | 'ja' | 'it' | 'nl' | 'sv' | 'cs' | 'pl' | 'tr' | 'ru' | 'zh-Hans' | 'ko' | 'ar'
            - `design` ResearchDesign, required
              - …
        - `design` ResearchProposalDesign, required
          - `message` string, required
          - `study` object, nullable, required
            - `name` string, required
            - `goal` string, required
            - `summary` string, required
            - `questions` ResearchQuestionsItem[], required
              - …
            - `assumptions` string[]: Customer assumptions: statements every respondent answers as true of themselves for this study only, beside their own profile, in order. Empty when the study states none.
            - `decision` object: For a backtest only: the single-choice question that asks the decision and what each of its options keeps. Omit it for any other study.
              - …
    - `profileId` union, required
      - string, uuid
      - ''
    - `contentLanguage` 'en' | 'fr' | 'es' | 'de' | 'pt' | 'ja' | 'it' | 'nl' | 'sv' | 'cs' | 'pl' | 'tr' | 'ru' | 'zh-Hans' | 'ko' | 'ar'
    - `material` union, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'copy', required
        - `copies` object[], required
          - `id` string, required
          - `label` string
          - `body` string, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'ads', required
        - `format` 'full_ad' | 'headline' | 'tagline' | 'product_name' | 'email_subject' | 'social_post'
        - `placement` string
        - `ads` object[], required
          - `id` string, required
          - `headline` string, required
          - `body` string
          - `callToAction` string
          - `landingUrl` string
          - `intendedTakeaway` string
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'concept', required
        - `concepts` object[], required
          - `id` string, required
          - `title` string, required
          - `description` string, required
          - `assetRefs` string[]
          - `prototypeUrl` string
          - `buyerGoal` string
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'offer_set', required
        - `offers` object[], required
          - `id` string, required
          - `title` string, required
          - `description` string, required
          - `terms` string
        - `category` string
        - `liveOffer` object
          - `offerId` string, required
          - `url` string, required
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string, required
        - `kind` 'price_ladder', required
        - `description` string
        - `currency` string, required
        - `billingUnit` 'one_time' | 'per_month' | 'per_year' | 'per_seat_per_month'
        - `prices` object[], required
          - `id` string, required
          - `amount` string, required
          - `label` string
        - `plannedPriceId` string
        - `category` string
        - `alternatives` object[]
          - `id` string, required
          - `name` string, required
          - `amount` string, required
        - `plans` object[]
          - `id` string, required
          - `name` string, required
        - `pricingPageUrl` string
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string, required
        - `kind` 'task', required
        - `instructions` string, required
        - `destinationUrl` string
        - `problem` string
        - `keyMessage` string
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'custom', required
        - `content` string, required
        - `assetRefs` string[]
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'brand', required
        - `brand` string
        - `category` string, required
        - `competitors` string[], required
        - `startUrl` string
      - object
        - `version` 'research-stimulus.v1', required
        - `title` string
        - `kind` 'features', required
        - `job` string, required
        - `productName` string
        - `features` object[], required
          - `id` string, required
          - `name` string, required
          - `description` string, required
        - `productTask` object
          - `startUrl` string, required
          - `successCriteria` string, required
        - `files` object[]
          - `slot` string, required
          - `itemId` string
          - `attachment` object, required
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
    - `stimulus` union
      - object
        - `version` 'research-stimulus.v1', required
        - `kind` 'brand', required
        - `title` string
        - `brand` string, required
        - `category` string
        - `competitors` string[], required
        - `startUrl` string, uri
        - `shownList` string[]
      - object
        - `version` 'research-stimulus.v1', required
        - `kind` 'copy', required
        - `title` string
        - `copies` object[], required
          - `id` string, required
          - `label` string
          - `body` string, required
      - ResearchStimulusVariant
        - `version` 'research-stimulus.v1', required
        - `kind` 'ads', required
        - `title` string
        - `format` 'full_ad' | 'headline' | 'tagline' | 'product_name' | 'email_subject' | 'social_post'
        - `placement` string
        - `ads` object[], required
          - `id` string, required
          - `headline` string, required
          - `body` string
          - `callToAction` string
          - `landingUrl` string, uri
          - `intendedTakeaway` string
      - object
        - `version` 'research-stimulus.v1', required
        - `kind` 'concept', required
        - `title` string
        - `concepts` object[], required
          - `id` string, required
          - `title` string, required
          - `description` string, required
          - `assetRefs` string[]
          - `prototypeUrl` string, uri
          - `buyerGoal` string
      - ResearchStimulusVariant2
        - `version` 'research-stimulus.v1', required
        - `kind` 'offer_set', required
        - `title` string
        - `offers` object[], required
          - `id` string, required
          - `title` string, required
          - `description` string, required
          - `terms` string
        - `category` string
        - `liveOffer` object
          - `offerId` string, required
          - `url` string, uri, required
      - ResearchStimulusVariant3
        - `version` 'research-stimulus.v1', required
        - `kind` 'price_ladder', required
        - `title` string, required
        - `description` string
        - `currency` string, required
        - `billingUnit` 'one_time' | 'per_month' | 'per_year' | 'per_seat_per_month'
        - `prices` object[], required
          - `id` string, required
          - `amountMinor` integer, required
          - `label` string
        - `plannedPriceId` string
        - `category` string
        - `alternatives` object[]
          - `name` string, required
          - `amountMinor` integer, required
        - `plans` string[]
        - `pricingPageUrl` string, uri
      - object
        - `version` 'research-stimulus.v1', required
        - `kind` 'task', required
        - `title` string, required
        - `instructions` string, required
        - `destinationUrl` string, uri
        - `problem` string
        - `keyMessage` string
      - object
        - `version` 'research-stimulus.v1', required
        - `kind` 'custom', required
        - `title` string
        - `content` string, required
        - `assetRefs` string[]
        - `private` true
      - ResearchStimulusVariant4
        - `version` 'research-stimulus.v1', required
        - `kind` 'features', required
        - `title` string
        - `job` string, required
        - `productName` string, required
        - `features` object[], required
          - `id` string, required
          - `name` string, required
          - `description` string, required
        - `productTask` object
          - `startUrl` string, uri, required
          - `successCriteria` string, required
    - `researchFocus` string, required
    - `schedule` 'once' | 'weekly' | 'monthly', required
    - `questions` ResearchQuestionsItem[], required
      - union
        - object
          - `id` string, required
          - `title` string, required
          - `prompt` string, required
          - `flow` union
            - object
              - …
            - object
              - …
          - `attachment` object
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
          - `stimulusItemId` string
          - `blind` true
          - `shape` 'open_ended', required
        - object
          - `id` string, required
          - `title` string, required
          - `prompt` string, required
          - `flow` union
            - object
              - …
            - object
              - …
          - `attachment` object
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
          - `stimulusItemId` string
          - `blind` true
          - `shape` 'closed_ended' | 'multi_select' | 'rank' | 'matrix' | 'scale', required
          - `options` string[], required
          - `maxSelections` integer
          - `unaided` true
        - object
          - `id` string, required
          - `title` string, required
          - `prompt` string, required
          - `flow` union
            - object
              - …
            - object
              - …
          - `attachment` object
            - `artifactId` string, required
            - `filename` string, required
            - `mediaType` 'image/png' | 'image/jpeg' | 'image/webp' | 'application/pdf' | 'text/plain' | 'text/markdown' | 'text/csv' | 'video/mp4' | 'video/webm' | 'audio/mpeg' | 'audio/wav', required
            - `byteLength` integer, required
          - `stimulusItemId` string
          - `blind` true
          - `shape` 'computer_task', required
          - `targets` union[], required
            - union
              - …
          - `successCriteria` string, required
    - `assumptions` string[]: Customer assumptions: statements every respondent answers as true of themselves for this study only, beside their own profile, in order. Empty when the study states none.
    - `backtest` ResearchBacktest
      - `decision` object
        - `questionId` string, required: The single-choice question that asks the decision.
        - `keeps` number[], required: By option position: the share of usual buying the answer keeps (0 stops, 1 keeps, up to 2 buys more), or null to leave it out.
      - `outcome` object
        - `metric` string, required: What was measured, such as "Units sold a week".
        - `change` number, required: The measured change, as a fraction: -0.3 is a 30% drop.
        - `note` string, nullable
    - `targetedGroupIds` string[], nullable, required
    - `targetedCustomerIds` string[], nullable, required

## Other responses

- `400`: The input, query, or Idempotency-Key is invalid.
- `401`: The bearer is missing, expired, or not accepted.
- `402`: Billing refused the write: the code names the reason and `details.reason` carries it.
- `403`: The credential lacks the operation's scope or role, or the operation needs a different door.
- `404`: The resource or organization does not exist for this caller.
- `405`: This path takes another HTTP method, named in `Allow`.
- `409`: The request conflicts with current state or with prior use of its Idempotency-Key.
- `413`: The request, or the answer it asks for, is too large; narrow it.
- `429`: The credential's rate budget is spent; retry after `Retry-After` seconds.
- `500`: An unexpected server failure; retry later. Only `request_id` identifies it.
- `503`: A dependency is temporarily unavailable; retry after `Retry-After` seconds.
- `default`: Another status a product answers for its own refusal (for example `415` for an unsupported attachment); branch on `code`.

---

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