Documentación

Autenticación

Toda la API se autentica con una llave en el encabezado Authorization: Bearer dtl_… . No hay sesiones ni OAuth: la llave ES la identidad de tu integración, y dice a qué alcance pertenece — un libro contable en facturación y contabilidad, una organización en firma.

Llaves por libro#

Las llaves se crean en Contabilidad → Configuración → API, una por sistema que integra. Cada llave pertenece a UN libro contable: todo lo que emite y todo lo que lee queda acotado a ese libro por la política de cada recurso — no existe un parámetro para pedir otro libro.

El secreto se muestra una sola vez#

Al crear la llave ves el secreto completo una única vez; después el sistema conserva solo el prefijo ( dtl_ + 8 caracteres, para identificarla) y un hash SHA-256. Si lo pierdes, revócala y crea otra. Una llave desconocida, revocada o con secreto equivocado responde el mismo 401 uniforme — desde afuera son indistinguibles.

Llaves de firma#

El producto de firma tiene sus propias llaves, en Admin → Configuración → Integración. Cada una pertenece a UNA organización y puede acotarse a un producto (firma, certificados); sin acotar, alcanza todos los de esa organización. Se revocan de una en una, sin tocar a las demás.

Como la llave dice a qué organización pertenece, las rutas de firma responden igual en https://edge.datil.com y en https://<empresa>.datil.id . Cuando llamas por el host de tu organización, ambos deben coincidir: una llave de otra organización responde 401 en vez de resolverse a favor de uno de los dos.

El plan Empresa#

Una llave válida necesita además que la organización tenga la capacidad accounting_api (plan Empresa). Sin ella, la respuesta es 403 — la llave existe, la puerta no está incluida en el plan.

cURL
curl "https://edge.datil.com/api/v1/documents?page[limit]=1" \
  -H "Authorization: Bearer $DATIL_API_KEY"
401 · unauthorized
{
  "error": {
    "code": "unauthorized",
    "message": "Llave de API inválida o revocada."
  }
}
403 · forbidden
{
  "error": {
    "code": "forbidden",
    "message": "El API de facturación requiere el plan Empresa."
  }
}
Sin conexión — reintentando…

Esenciales

Sesión, seguridad, idioma y tema. Sin ellas el sitio no funciona.

Siempre activas