Crear miniaturas
Una cuadrícula de productos, una biblioteca de video o una galería de fotos dependen de sus miniaturas: cientos de ellas, todas del mismo tamaño, cargando rápido. Este endpoint toma una imagen de origen y devuelve una miniatura redimensionada a las dimensiones exactas que indique, lista para generarse por miles sin un solo redimensionamiento manual.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
El problema cotidiano detrás de las miniaturas
Las imágenes en resolución completa pesan demasiado para cargarse en una cuadrícula de cincuenta fichas, y redimensionarlas una por una en un editor deja de ser viable más allá de un puñado de archivos. Un generador de miniaturas convierte ese paso manual y repetitivo en una sola llamada REST: envía el origen, recibe de vuelta una imagen del tamaño exacto que necesita la cuadrícula, la barra lateral o el resultado de búsqueda.
Quién pasa sus miniaturas por una API
Plataformas de comercio electrónico que renderizan cuadrículas de productos que deben cargar al instante; sitios de contenido que generan imágenes de vista previa para cientos de artículos; sistemas de gestión de archivos que muestran una carpeta llena de imágenes como previsualizaciones pequeñas en lugar de archivos completos. Donde una página muestra muchas imágenes a la vez, las miniaturas son lo que la mantiene rápida.
Qué pasa con su imagen
Envía el archivo de origen junto con el ancho y alto deseados, recibe de inmediato un task_id y la tarea la redimensiona a esas dimensiones exactas, ya sea un ícono cuadrado o una vista previa rectangular con una proporción distinta a la original. Cuando termina le avisamos por webhook firmado, o recoge la miniatura desde un enlace firmado válido por 24 horas.
Cómo encaja en un flujo de medios
Como es asíncrona y solo se cobra si tiene éxito, la generación de miniaturas se integra en cualquier flujo de carga sin frenarlo: un usuario sube una foto, el original se guarda, y una solicitud de miniatura se dispara en segundo plano para que la cuadrícula nunca espere el redimensionamiento. Los lotes de miles de imágenes funcionan igual — una solicitud por imagen, resultados recogidos a medida que llegan los webhooks.
Cuadrada frente a rectangular, y por qué importan ambas
La miniatura cuadrada se volvió el estándar para cuadrículas y avatares porque se acomoda de forma predecible sin importar la orientación de la foto original, pero recorta contenido que una vista rectangular conservaría completo. Una miniatura rectangular preserva más del encuadre original y conviene para previsualizaciones de video, banners y fichas donde importa el ancho completo de la toma. Soportar ambas formas significa que el mismo endpoint sirve igual de bien a un catálogo de productos que a una biblioteca de video.
Qué puede hacer con ella
Renderizado de cuadrículas de producto
Una tienda en línea genera una miniatura cuadrada para cada foto de SKU, así las páginas de categoría cargan rápido sin enviar imágenes en resolución completa.
Imágenes de vista previa de artículos
Una plataforma editorial crea una miniatura rectangular para la imagen destacada de cada artículo, usada en el feed de portada y en resultados de búsqueda.
Previsualizaciones en gestor de archivos
Una app de almacenamiento en la nube muestra miniaturas pequeñas de cada imagen de una carpeta en lugar de cargar los archivos originales para renderizar la vista.
Portadas de biblioteca de video
Una plataforma de medios genera un tamaño de miniatura rectangular consistente para cada portada de video subida por los creadores.
Preguntas frecuentes
¿Está disponible ya la API para Generar Miniaturas?
Sí, está en producción en POST /image/thumbnail con el precio de abajo ya vigente.
¿Cómo se cobra?
$0.002 por solicitud más $0.005 por imagen, publicado y sin cambios sin importar cuántas miniaturas generes.
¿Puedo obtener miniaturas cuadradas y rectangulares desde el mismo endpoint?
Sí, indica el ancho y alto deseados en la solicitud; cuadrada, rectangular o cualquier proporción personalizada es la misma llamada.
¿Qué formatos soporta?
Formatos rasterizados comunes como JPEG, PNG y WebP, y la miniatura se devuelve en el mismo formato de origen salvo que pidas otro.
¿Es una API gratis?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cómo recibo la miniatura?
Por webhook firmado en cuanto se genera, o mediante un enlace firmado válido por 24 horas.
¿Se cobra por las miniaturas que fallan?
No. Las tareas fallidas se reintentan automáticamente hasta tres veces y nunca se cobran; en su lugar recibe un error claro.
¿Puedo generar miniaturas para toda una biblioteca a la vez?
Sí — cada solicitud procesa una imagen y devuelve su propio task_id, así que una biblioteca de miles es simplemente solicitudes en paralelo recogidas por webhook.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/image/thumbnail \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/image/thumbnail", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/thumbnail",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/thumbnail", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/thumbnail", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"image": "https://ejemplo.com/imagen.jpg"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.thumbnail",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 15 |
max_megapixels | 12 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |