Images API
API REST pública para convertir y optimizar imágenes. Acepta imágenes rasterizadas y SVG, y devuelve PNG, JPG, WebP o AVIF: formatos modernos que Google valora.
Una API REST pública y gratuita para convertir y optimizar imágenes rasterizadas y vectoriales. Subida de un solo archivo, procesamiento rápido y una URL de descarga como respuesta.
# Convert SVG to WebP
curl -X POST https://jinero.online/api/v1/images/convert \
-F "[email protected]" \
-F "format=webp" \
-F "preset=balanced"
const form = new FormData();
form.append("image", file);
form.append("format", "webp");
form.append("preset", "balanced");
const r = await fetch("https://jinero.online/api/v1/images/convert", { method: "POST", body: form });
const { download_url, new_size } = await r.json();
console.log(download_url);
Todos los endpoints son públicos: no se necesita clave. La conversión y la optimización consumen mucha CPU, así que sus límites son más estrictos que los de la Fonts API. Los límites siguientes son por IP.
# Anonymous limits (per IP):
# POST /convert 5 req/min
# POST /optimize 5 req/min
# GET /download/* 10 req/min
# GET /formats 60 req/min
# All responses include:
# X-RateLimit-Limit: 5
# X-RateLimit-Remaining: N
# Retry-After: seconds (on 429)
Sube una imagen y recíbela en otro formato. Ideal para pasar a formatos modernos (WebP, AVIF) en la web.
https://jinero.online/api/v1/images/convert
| Parámetro | Tipo | Descripción |
|---|---|---|
image |
archivo (multipart) | Archivo de entrada. Acepta jpg, jpeg, png, gif, bmp, webp, avif, heic, svg. Máximo 10 MB. |
format |
string | Formato de salida: png, jpeg, webp o avif. |
preset |
string | Preajuste de calidad: light, balanced (predeterminado) o strong. |
curl -X POST https://jinero.online/api/v1/images/convert \
-F "[email protected]" \
-F "format=webp" \
-F "preset=balanced"
// Browser FormData example
const fileInput = document.getElementById("file");
const form = new FormData();
form.append("image", fileInput.files[0]);
form.append("format", "webp");
form.append("preset", "balanced");
const res = await fetch("https://jinero.online/api/v1/images/convert", {
method: "POST",
body: form,
});
const data = await res.json();
window.location = data.download_url;
$response = Http::attach(
"image",
file_get_contents("photo.png"),
"photo.png"
)->post("https://jinero.online/api/v1/images/convert", [
"format" => "webp",
"preset" => "balanced",
]);
$result = $response->json();
$webpUrl = $result["download_url"];
{
"success": true,
"session_id": "1d2e3f...",
"original_name": "photo.png",
"original_format": "png",
"output_format": "webp",
"original_size": 1024512,
"new_size": 156320,
"savings_percent": 84.7,
"dimensions": "1920x1080",
"preset": "balanced",
"download_url": "https://jinero.online/api/v1/images/download/1d2e3f...",
"expires_in_minutes": 60
}
Comprime sin cambiar el formato. Útil para reducir archivos PNG/JPG que ya están en el formato correcto pero pesan demasiado.
https://jinero.online/api/v1/images/optimize
| Parámetro | Tipo | Descripción |
|---|---|---|
image |
archivo (multipart) | Imagen rasterizada (PNG, JPG, GIF, BMP, WebP, AVIF, HEIC). Aquí no se acepta SVG: rasterízalo primero con /convert. |
preset |
string | light = casi sin pérdida, balanced = recomendado, strong = máxima compresión. |
curl -X POST https://jinero.online/api/v1/images/optimize \
-F "[email protected]" \
-F "preset=strong"
const form = new FormData();
form.append("image", file);
form.append("preset", "balanced");
const r = await fetch("https://jinero.online/api/v1/images/optimize", { method: "POST", body: form });
const { new_size, savings_percent } = await r.json();
console.log(`Saved ${savings_percent}%`);
$res = Http::attach("image", file_get_contents("big.jpg"), "big.jpg")
->post("https://jinero.online/api/v1/images/optimize", ["preset" => "strong"]);
$data = $res->json();
{
"success": true,
"session_id": "...",
"original_format": "jpeg",
"output_format": "jpeg",
"original_size": 2354821,
"new_size": 612491,
"savings_percent": 74.0,
"download_url": "https://jinero.online/api/v1/images/download/..."
}
Convierte imágenes rasterizadas en SVG limpio con VTracer. Ideal para logotipos, iconos e ilustraciones planas. Devuelve tanto el marcado SVG sin procesar como un ZIP empaquetado.
https://jinero.online/api/v1/images/vectorize
| Parámetro | Tipo | Descripción |
|---|---|---|
image |
archivo (multipart) | Imagen rasterizada (jpg, jpeg, png, gif, bmp, webp). Máximo 10 MB. |
preset |
string | logo (predeterminado) · illustration · photo · sketch. Determina la cuantización de colores y la simplificación de los trazados. |
curl -X POST https://jinero.online/api/v1/images/vectorize \
-F "[email protected]" \
-F "preset=logo"
# Then fetch the SVG:
curl https://jinero.online/api/v1/images/vectorize/svg/SESSION_ID > out.svg
const form = new FormData();
form.append("image", file);
form.append("preset", "logo");
const r = await fetch("https://jinero.online/api/v1/images/vectorize", { method: "POST", body: form });
const { svg_url } = await r.json();
const svg = await fetch(svg_url).then(x => x.text());
{
"success": true,
"session_id": "...",
"output_format": "svg",
"preset": "logo",
"dimensions": "1024x1024",
"svg_url": "https://jinero.online/api/v1/images/vectorize/svg/...",
"download_url": "https://jinero.online/api/v1/images/vectorize/download/..."
}
Eliminación de fondos con IA (familia rembg / u2net). Devuelve un PNG transparente. Entrada máxima de 5 MB para mantener una latencia razonable.
https://jinero.online/api/v1/images/remove-background
| Parámetro | Tipo | Descripción |
|---|---|---|
image |
archivo (multipart) | Imagen rasterizada. Máximo 5 MB. |
preset |
string | standard (predeterminado, rápido) · portrait (mejores bordes en el cabello) · quality · ultra (el más lento, el mejor). |
curl -X POST https://jinero.online/api/v1/images/remove-background \
-F "[email protected]" \
-F "preset=quality"
const form = new FormData();
form.append("image", file);
form.append("preset", "portrait");
const r = await fetch("https://jinero.online/api/v1/images/remove-background", { method: "POST", body: form });
const { download_url } = await r.json();
{
"success": true,
"session_id": "...",
"output_format": "png",
"preset": "quality",
"dimensions": "1920x1080",
"download_url": "https://jinero.online/api/v1/images/remove-background/download/..."
}
Ampliación 2× con IA mediante Real-ESRGAN. Públicamente solo está disponible 2×: las escalas mayores (4×) y otros modos (restauración de caras, reducción de ruido, auto) por ahora solo están en la interfaz web, porque la GPU es costosa.
https://jinero.online/api/v1/images/upscale
| Parámetro | Tipo | Descripción |
|---|---|---|
image |
archivo (multipart) | Imagen rasterizada. Máximo 15 MB. Formatos: jpg, jpeg, png, webp, bmp. |
scale |
integer | Por ahora solo se admite "2". Los demás modos (face, denoise, auto) están disponibles temporalmente solo en la interfaz web. |
curl -X POST https://jinero.online/api/v1/images/upscale \
-F "[email protected]" \
-F "scale=2"
const form = new FormData();
form.append("image", file);
form.append("scale", "2");
const r = await fetch("https://jinero.online/api/v1/images/upscale", { method: "POST", body: form });
const { download_url, dimensions } = await r.json();
{
"success": true,
"session_id": "...",
"mode": "upscale",
"scale": 2,
"output_format": "png",
"dimensions": "3840x2160",
"download_url": "https://jinero.online/api/v1/images/upscale/download/..."
}
Obtén el resultado binario. Las sesiones son válidas durante 60 minutos desde su creación; después, el archivo se elimina. Cada endpoint de IA tiene su propia ruta de descarga (consulta los ejemplos de respuesta).
https://jinero.online/api/v1/images/download/{session_id}
curl -L -o output.webp https://jinero.online/api/v1/images/download/1d2e3f...
// Trigger browser download
window.location.href = data.download_url;
Consulta en tiempo de ejecución los formatos de salida, preajustes y límites disponibles: útil para crear interfaces dinámicas que incorporen nuevos formatos automáticamente.
https://jinero.online/api/v1/images/formats
curl https://jinero.online/api/v1/images/formats
const r = await fetch("https://jinero.online/api/v1/images/formats");
const { output_formats, presets } = await r.json();
{
"output_formats": [
{"key": "png", "name": "PNG", "extension": ".png", "supports_alpha": true},
{"key": "jpeg", "name": "JPEG", "extension": ".jpg", "supports_alpha": false},
{"key": "webp", "name": "WebP", "extension": ".webp", "supports_alpha": true},
{"key": "avif", "name": "AVIF", "extension": ".avif", "supports_alpha": true}
],
"presets": [
{"key": "light", "name": "Light", "description": "Near lossless, minimal compression"},
{"key": "balanced", "name": "Balanced", "description": "Best quality/size ratio"},
{"key": "strong", "name": "Strong", "description": "Maximum compression, smaller files"}
],
"supported_inputs": ["jpg","jpeg","png","gif","bmp","webp","avif","heic","svg"],
"max_file_size_bytes": 10485760,
"max_file_size_mb": 10,
"session_ttl_minutes": 60
}
Semántica HTTP estándar. Los errores devuelven un JSON con el campo "message".
// 422 — validation (invalid format / unsupported file)
{ "message": "The image field must be a file of type: jpg, jpeg, png..." }
// 404 — download session not found or expired
{ "message": "Conversion result not found or expired" }
// 429 — rate limit exceeded
{ "message": "Too Many Attempts." }
// 500 — conversion failed (rare; details in error)
{ "message": "Failed to rasterize SVG. Make sure the file is valid." }
Acerca de la Images API de jinero.online
API REST pública para convertir y optimizar imágenes: convierte SVG, JPG, PNG y HEIC a los modernos WebP o AVIF y comprime sin perder calidad, gratis.
Formatos modernos
Salida en PNG, JPG, WebP o AVIF. Convierte tus antiguas imágenes de cabecera PNG/JPG a WebP y verás cómo mejora el LCP.
SVG → ráster
La rasterización de SVG en el servidor con rsvg-convert procesa limpiamente los archivos vectoriales, incluso SVG con muchos filtros.
No requiere clave
Endpoint público, 5 solicitudes/min por IP para conversiones. Genera un token de API si necesitas límites más altos.
Contrato JSON sencillo
Sube el archivo con multipart y recibe una URL de descarga válida durante 60 minutos. Sin firmas, sin callbacks y sin necesidad de SDK.
Preguntas frecuentes
No. La API es pública y tiene un límite de solicitudes por IP. /convert y /optimize están limitados a 5 solicitudes por minuto; los endpoints de descarga y de metadatos tienen límites más altos.
JPG, JPEG, PNG, GIF, BMP, WebP, AVIF, HEIC y SVG. Los SVG se rasterizan en el servidor con rsvg-convert antes de codificarlos. Tamaño máximo del archivo: 10 MB.
PNG, JPEG, WebP y AVIF. WebP ofrece la mejor relación entre tamaño y calidad para la web; AVIF es aún más ligero, pero tarda más en decodificarse. PNG conserva la transparencia; JPEG no.
Los originales se procesan y se descartan de inmediato. Los resultados convertidos se guardan en un almacenamiento temporal durante 60 minutos (tiempo suficiente para usar la download_url) y después se eliminan. No entrenamos ningún modelo con tus archivos.
Esos servicios están especializados en una sola tarea (quitar fondos o comprimir PNG). Nuestra API se centra en la conversión de formatos y la compresión con o sin pérdida mediante una única interfaz coherente, y es totalmente gratuita, sin tarifas por imagen ni muros de pago.