Duplicate a card

Create a copy of an existing card in the same pipe, carrying its field values, assignees, labels, due date and connections.

Before You Begin

🔗 Use the GraphQL Playground to execute the queries in this guide.

➡️ New to GraphQL? Learn how to navigate the Playground with our Playground Basics Guide.

Prerequisites

  1. Authentication: Use a Service Account token (Personal Access Tokens are deprecated).
  2. Permissions: your token must be able to create cards in the pipe that owns the card you are duplicating.
  3. Card ID: identify the card you want to duplicate.

Step 1: Find your card ID

Via Pipefy UI

  1. Open the card in your browser.
  2. The URL will include the card ID: https://app.pipefy.com/open-cards/123456789.
  3. Card ID = 123456789 (the number after /open-cards/).

Via GraphQL Query

  1. How to get the card ID.

Step 2: Duplicate the card

With only cardId, the copy carries the start form field values and the original's title, and nothing else. The copy is always created in the first phase of the pipe:

mutation {
  cardDuplicate(input: { cardId: 123456789 }) {
    card {
      id
      title
      current_phase {
        id
        name
      }
    }
  }
}

The response returns the new card:

{
  "data": {
    "cardDuplicate": {
      "card": {
        "id": "987654321",
        "title": "Pizza order #42",
        "current_phase": {
          "id": "301",
          "name": "Preparing"
        }
      }
    }
  }
}

Choosing how much to copy

One optional argument changes the result:

mutation {
  cardDuplicate(input: { cardId: 123456789, fullCopy: true }) {
    card {
      id
    }
  }
}
ArgumentTypeDefaultDescription
cardIdID!—The card to duplicate.
fullCopyBooleanfalseBy default the copy carries only the start form field values and the title. Set it to true to also copy every other phase's field values, plus the assignees, labels, due date and connections.

Key Notes

  • Fields configured as unique are never copied. They are left empty on the copy, so the uniqueness rule is not violated.
  • Attachments are not copied — neither attachment fields nor card attachments.
  • The copy keeps the title of the original card. No suffix is added.
  • Assignees, labels, due date and connections are copied only with fullCopy: true. A start form copy is a fresh card carrying those answers and the title, nothing more. The due date is copied as-is, so duplicating an overdue card produces an overdue copy.
  • The copy is a new card, so any automation that triggers on card creation runs for it.
  • Comments, checklists, emails and the activity history are not copied.
  • Fields that can only be edited in their own phase are not copied either, for the same reason as unique fields: the copy is filled while it is still in the start form.
  • If a required field is one of the skipped ones (unique, or locked to its own phase), the copy can never satisfy the required-field check and the mutation returns CARD_DUPLICATION_BLOCKED.
  • A connection whose pipe relation accepts only a single card is not copied, because the original already occupies that slot. The duplication still succeeds without it.
  • The copy always lands in the first phase of the pipe, regardless of where the original card is.
  • The cardId must belong to a pipe. A table record id returns RESOURCE_NOT_FOUND.
  • fullCopy: true gives the copy phase history it never lived through. Writing a later phase's value creates that phase's record while the copy is still in the start form, so its phase-duration reporting is unreliable. This is why only the start form values are copied by default.
  • To create a card from scratch instead, see Create a card with required fields.