💻

Guia de cURL

Herramienta de linea de comandos. Ya viene instalado en Mac, Linux y Windows 10+. Ideal para scripts, servidores y CI/CD.

Tiempo: 10 min Nivel: Principiante-Intermedio OS: Windows, Mac, Linux Precio: Gratis (open source)

cURL (Client URL) es la herramienta de linea de comandos mas antigua y usada para hacer requests HTTP. Existe desde 1997, funciona en cualquier sistema operativo, y es lo que usa internamente Postman/Insomnia cuando les pides "Generate cURL code".

¿Por que aprenderlo? 1) Esta en todos lados: cualquier servidor Linux, Mac, Docker, etc lo trae preinstalado. 2) Es perfecto para scripts: puedes hacer `curl | jq` para extraer un campo especifico. 3) Es lo que ves en tutoriales: 90% de los tutoriales tecnicos usan cURL como ejemplo. 4) Funciona en CI/CD: en GitHub Actions, GitLab CI, Jenkins, etc. donde no hay interfaz grafica.

En esta guia abrimos una terminal, copiamos un comando cURL pre-armado de la documentacion, y aprendemos a leer la respuesta.

Conceptos que necesitas saber

Terminal / Shell

Una ventana donde escribes comandos de texto en vez de hacer click. En Windows se llama "cmd" o "PowerShell". En Mac/Linux se llama "Terminal" o "Bash". Es como el "DOS" de los 90, pero moderno.

HTTP method

El verbo de la peticion. GET = pedir datos. POST = enviar datos para crear. PUT = actualizar. DELETE = borrar. En cURL se especifica con -X GET, -X POST, etc.

Header

Metadata de la peticion. En cURL se especifican con -H "Nombre: Valor". Van ANTES del body.

Body / Payload

Los datos que envias al servidor. En cURL se especifica con -d "..." (para POST) o --data-binary @archivo.json (para JSONs grandes).

Pipe (|)

El caracter | manda el output de un comando a otro. Por ejemplo: curl https://api.com | jq .data.nombre extrae solo el campo "nombre" del JSON.

jq

Una herramienta externa (opcional) que formatea y filtra JSON. Si la instalas (brew install jq o apt install jq), `curl ... | jq .` formatea la respuesta con colores.

💡
Lo que vas a lograr: Importar la coleccion SAT API, configurar tu API key y hacer tu primera llamada en 10 min.
📝
Lo que necesitas: cURL instalado, una API key de SAT API, y conexion a internet.

Paso a paso

  1. 1

    Que es cURL y por que aprenderlo

    cURL existe desde 1997, es open source, y viene preinstalado en Mac, Linux, Windows 10+ y Windows 11. Saber usarlo es como saber usar Excel: no es glamorous pero es super util y todos los developers lo terminan necesitando.

  2. 2

    Abre una terminal

    Windows: presiona Win+R, escribe "cmd" o "powershell", Enter. Mac: Cmd+Espacio, escribe "Terminal", Enter. Linux: Ctrl+Alt+T (en la mayoria de distros).

  3. 3

    Verifica que tienes cURL instalado

    Escribe: curl --version y presiona Enter. Deberias ver algo como "curl 7.81.0" seguido de las caracteristicas. Si dice "comando no encontrado", tienes Windows 7 o anterior: descarga cURL de curl.se/windows.

  4. 4

    En otra ventana, ve a /docs/ y abre cualquier endpoint

    Por ejemplo https://api.cfdi4.com/docs/endpoints. Cada endpoint tiene un boton "cURL" que copia el comando al portapapeles.

  5. 5

    Click en el boton "cURL" de un endpoint

    Esto copia un comando largo a tu portapapeles. Se ve asi: curl -X POST https://api.cfdi4.com/api/v1/usuario/datos-fiscales -H "User-Agent: MiApp/1.0" -H "Authorization: Bearer sat_xxxxx" -H "Content-Type: application/json" -d '{"rfc":"XAXX010101000"}'

  6. 6

    Reemplaza "sat_xxxxx" con tu API key real

    Pega el comando en un editor de texto (Notepad, VSCode), busca "sat_" y reemplaza toda la string con tu API key real.

  7. 7

    Pega el comando modificado en tu terminal y presiona Enter

    Veras una explosion de texto JSON. Eso es la respuesta del servidor.

  8. 8

    Para ver la respuesta formateada con colores, instala "jq"

    Mac: brew install jq. Ubuntu/Debian: sudo apt install jq. Windows: descarga de https://stedolan.github.io/jq/download/

  9. 9

    Pipe la respuesta a jq para formatearla

    Agrega | jq al final del comando: curl ... | jq. Veras el JSON con colores, identado y collapsible. Mucho mas legible.

  10. 10

    Para guardar la respuesta en un archivo, agrega -o archivo.json

    curl ... -o respuesta.json guarda el JSON sin imprimirlo. Util para analisis posterior o para automatizar.

  11. 11

    Para ver solo el tiempo de respuesta, agrega -w "%{time_total}"

    curl -o /dev/null -s -w "Tiempo: %{time_total}s\n" https://api.cfdi4.com/health. El flag -o /dev/null descarta el body, -s es silent mode.

  12. 12

    Para ver los headers de respuesta, agrega -i

    curl -i https://api.cfdi4.com/health. La "-i" (include headers) muestra los headers HTTP antes del body. Util para debuggear caching, CORS, etc.

  13. 13

    Para hacer un POST con body desde archivo, usa --data-binary @archivo

    Crea un archivo body.json con tu JSON, despues: curl -X POST ... --data-binary @body.json. Util cuando el JSON es muy largo o tiene caracteres especiales.

  14. 14

    Para repetir el request cada 5 segundos (monitoreo), usa watch + curl

    watch -n 5 "curl -s https://api.cfdi4.com/health | jq". watch viene preinstalado en Mac/Linux. En Windows puedes usar un loop bash o un script.

  15. 15

    Para seguir redirects (3xx), usa -L

    Por defecto cURL NO sigue redirects. Si el servidor responde 301 o 302, veras el codigo pero no el body final. Agrega -L (location) para seguirlos.

  16. 16

    Para ignorar errores SSL (NO recomendado en produccion), usa -k

    En desarrollo local con certificados self-signed, cURL falla con error SSL. -k los ignora. NUNCA uses -k en produccion: es un riesgo de seguridad.

  17. 17

    Crea un script bash con tus comandos favoritos

    Crea un archivo test.sh con varios curls: #!/bin/bash; curl -s https://api.cfdi4.com/health; echo ""; curl -s -X POST ... Dale permisos con chmod +x test.sh y ejecutalo cuando quieras.

Verificar que funciona

Si todo salio bien, deberias ver una respuesta JSON con cfdi_codigo: 1. Si ves error 401, revisa que tu API key este bien copiada (sin espacios al inicio/final).

{
  "cfdi_codigo": 1,
  "cfdi_texto": "OK",
  "data": { ... }
}

Problemas comunes

Error 401: Unauthorized

Tu API key no es valida o no la pusiste bien. Revisa que: 1) Empiece con sat_, 2) No tenga espacios, 3) El RFC este activo en el panel.

Error 403: Forbidden

Tu user-agent es muy generico. Anade -H \"User-Agent: MiApp/1.0\" a tu peticion.

Error 429: Too many requests

Superaste el rate limit (60 req/min). Espera 60 segundos.

Error 500: Internal server error

El upstream del SAT esta teniendo problemas. Reintenta en unos minutos. Si persiste, contactanos.

Error 503: Service unavailable

El sistema esta en mantenimiento. Revisa panel.cfdi4.com para avisos.

No me aparece la coleccion al importar

Asegurate de usar la URL exacta. Algunos clientes requieren la spec OpenAPI, otros la coleccion Postman. Revisa el paso correspondiente.