> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doconda.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Que tus usuarios editen los documentos que genera tu agente de IA

> Crea el Word con la API de Doconda, sírvelo desde tu servidor y ábrelo con <DocondaEditor>: el usuario lo retoca en tu web y lo guardas como versión.

Para que tus usuarios editen los documentos que genera tu agente de IA, crea el archivo con la API de Doconda y ábrelo
en tu web con el plugin de editor (`@doconda/editor`). El agente escribe el Word, PowerPoint o Excel; el usuario lo
retoca en su navegador sin salir de tu producto; y tú lo guardas como versión nueva del documento.

## Pasos

1. Crea una API key en el panel (**API keys**) y guárdala en `DOCONDA_API_KEY`. Instala el SDK en tu servidor:
   `npm install @doconda/sdk`.
2. Contrata el plugin de editor (**Facturación → Plugin de editor**, con 7 días de prueba gratis) e instálalo con el
   comando del panel (necesita React 19 o superior):

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
npm install https://api.eu.doconda.com/v1/editor/package/edt_….tgz
```

3. En tu servidor, crea el documento:

```ts theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
import { Doconda } from "@doconda/sdk"

const doconda = new Doconda()
const doc = await doconda.documents.create({
  format: "docx",
  prompt: "Contrato de alquiler de vivienda de 900 € al mes, con títulos azules",
})
```

4. Sírvelo desde una ruta tuya. Los enlaces de `doc.outputs` no valen como `src`: el navegador no puede leerlos desde
   tu sitio y caducan a los 5 minutos. Descarga el archivo en el servidor:

```ts theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
// En tu servidor (por ejemplo, la ruta de Next.js app/api/documents/[id]/file/route.ts)
import { Doconda } from "@doconda/sdk"

const doconda = new Doconda()

export async function GET(req: Request, { params }: { params: Promise<{ id: string }> }) {
  const { id } = await params
  return new Response(await doconda.documents.download(id, "docx"))
}
```

5. En el navegador, ábrelo con el editor. El enlace no lleva extensión, así que pasa `format`:

```tsx theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
<DocondaEditor src={`/api/documents/${id}/file`} format="docx" licenseKey="ek_eu_…" />
```

6. Cuando el usuario termine, guárdalo en Doconda como versión nueva (con su revisión, PDF e informe de cambios):

```ts theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
// En el navegador: el archivo va a tu servidor
const body = new FormData()
body.append("file", await editor.current!.save())
await fetch(`/api/documents/${id}/versions`, { method: "POST", body })
```

```ts theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
// En tu servidor (por ejemplo, la ruta de Next.js app/api/documents/[id]/versions/route.ts)
export async function POST(req: Request, { params }: { params: Promise<{ id: string }> }) {
  const { id } = await params
  const res = await fetch(`https://api.eu.doconda.com/v1/documents/${id}/versions`, {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.DOCONDA_API_KEY}` },
    body: await req.formData(),
  })
  return Response.json(await res.json(), { status: res.status })
}
```

<Warning>
  La API key va solo en tu servidor, nunca en el navegador. Comprueba allí también que el usuario puede editar ese
  documento.
</Warning>

## Por qué así

* El agente no tiene que acertar a la primera: el usuario corrige lo que falte en un editor de Word completo.
* Lo que el editor no toca se guarda tal cual: estilos, gráficos o notas no se pierden.
* La versión editada a mano no usa IA y no se cobra. Ver [Editar](/guides/edit#guardar-una-versión-editada-a-mano).

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Funciona con PowerPoint y Excel?">
    Sí. Crea el documento con `format: "pptx"` o `"xlsx"`, descárgalo con ese formato y pasa el mismo `format` al
    editor.
  </Accordion>

  <Accordion title="¿Puedo pasar el archivo sin una ruta?">
    Sí: si ya tienes los bytes en el navegador (por ejemplo, de una respuesta de tu API), pásalos con `file`.
  </Accordion>

  <Accordion title="¿Y si solo quiero que lo revise sin cambiarlo?">
    Añade `readOnly`. Ver [visor de DOCX para React](/answers/docx-viewer-react).
  </Accordion>

  <Accordion title="¿Se paga aparte?">
    Sí: el plugin de editor se contrata aparte de la API, por organización, con documentos y usuarios ilimitados. Ver
    [licencia y dominios](/editor/license).
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Quickstart](/quickstart) y [SDK: crear documentos](/sdk/create).
* [Plugin de editor](/editor/introduction).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.