Saltar al contenido

🌐 OpenAPI → Generador de Comandos cURL

Pega una especificación OpenAPI 3.x (YAML o JSON) y genera comandos cURL ejecutables para cada endpoint.

100% Gratis Sin registro Solo navegador 5 idiomas Modo oscuro
🔒 Privacidad garantizada: Tu especificación OpenAPI nunca se envía. Todo el análisis ocurre dentro del navegador.

Comandos cURL generados

🔗 Herramientas relacionadas

📖 Dónde se suele tropezar

Pega un documento OpenAPI 3.x en YAML o JSON y cada endpoint sale convertido en un comando cURL ejecutable. El análisis ocurre en el navegador y la especificación nunca se sube. Lo único que hace es reordenar mecánicamente lo que dice el documento en forma de comando, y nada garantiza que funcione tal cual: la calidad del resultado es casi exactamente una función de cuántos valores example se molestó en escribir la especificación de partida.

Caso Qué ocurre Qué hacer
El cuerpo de la petición sale vacío o como {} Casi siempre significa un $ref que apunta a otro archivo. Una referencia como $ref: "./schemas/user.yaml#/User" no puede resolverse desde el único documento que has pegado, y repartir los esquemas en varios archivos es lo normal en cualquier API de tamaño considerable, así que en la práctica este es el caso habitual y no la excepción. Las referencias dentro del mismo archivo, como #/components/schemas/User, sí se resuelven, pero allOf, oneOf y anyOf no pueden expandirse del todo: con oneOf, la propia especificación no dice qué rama elegir. Empaqueta la especificación en un único archivo antes de pegarla: npx @redocly/cli bundle openapi.yaml -o bundled.yaml o npx swagger-cli bundle openapi.yaml -o bundled.json -r incorporan todas las referencias externas. Es un paso que merece la pena tener en CI de todos modos: si el empaquetado falla es que hay una referencia rota, así que sirve además como comprobación de enlaces de tu especificación. Si el documento abusa de allOf, añadir --dereferenced para aplanarlo por completo acerca mucho el cuerpo generado a lo que realmente hay que enviar.
El comando generado devuelve 400 o 422 Una propiedad sin example sólo puede rellenarse mecánicamente a partir de su tipo: "string" si es cadena, 0 si es número. Pero las API reales sólo aceptan "active" o "archived" en status, exigen que created_at sea date-time, y así. Un 400, por tanto, no suele ser un defecto de la herramienta sino la prueba de que la especificación omitió sus ejemplos. Un enum o un format sí se leen, pero restricciones del tipo este valor debe ser coherente con aquel otro campo no son expresables en la especificación, así que nada puede rellenarlas. El arreglo correcto es añadir valores example a la especificación. Cada uno que añadas mejora también las muestras de Swagger UI, las respuestas de tu servidor simulado y las pruebas de los clientes generados. No es trabajo inútil para contentar a una herramienta: es una mejora directa de la documentación de la API. La autenticación suele faltar en la especificación, así que sobrescríbela en el campo de cabecera de autenticación de esta página. Un 401 apunta a la autenticación y un 400 o 422 al cuerpo, lo que separa limpiamente ambos casos; y añadir curl -v para ver las cabeceras que se envían de verdad es la vía más corta para distinguirlos.
No se genera absolutamente nada Comprueba si el documento empieza por swagger: "2.0". Swagger 2.0 es otra especificación con otra forma: el servidor es host más basePath más schemes en lugar de servers, el cuerpo de la petición vive en parameters como in: body en lugar de en requestBody, y el tipo de medio está en un consumes de nivel superior en vez de bajo content. No es un cambio de número de versión: se ha movido todo sitio del que leerías. La otra causa frecuente es una indentación de YAML rota: un tabulador perdido hace fallar el YAML sin excepción. Convierte primero a 3.x: npx swagger2openapi swagger.yaml -o openapi.yaml hace exactamente eso y el contenido existente se traslada casi mecánicamente. Swagger 2.0 lleva en modo mantenimiento desde que 3.0 llegó en 2017, así que esta conversión es trabajo que necesitarás tarde o temprano de todas formas. Para saber si la culpa es del YAML, conviértelo a JSON y pega eso: separa los dos casos al instante (conversor YAML y JSON). Si el JSON funciona, era la indentación; si sigue sin funcionar, el problema es la versión o la estructura.

No entregues los comandos generados tal cual. Sobrescribir la cabecera de autenticación incrusta tu token real en texto plano en todos los comandos producidos: pegarlo en Slack, en una incidencia o en un documento es, en cada caso, una fuga de credenciales. Para compartir, sustitúyelo antes por una variable de entorno, como en -H "Authorization: Bearer $API_TOKEN". Incluso si sólo lo ejecutas tú, el comando entero queda en texto plano en el archivo de historial del intérprete (anteponer un solo espacio lo mantiene fuera del historial en la mayoría de intérpretes). Una cosa más: si la especificación sólo da entradas servers relativas, como /api/v1, no hay host y los comandos no pueden ejecutarse sin retoques: complétalo con el campo de sobrescritura de URL base de esta página.

📖 Cómo usar

  1. 1
    Pega la especificación OpenAPI
    Pega tu especificación OpenAPI 3.x en YAML o JSON. Usa Ejemplo para cargar uno.
  2. 2
    Configurar opciones
    Opcionalmente sobrescribe la URL base o agrega un encabezado Authorization. Elige el estilo de salida.
  3. 3
    Copiar los comandos cURL
    Cada endpoint aparece como una tarjeta con un botón de copia al portapapeles.

❓ Preguntas frecuentes

¿Soporta Swagger 2.0?
Soporta principalmente OpenAPI 3.x. Swagger 2.0 funciona en lo básico, pero $ref es soporte parcial.
¿Cómo se rellena el cuerpo de la petición?
Usa primero el example de requestBody o de cada propiedad; si no, genera un valor de muestra según el tipo.
¿Puedo ejecutar los comandos directamente?
Contienen valores de muestra y tokens ficticios; reemplázalos por valores reales antes de ejecutar.
🐛 ¿Encontró un problema con esta herramienta?

Gratis, sin registro. Incluso solo los pasos para reproducir ayudan. Los informes van directamente al operador y se usan para corregir.

* Se envía automáticamente la info del navegador (UA / pantalla / idioma / URL) para reproducir