Autenticación

Aprende cómo autenticarte con Atto usando API Keys

API Keys

Atto utiliza API Keys para autenticar las peticiones. Tu API Key debe incluirse en el header X-API-Key de cada petición.

curl -X POST http://localhost:3000/factura/emitir \
  -H "X-API-Key: sk_user_tu_hash_de_64_caracteres_aqui" \
  -H "Content-Type: application/json" \
  -d '{"items":[...],"pagos":[...],"receptor":{...}}'

Alternativamente, también puedes usar el header Authorization sin el prefijo Bearer:

curl -X POST http://localhost:3000/factura/emitir \
  -H "Authorization: sk_user_tu_hash_de_64_caracteres_aqui" \
  -H "Content-Type: application/json"

Formato de API Keys

Usuario Normal: sk_user_

Las API keys de usuario comienzan con sk_user_ seguido de un hash de 64 caracteres.

Ejemplo: sk_user_a1b2c3d4e5f6...

Administrador: sk_admin_

Las API keys de administrador comienzan con sk_admin_ seguido de un hash de 64 caracteres.

Ejemplo: sk_admin_a1b2c3d4e5f6...

Contexto de API Keys

Cada API key está asociada automáticamente a:

🏢 Emisor (issuerId)

El emisor asociado a esta API key. No necesitas enviar nitEmisor en el body de tus peticiones, se inyecta automáticamente.

🏪 Sucursal (branchOfficeId)

La sucursal asociada a esta API key. Se usa automáticamente para generar el correlativo correcto.

🌍 Ambiente (PRUEBAS o PRODUCCION)

El ambiente asociado a esta API key. Los DTEs se enviarán al Ministerio de Hacienda en el ambiente configurado.

💡 Tip: Puedes crear múltiples API keys con diferentes emisores, sucursales y ambientes según tus necesidades.

Headers Requeridos

Solo necesitas 2 headers para hacer peticiones a la API:

{
  "X-API-Key": "sk_user_tu_hash_de_64_caracteres_aqui",
  "Content-Type": "application/json"
}

⚠️ Importante: NO uses Authorization: Bearer. El header correcto es X-API-Key o simplemente Authorization sin el prefijo Bearer.

Errores de Autenticación

Si tu API Key es inválida, expirada o falta, recibirás una respuesta 401:

API Key inválida o faltante
{
  "message": "Unauthorized",
  "statusCode": 401
}

Si tu API Key ha expirado:

API Key expirada
{
  "message": "API Key expirada",
  "statusCode": 401
}

Si tu API Key fue eliminada (soft delete):

API Key eliminada
{
  "message": "API Key eliminada",
  "statusCode": 401
}