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 "https://edge.datil.com/api/v1/documents?page[limit]=1" \
-H "Authorization: Bearer $DATIL_API_KEY"
{
"error": {
"code": "unauthorized",
"message": "Llave de API inválida o revocada."
}
}
{
"error": {
"code": "forbidden",
"message": "El API de facturación requiere el plan Empresa."
}
}