🔐

Autenticacion

Tu API key es como un gafete de acceso: lo pasas por el lector (header Authorization) en cada llamada. Esta guia te explica como obtenerlo, usarlo y mantenerlo seguro.

2 min
Obtener key
1
Header
SHA-256
Hash server-side
90 d
Rotacion
💡
Analogia del gafete: Imagina que la API es un edificio con seguridad. Tu API key es un gafete personalizado. Cada vez que entras, lo "pasas por el lector" (header Authorization). Si lo pierdes, lo reportas y te dan uno nuevo. Si alguien te lo roba, puede entrar como si fueras tu: por eso NO debes compartirlo.

Como obtener tu API key (2 min)

  1. 1

    Entra al Panel

    Ve a panel.cfdi4.com/login con tu usuario y contrasena.

  2. 2

    Ve a RFCs → selecciona tu RFC

    En el menu lateral izquierdo, click en RFCs y selecciona el RFC para el cual necesitas la key.

  3. 3

    Click en "Generar API key"

    Boton azul en la seccion API keys. Si ya tienes una, primero revala la anterior.

  4. 4

    Copia la key — solo se muestra UNA vez

    Si la pierdes, tienes que generar una nueva (la anterior se invalida al instante).

  5. 5

    Guardala en lugar seguro

    Variable de entorno (.env, secrets manager). NO en codigo, ni en un doc de texto, ni en un chat.

Como usar tu API key

Incluyela en el header Authorization con prefijo Bearer:

curl -X POST https://api.cfdi4.com/api/v1/usuario/datos-fiscales \
  -H "User-Agent: MiApp/1.0" \
  -H "Authorization: Bearer sat_2955d29be541ed4d73f625576ef6c7652f654a21e0bd7cbe" \
  -H "Content-Type: application/json" \
  -d '{"rfc": "XAXX010101000"}'
⚠️
Por que "Bearer"? Es el estandar HTTP (RFC 6750). Significa "el portador de este token". Es la forma estandar de enviar tokens de acceso. Otros formatos que veras: Basic (usuario:contrasena en base64) y Digest (con hash).

Donde enviar la key (y donde NO)

✅
Header Authorization

El unico lugar seguro. Por convencion NO se loguea.

❌
URL query string

Los logs del server registran la URL completa → la key queda expuesta.

❌
Body de la peticion

Puede ser cacheado por proxies → leak historico.

❌
Path de la URL

Lo mismo que query string: queda en logs y proxies.

Rotacion de keys (cada 90 dias)

Como buena practica, rota tu API key cada 90 dias. O inmediatamente si sospechas que fue comprometida.

  1. Ve al RFC correspondiente en el Panel
  2. Seccion API keys → click Revocar junto a la key actual
  3. Click Generar nueva API key
  4. Actualiza la variable de entorno en tu app y redeploya
⚠️
Cuidado: la key revocada deja de funcionar al instante (sin periodo de gracia). Si rotas sin actualizar tu app, todas las llamadas fallan con error 1002. Hazlo en horario de bajo trafico.

Errores comunes

CodigoSignificadoSolucion rapida
1001API key invalida o no proporcionadaVerifica que el header diga Bearer sat_xxx (no Basic, no solo la key sin Bearer)
1002API key revocada o expiradaGenera una nueva en el Panel
1003Operacion no habilitada para este RFCHabilita la operacion en Panel → Operaciones
1004Saldo insuficienteRecarga creditos en Panel → Saldos
6001User-Agent no permitidoAnade -H \"User-Agent: MiApp/1.0\"

Mejores practicas

✅ HACER

  • Guardar la key en variable de entorno (SAT_API_KEY)
  • Rotar cada 90 dias o si hay compromiso
  • Keys diferentes para dev / staging / prod
  • Monitorear logs del Panel para detectar uso anomal
  • Usar HTTPS siempre (la key viaja en cada request)

❌ NO HACER

  • Commitear la key a Git (queda en el historial)
  • Compartirla entre personas
  • Hardcodearla en el codigo (const API_KEY = "sat_...")
  • Exponerla en logs o mensajes de error
  • Reutilizarla en multiples apps
  • Ponerla en un cliente (frontend, app movil)

Whitelisting de IP (opcional)

📝
Si quieres mas seguridad, contactanos para whitelisting de IPs. Esto eleva tu rate limit de 100 a 600 req/min y reduce el riesgo de uso fraudulento si tu key se filtra. Requiere IP fija (no funciona con serverless o NAT compartida).

Ejemplos en 7 lenguajes

Ve a /docs/ejemplos/curl y los demas lenguajes para ver codigo listo para copiar.