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

# Documentos

> POST /api/v1/ecf, consulta, modos online y diferido.

## Enviar

```
POST https://api.emite.do/api/v1/ecf
Content-Type: application/json
X-API-Key: <api-key>
```

Query:

* `mode=online` (default): firma, envía y consulta vía workers.
* `mode=deferred`: requiere `scheduled_for`.

Campos:

| Campo             | Obligatorio   | Notas                                                                                                 |
| ----------------- | ------------- | ----------------------------------------------------------------------------------------------------- |
| `idempotency_key` | Sí            | Única por empresa. Misma key = `200` del original, sin comparar el payload.                           |
| `ecf_type`        | Sí            | Todos: `31` `32` `33` `34` `41` `43` `44` `45` `46` `47` (E31–E47). No hay tipos “fuera de contrato”. |
| `payload`         | Sí            | Nombres DGII exactos. Sin wrapper `ECF`.                                                              |
| `environment`     | No            | Default de la empresa. `eCF` se normaliza a `ecf`.                                                    |
| `external_id`     | No            | ID de tu ERP. No reemplaza `public_id` ni la idempotency key.                                         |
| `scheduled_for`   | Solo diferido | ISO-8601 UTC.                                                                                         |

El payload de ejemplo está en [Quickstart](/quickstart).

## Consultar

```bash theme={null}
curl https://api.emite.do/api/v1/ecf/$PUBLIC_ID \
  -H "X-API-Key: $EMITE_API_KEY"
```

Listado y filtros: `GET /api/v1/client/documents`.

Contrato de estados: `GET /api/v1/ecf/states`.

## Diferido

```json theme={null}
{
  "idempotency_key": "factura-diferida-001",
  "ecf_type": "31",
  "environment": "ecf",
  "scheduled_for": "2026-09-01T08:00:00Z",
  "payload": {}
}
```

## Inbox (compras)

Los e-CF que te emiten como receptor: `GET /api/v1/client/inbox`. El XML y el ARECF se descargan por rutas hijas. No confundas esto con el depósito de DGII.
