> ## 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.

# Artifacts

> Un formato más: una página web que guarda datos (una encuesta, una lista de equipo, una calculadora).

Un **artifact** es un documento con `format: "artifact"`: en vez de un Word o un PDF, Doconda entrega una página web que
guarda datos. Lo que guarda se mantiene entre visitas.

Se crea, se lista, se sigue y se cobra como cualquier documento. Es privado de tu proyecto: tú decides a quién le
das el enlace (por ejemplo, dentro de tu producto, en un `iframe`).

## Crear uno

Con una frase, y Doconda escribe la página:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
curl https://api.eu.doconda.com/v1/documents \
  -H "Authorization: Bearer $DOCONDA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "format": "artifact", "prompt": "Una encuesta para elegir el menú del viernes, con los resultados en directo" }'
```

O con tu contenido en Markdown, y Doconda lo convierte en la página (respetando tu texto):

```json theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
{ "format": "artifact", "content": { "markdown": "# Menú del viernes\n\nVota entre:\n- Paella\n- Pizza\n- Sushi" }, "style": "colores cálidos, botones grandes" }
```

Cuesta como cualquier documento creado, según su [nivel de calidad](/es/guides/create#niveles-de-calidad).

La página es un único HTML (con las imágenes dentro), pensada para ordenador y móvil. Doconda la escribe para que guarde
sus datos en `doconda.db`, sin APIs externas, correo, pagos ni inicio de sesión, y lo hace cumplir al servirla: la página
solo puede cargar Tailwind (`cdn.tailwindcss.com`), Chart.js 4.4.1, d3 7.8.5 y dayjs 1.11.10 (de `cdnjs.cloudflare.com`)
y Google Fonts, y solo puede llamar a su propia dirección (la de `doconda.db`); el navegador bloquea cualquier otro
script, estilo, fuente, imagen o llamada. Los enlaces sí pueden abrir otras webs. El `artifact.html` que recibes con `retention: "none"`, que Doconda no aloja, no lleva ese límite.

Funcionan los tres [modos](/es/guides/modes): directo, `stream` y `background`. El [estilo](/es/guides/style), en tus palabras,
describe el aspecto de la página. En `sources`, como en los demás formatos: documentos (Word, Excel, PDF…, hasta 5, con
`prompt`), con cuyos datos reales se hace la página, e imágenes (hasta 10), que van dentro de la página, reducidas. Con
`content`, apúntalas desde el Markdown como `![pie](img:1)`. La página entera pesa como mucho 900 KB: si las imágenes no
caben, la página va sin las que sobran y el informe lo dice.

## Dónde guarda sus datos

Eliges uno de dos modos con `artifact.storage`:

| | `shared` (por defecto) | `local` |
| - | - | - |
| Quién ve los datos | Todos los que abren el enlace ven lo mismo | Cada visitante ve solo los suyos |
| Dónde se guardan | En Doconda | En el navegador de cada persona (no salen de él) |
| Para | Encuestas, listas de equipo, inscripciones, paneles | Calculadoras, borradores, listas personales |
| Tu programa puede leerlos | Sí (`GET /documents/{id}/data`) | No: Doconda nunca los recibe |

```json theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
{ "format": "artifact", "prompt": "Una calculadora de hipoteca que recuerde mis simulaciones", "artifact": { "storage": "local" } }
```

La página es la misma en los dos modos: usa `doconda.db` y Doconda decide dónde guardar.

## El enlace

Cuando está listo, `outputs` trae un `html` cuyo `url` es la página. Ese enlace es siempre el mismo y funciona hasta que
acaba la [retención](/es/guides/retention) del artifact (`expires_at`): compártelo o insértalo en tu producto. Para
retirarla antes, borra el artifact (`DELETE /v1/documents/{id}`).

```html theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
<iframe src="ARTIFACT_URL" sandbox="allow-scripts allow-same-origin allow-forms" style="width:100%;height:600px;border:0"></iframe>
```

Cada artifact se sirve en su propio subdominio, aislado de tu web, de Doconda y de los demás artifacts
(`allow-same-origin` se refiere a ese subdominio, que es el suyo).

<Warning>Quien tenga el enlace puede ver la página (y, en `shared`, guardar datos en ella) hasta que caduque. Dalo solo a quien deba usarla.</Warning>

## Guardar datos desde la página

Doconda añade `window.doconda.db` a la página. Guarda JSON por **colección** y **clave**:

```js theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
await doconda.db.set("votes", crypto.randomUUID(), { option: "A" }) // crea o sustituye
await doconda.db.get("votes", "abc")        // → los datos, o null
await doconda.db.list("votes")              // → [{ key, data, updated_at }], los 1.000 más recientes primero
await doconda.db.delete("votes", "abc")

// Al momento y cada vez que alguien cambie algo (también otras personas):
const stop = doconda.db.subscribe("votes", (votes) => render(votes))
```

* Nombres de colección y clave: letras, números, `_`, `-` o `.` (hasta 64).
* Cada registro, hasta 16 KB de JSON; cada artifact, hasta 5.000 registros. `list`, `subscribe` y
  `GET /documents/{id}/data/{collection}` devuelven los 1.000 más recientes de la colección.
* Por artifact y minuto: hasta 1.200 lecturas y 120 escrituras. Por encima, `429 rate_limited`.
* La página se sirve en su propio subdominio y con `sandbox` (scripts, formularios, ventanas y descargas permitidos, en
  su propio origen): no puede leer nada de tu web, de Doconda ni de otros artifacts. Para guardar, usa `doconda.db`; en
  `local`, `doconda.db` guarda en el `localStorage` del navegador.

## Leer los datos desde tu programa

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
curl https://api.eu.doconda.com/v1/documents/doc_…/data \
  -H "Authorization: Bearer $DOCONDA_API_KEY"
# { "data": [{ "collection": "votes", "records": 42 }] }

curl https://api.eu.doconda.com/v1/documents/doc_…/data/votes \
  -H "Authorization: Bearer $DOCONDA_API_KEY"
```

## Cuánto dura

Un artifact se guarda lo que diga su [retención](/es/guides/retention), como cualquier documento (30 días por defecto,
como mucho 90). Al acabar, su página deja de funcionar y sus datos se borran: si lo quieres más tiempo, genéralo de
nuevo.

Con `retention: "none"`, un artifact solo puede ser `local`, y Doconda no lo aloja: se entrega como un fichero
**`artifact.html`** para que lo subas a tu web (a los 15 minutos lo borramos). Sus datos se quedan en el navegador de
cada visitante.

## Dónde se guarda

Como los demás documentos, la página de un artifact y sus datos `shared` se guardan en la Unión Europea (Irlanda).


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