---
name: metabase_copy_card
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def metabase_copy_card(client: MetabaseClient, card_id: int, name: str | None = None, collection_id: int | None = None, description: str | None = None) -> dict"
description: "Crea una copia de una card/pregunta en Metabase via el endpoint nativo POST /api/card/:id/copy. Permite sobrescribir nombre, coleccion y descripcion en la copia."
tags: [metabase, card, question, copy, duplicate, collection, api, python]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [httpx]
params:
  - name: client
    desc: "instancia autenticada de MetabaseClient"
  - name: card_id
    desc: "ID de la card a copiar"
  - name: name
    desc: "nombre para la copia; None = Metabase asigna 'Copy of <nombre>'"
  - name: collection_id
    desc: "ID de la coleccion destino; None = misma coleccion que el original"
  - name: description
    desc: "descripcion de la copia; None = hereda la del original"
output: "dict: objeto card nueva creada por Metabase, con el id asignado y todos los campos heredados del original"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/cards.py"
---

## Ejemplo

```python
# Copia simple (nombre automatico)
copy = metabase_copy_card(client, 42)
print(copy["id"], copy["name"])  # "Copy of ..."

# Copia a otra coleccion con nombre propio
copy = metabase_copy_card(client, 42, name="Revenue Q2", collection_id=7)
print(copy["collection_id"])  # 7
```

## Notas

Usa el endpoint nativo de Metabase que copia dataset_query, display y
visualization_settings. Los campos opcionales del body se omiten si son None
para que Metabase aplique sus defaults (herencia del original).
