Extraer paleta de colores
Una foto de producto, un banner principal o el avatar de un usuario tienen un puñado de colores que definen cómo se perciben de un vistazo; este endpoint extrae esa paleta como una lista de valores hex ordenados y lista para usar. Le entrega una imagen y le devuelve los colores que realmente importan, ordenados por presencia.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué importa reducirlo a un puñado de códigos hex
Una sola imagen puede contener millones de valores de píxel distintos, pero casi nada de esa granularidad le sirve a un sistema de diseño, a un motor de recomendaciones o a una interfaz que quiere adaptar su color de acento a la foto que acaba de subir el usuario. Lo útil es una lista corta y ordenada: los dos o tres colores que una persona nombraría si le pidiera describir la imagen. Ese es exactamente el vacío que llena este endpoint: hace el trabajo de cuantización de color para que nada más adelante en el flujo tenga que reinventarlo.
Cómo funciona la extracción
Envía una imagen a POST /image/palette y la tarea agrupa los colores de la imagen, descarta duplicados casi idénticos y ruido, y devuelve un conjunto ordenado de tonos representativos junto con la proporción que ocupa cada uno. El resultado es determinista para una imagen dada, así que la misma foto siempre produce la misma paleta, algo importante si está cacheando resultados o comparando imágenes entre sí más adelante.
Una breve historia del problema
La extracción de paletas es una técnica clásica del procesamiento de imágenes desde los primeros tiempos de las pantallas de color indexado, cuando los ingenieros tenían que reducir una foto a 256 colores solo para poder mostrarla. La limitación que forzó ese trabajo entonces —la profundidad de color reducida— ya desapareció, pero la técnica resultó ser justo lo que necesita el diseño moderno: no una forma de comprimir una imagen, sino una manera de resumir su aspecto en unos pocos números.
Qué esperar de vuelta
Como toda tarea de esta API corre de forma asíncrona, recibe un task_id de inmediato y la paleta llega después por webhook firmado o por un enlace firmado válido durante 24 horas, sin necesidad de un ciclo de consultas si configura el webhook. Los resultados vienen ordenados por dominancia, así que el primer tono es realmente el color que ocupa más superficie de la imagen, no simplemente el primero que se detectó.
Dónde encaja dentro de la automatización
Los equipos de contenido y comercio electrónico suelen llamar este endpoint en el momento en que se sube una imagen, y conectan la paleta directamente a un motor de temas, al fondo de una tarjeta de producto o a un sistema de etiquetado que agrupa artículos por familia de color, todo sin que nadie abra un selector de color a mano. A $0.002 por solicitud y sin cargo si falla, es lo bastante económico como para aplicarlo a cada imagen de un catálogo en vez de a una muestra.
Qué puede hacer con ella
Temas de interfaz dinámicos
Extraiga la paleta de una imagen principal y use el tono dominante como color de acento de una página de producto o de un álbum, calculado automáticamente en lugar de elegido a mano.
Búsqueda de productos por color
Etiquete cada imagen del catálogo con su paleta dominante para que los compradores puedan filtrar ropa o artículos del hogar por 'azul' o 'terracota' sin etiquetado manual.
Mood boards automatizados
Agrupe imágenes de referencia según paletas compartidas para armar mood boards coherentes sin que un diseñador clasifique tonos a ojo.
Control de calidad de piezas publicitarias
Compare la paleta extraída de una pieza publicitaria nueva contra los colores de marca para detectar envíos fuera de guía antes de que se publiquen.
Preguntas frecuentes
¿Cuántos colores devuelve la API de paleta?
Un conjunto ordenado de tonos representativos, según cuánta superficie de la imagen ocupa cada uno, del más al menos dominante.
¿Esta API para extraer paleta de colores es gratuita?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿La misma imagen siempre devuelve la misma paleta?
Sí, la extracción es determinista para una imagen dada, lo que permite cachear resultados o comparar paletas dentro de un catálogo con seguridad.
¿Cuál es la diferencia con el endpoint de color dominante?
Este devuelve una paleta ordenada con varios colores; el endpoint de color dominante devuelve un solo color representativo para cuando basta con un único valor.
¿Puedo extraer paletas para todo un catálogo en lote?
Sí, envía una solicitud por imagen y cada una se encola y se factura por separado, así que puede procesar un catálogo completo sin manejo especial de lotes.
¿Cómo recibo la paleta extraída?
Mediante un webhook firmado, recomendado para flujos automatizados, o un enlace firmado válido por 24 horas.
¿El resultado viene en códigos hex?
Sí, los tonos se devuelven como valores hexadecimales ordenados por dominancia, listos para usar en CSS o en un archivo de tokens de diseño.
¿Qué formatos de imagen puedo enviar?
Se admiten formatos rasterizados estándar como JPEG y PNG; la tarea decodifica la imagen y agrupa sus colores sin importar el origen del archivo.
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/palette \
-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/palette", {
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/palette",
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/palette", 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/palette", 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.palette",
"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. |