---
name: metabase_copy_document
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def metabase_copy_document(client: MetabaseClient, document_id: int, name: str | None = None, collection_id: int | None = None) -> dict"
description: "Copia un document usando el endpoint nativo POST /api/document/:id/copy. Un solo request HTTP."
tags: [metabase, document, copy, clone, 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: document_id
    desc: "ID del document original a copiar"
  - name: name
    desc: "nombre del nuevo document; None = Metabase asigna nombre automatico"
  - name: collection_id
    desc: "coleccion destino; None copia a la misma coleccion del original"
output: "dict: document nuevo recien creado con id asignado y metadata completa"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/documents.py"
---

## Ejemplo

```python
# Copia con nombre personalizado a otra coleccion
copy = metabase_copy_document(client, 42, name="Backup Q1", collection_id=5)
print(copy["id"])  # ID del nuevo document

# Copia a la misma coleccion con nombre automatico de Metabase
copy = metabase_copy_document(client, 42)
print(copy["name"])  # nombre asignado por Metabase
```

## Notas

Usa el endpoint nativo `POST /api/document/:id/copy` — un solo request HTTP.

Metabase asigna el nombre automaticamente si no se especifica `name`. El contenido
ProseMirror (incluyendo cardEmbeds) se copia tal cual; las cards embebidas no se duplican.
