Code API
Minifica, formatea y convierte JavaScript, CSS, HTML, SVG, JSON, XML y decenas de pares de lenguajes, con un contrato REST en JSON limpio.
Texto de entrada → texto de salida. Envía un fragmento en JSON y recibe el resultado minificado, formateado o convertido. Funciona con las mismas herramientas de Node (Terser, clean-css, html-minifier-terser, prettier, svgo) que nuestras herramientas web, así que el resultado coincide exactamente.
# Minify a JavaScript snippet
curl -X POST https://jinero.online/api/v1/code/minify \
-H "Content-Type: application/json" \
-d '{"code": "function add(a, b) { return a + b; }", "type": "js"}'
const r = await fetch("https://jinero.online/api/v1/code/minify", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ code: source, type: "js", mode: "minify" }),
});
const { output, savings_percent } = await r.json();
Todos los endpoints son públicos: no se necesita clave. Las operaciones son simples transformaciones de texto (sin GPU ni procesamiento de imágenes), así que los límites son más altos que en la Images API.
# Anonymous limits (per IP):
# POST /code/minify 30 req/min
# POST /code/detect 30 req/min
# POST /code/convert 30 req/min
# GET /code/converters 30 req/min
# Max snippet size: 200,000 chars (~200 KB)
Comprime o formatea de forma legible un fragmento. El mismo endpoint funciona en ambos sentidos con el parámetro mode: útil cuando tienes archivos de configuración JSON o CSS minificado en una sola línea que quieres leer.
https://jinero.online/api/v1/code/minify
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Código fuente. Máximo 200.000 caracteres. |
type |
string | Uno de: js, css, html, svg, json, xml, auto. Usa "auto" para que el servidor detecte el contenido. |
mode |
string | minify (predeterminado) o beautify. |
keep_license |
boolean | Conserva los comentarios de licencia /*! ... */ al minificar. Predeterminado: true. |
curl -X POST https://jinero.online/api/v1/code/minify \
-H "Content-Type: application/json" \
-d @- <<JSON
{
"code": ".btn { color: red; padding: 8px 12px; }",
"type": "css",
"mode": "minify"
}
JSON
const r = await fetch("https://jinero.online/api/v1/code/minify", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
code: cssSource,
type: "css",
mode: "minify",
keep_license: true,
}),
});
const data = await r.json();
$response = Http::post("https://jinero.online/api/v1/code/minify", [
"code" => $jsSource,
"type" => "js",
"mode" => "minify",
]);
$minified = $response->json("output");
{
"success": true,
"type": "css",
"mode": "minify",
"output": ".btn{color:red;padding:8px 12px}",
"original_size": 46,
"output_size": 27,
"savings_percent": 41.3,
"line_count": 1
}
Detecta automáticamente el lenguaje de un fragmento. Devuelve el tipo detectado y la lista de formatos de destino de los convertidores que lo aceptan como entrada: útil para crear menús desplegables de “convertir a…”.
https://jinero.online/api/v1/code/detect
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Código fuente. Máximo 200.000 caracteres. |
curl -X POST https://jinero.online/api/v1/code/detect \
-H "Content-Type: application/json" \
-d '{"code": "{\"name\": \"jinero\"}"}'
const r = await fetch("https://jinero.online/api/v1/code/detect", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ code: snippet }),
});
const { detected_type, available_targets } = await r.json();
{
"success": true,
"detected_type": "json",
"confidence": 0.97,
"available_targets": ["yaml", "toml", "xml", "csv"]
}
Consulta todas las conversiones admitidas (from → to) con el esquema de opciones de cada par. Úsalo para crear interfaces que se adapten automáticamente cuando añadamos nuevos convertidores.
https://jinero.online/api/v1/code/converters
curl https://jinero.online/api/v1/code/converters
const r = await fetch("https://jinero.online/api/v1/code/converters");
const { converters } = await r.json();
// converters is a flat list of { id, from, to, label, optionsSchema }
{
"success": true,
"converters": [
{ "id": "json-to-yaml", "from": "json", "to": "yaml", "label": "JSON → YAML", "optionsSchema": {} },
{ "id": "css-to-scss", "from": "css", "to": "scss", "label": "CSS → SCSS", "optionsSchema": {} },
{ "id": "html-to-pug", "from": "html", "to": "pug", "label": "HTML → Pug", "optionsSchema": {} }
]
}
Convierte un fragmento de un lenguaje a otro. Admite JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX y más: llama a /code/converters para ver la lista completa.
https://jinero.online/api/v1/code/convert
| Parámetro | Tipo | Descripción |
|---|---|---|
code |
string | Código fuente. Máximo 200.000 caracteres. |
from |
string | Identificador del lenguaje de origen, tomado de /code/converters. |
to |
string | Identificador del lenguaje de destino. |
options |
object | Ajustes específicos de cada convertidor (consulta optionsSchema en /code/converters). |
curl -X POST https://jinero.online/api/v1/code/convert \
-H "Content-Type: application/json" \
-d '{"code": "{\"name\": \"jinero\"}", "from": "json", "to": "yaml"}'
const r = await fetch("https://jinero.online/api/v1/code/convert", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
code: jsonSource,
from: "json",
to: "yaml",
}),
});
const { output } = await r.json();
$res = Http::post("https://jinero.online/api/v1/code/convert", [
"code" => $cssSource,
"from" => "css",
"to" => "scss",
]);
$scss = $res->json("output");
{
"success": true,
"from": "json",
"to": "yaml",
"output": "name: jinero\n",
"notes": null
}
Semántica HTTP estándar. Los errores devuelven un JSON con el campo "message", que describe el fallo.
// 422 — validation (unknown type, oversize snippet, unsupported converter)
{ "message": "The type field must be one of: js, css, html, svg, json, xml, auto." }
// 422 — minification/conversion error from the underlying tool
{ "message": "Unexpected token at line 12" }
// 429 — rate limit exceeded
{ "message": "Too Many Attempts." }
// 500 — registry unreachable (Node helper crashed)
{ "message": "Registry unavailable" }
Acerca de la Code API de jinero.online
API REST gratuita para minificar, formatear y convertir código (JS, CSS, HTML, SVG, JSON, YAML, TOML, XML, Pug, SCSS) con un único contrato JSON limpio.
Herramientas probadas
Terser, clean-css, html-minifier-terser, prettier, svgo: los mismos motores que usa todo el mundo, disponibles mediante un contrato REST limpio.
Matriz de conversiones
Más de 20 pares de lenguajes: JSON↔YAML↔TOML↔XML, CSS↔SCSS, HTML↔Pug, SVG↔JSX. Consúltalos en /code/converters.
Límites de solicitudes altos
30 solicitudes/minuto por IP: texto de entrada, texto de salida y ningún archivo guardado del que preocuparse.
Sin estado y privada
Los fragmentos se procesan en memoria y nunca se registran. No hay nada que limpiar después.
Preguntas frecuentes
No. La Code API es pública y tiene un límite de solicitudes por IP: 30 solicitudes/minuto en cada endpoint. Regístrate y obtén un token si necesitas límites más altos.
200.000 caracteres (~200 KB) por solicitud. Es suficiente incluso para archivos CSS empaquetados o configuraciones JSON muy grandes. Para trabajos de minificación enormes, usa Terser en local.
Sí. Ambos llaman a los mismos scripts auxiliares de Node (resources/node/minify.js y resources/node/converter.js) con los mismos parámetros, así que el comportamiento es idéntico.
Ahora mismo, más de veinte pares: JSON↔YAML↔TOML↔XML, CSV↔JSON, CSS↔SCSS, HTML↔Pug, SVG↔JSX y otros. Llama a GET /code/converters para obtener la lista actualizada y legible por máquinas, que incluye el esquema de opciones de cada par.
No. El cuerpo de la solicitud se escribe en un archivo temporal para el script auxiliar de Node, se procesa y se elimina de inmediato. No registramos el contenido del código, solo los metadatos de la solicitud (tamaño, tipo, código de estado) para aplicar los límites.