Palettes API
Busca en la biblioteca de paletas de colores de Jinero: 6.200+ paletas seleccionadas con filtros por estado de ánimo, armonía, temperatura, tono y etiquetas, además de todos los datos de color y metadatos SEO de serie.
API de solo lectura sobre la biblioteca de paletas de Jinero. Busca por estado de ánimo, armonía, temperatura, tono, número de colores y etiquetas; obtén paletas individuales con todos los datos de color, nombres visibles optimizados para SEO y sugerencias de paletas relacionadas. La usan tanto nuestra propia interfaz como cualquier agente LLM que necesite datos de paletas seleccionadas.
# List 5 most popular palettes
curl "https://jinero.online/api/v1/palettes?per_page=5&order=popular"
# Fetch one palette by id
curl "https://jinero.online/api/v1/palettes/3798"
const r = await fetch("https://jinero.online/api/v1/palettes?mood=pastel&per_page=24");
const { data: palettes, last_page } = await r.json();
Todos los endpoints son públicos: no se necesita clave. Son de solo lectura y ligeros, así que los límites son generosos.
# Anonymous limits (per IP):
# GET /palettes 60 req/min
# GET /palettes/{id} 60 req/min
# Pagination: per_page max 100, default 24
Búsqueda paginada. Todos los filtros son opcionales y combinables. Sin filtros, se devuelve la biblioteca completa ordenada según el order que elijas.
https://jinero.online/api/v1/palettes
| Parámetro | Tipo | Descripción |
|---|---|---|
name |
string | Búsqueda aproximada por nombre (LIKE). La mayoría de las paletas no tienen nombre, así que mejor combínalo con otros filtros. |
tone |
string | light · dark · mixed. |
temperature |
string | warm · cool · neutral. |
mood |
string | pastel · muted · earthy · vibrant · monochrome (y más: la lista de valores es abierta). |
harmony |
string | analogous · complementary · triadic · monochromatic · tetradic · split-complementary. |
color_count |
integer | Número exacto (2–6) o 7+ para “muchos colores”. |
tags[] |
string[] | Slugs de las etiquetas obligatorias. Repite el parámetro para varias etiquetas. |
order |
string | newest (predeterminado) · popular · name. |
per_page |
integer | 1–100, predeterminado: 24. |
page |
integer | Número de página, predeterminado: 1. |
# Top 10 cool-pastel palettes
curl "https://jinero.online/api/v1/palettes?temperature=cool&mood=pastel&order=popular&per_page=10"
const url = new URL("https://jinero.online/api/v1/palettes");
url.searchParams.set("temperature", "warm");
url.searchParams.set("color_count", "5");
url.searchParams.set("order", "popular");
const r = await fetch(url);
const { data, total, last_page } = await r.json();
$res = Http::get("https://jinero.online/api/v1/palettes", [
"mood" => "vibrant",
"harmony" => "triadic",
"per_page" => 30,
]);
$palettes = $res->json("data");
{
"current_page": 1,
"data": [
{
"id": 3798,
"name": null,
"display_name": "4-Color Muted Palette",
"slug": "222831393e4600adb5eeeeee",
"colors": ["#222831", "#393e46", "#00adb5", "#eeeeee"],
"color_count": 4,
"tone": "mixed",
"temperature": "cool",
"mood": "muted",
"harmony": "analogous",
"source": "imported",
"source_url": "...",
"tags": [],
"likes_count": 71122,
"views_count": 0,
"url": "https://jinero.online/colors/palettes/3798"
}
],
"first_page_url": "...",
"last_page": 421,
"per_page": 24,
"total": 10103
}
Obtiene una paleta y 8 paletas relacionadas (misma temperatura y tono, ordenadas por popularidad). Llamar a este endpoint también incrementa views_count.
https://jinero.online/api/v1/palettes/{id}
| Parámetro | Tipo | Descripción |
|---|---|---|
id |
integer (path) | ID de la paleta, tomado de la respuesta de la lista. |
curl "https://jinero.online/api/v1/palettes/3798"
const r = await fetch("https://jinero.online/api/v1/palettes/3798");
const { palette, related } = await r.json();
document.title = palette.seo_title;
$res = Http::get("https://jinero.online/api/v1/palettes/3798");
$palette = $res->json("palette");
{
"success": true,
"palette": {
"id": 3798,
"name": null,
"display_name": "4-Color Muted Palette",
"colors": ["#222831", "#393e46", "#00adb5", "#eeeeee"],
"color_count": 4,
"tone": "mixed",
"temperature": "cool",
"mood": "muted",
"harmony": "analogous",
"tags": [],
"likes_count": 71122,
"views_count": 1,
"url": "https://jinero.online/colors/palettes/3798",
"seo_title": "4-Color Muted Palette — Cool Mixed, Analogous Harmony | Jinero Online",
"seo_description": "4-color muted palette with cool temperature and analogous harmony. Hex codes: #222831, #393E46, #00ADB5, #EEEEEE..."
},
"related": [
{ "id": 1234, "display_name": "...", "colors": [...] }
]
}
Alrededor del 65 % de la biblioteca importada tiene name: null. Generamos un display_name legible a partir de mood + color_count mediante un accesor del modelo; por ejemplo, una paleta muted de 4 colores sin nombre se convierte en "4-Color Muted Palette". Los campos seo_title y seo_description se generan de la misma forma, así que los enlaces y las metaetiquetas son coherentes tanto si la paleta tenía un nombre editorial como si no.
// Unnamed palette as it appears in the database
{ "id": 3798, "name": null, "mood": "muted", "color_count": 4 }
// What you actually receive from the API
{
"id": 3798,
"name": null,
"display_name": "4-Color Muted Palette",
"seo_title": "4-Color Muted Palette — Cool Mixed, Analogous Harmony | Jinero Online"
}
Semántica HTTP estándar. Los errores devuelven un JSON con el campo "message".
// 404 — palette id not found
{ "message": "Palette not found" }
// 422 — invalid filter value (e.g. unknown order)
{ "message": "The selected order is invalid." }
// 429 — rate limit exceeded
{ "message": "Too Many Attempts." }
Acerca de la Palettes API de jinero.online
API REST gratuita sobre una biblioteca de 6.200+ paletas, seleccionadas por estado de ánimo, armonía, temperatura y tono, con nombres visibles listos para SEO y sugerencias de paletas relacionadas incluidas.
6.200+ paletas
Paletas seleccionadas e importadas con metadatos coherentes: estado de ánimo, armonía, temperatura y tono. Puedes buscar por cualquier dimensión que importe.
Paginación y filtros
Contrato de paginación estándar de Laravel (current_page, last_page, total) y parámetros de filtro tipados. Sin formatos de cursor propios que aprender.
Lista para SEO de serie
Cada paleta incluye display_name, seo_title y seo_description generados: ponlos directamente en tu <title> y en tus metaetiquetas.
Paletas relacionadas
Las respuestas de una sola paleta incluyen hasta 8 paletas relacionadas (misma temperatura y tono, ordenadas por popularidad): perfectas para bloques de “también te puede gustar”.
Preguntas frecuentes
No. Ambos endpoints son públicos y tienen un límite de 60 solicitudes/min por IP. Regístrate y obtén un token de API si necesitas límites más altos para trabajos por lotes.
La biblioteca se creó inicialmente importando paletas de sitios públicos de selección de colores, que en su mayoría publican paletas sin nombre. Nunca inventamos nombres editoriales falsos: en su lugar, generamos un display_name estable a partir de mood + color_count mediante un accesor del modelo, para que la API sea coherente.
Sí, repite el parámetro tags[]: ?tags[]=warm-tones&tags[]=monochrome. Deben estar presentes todas las etiquetas indicadas (semántica AND). Para un comportamiento OR, envía dos solicitudes separadas y combina los resultados en el cliente.
likes_count, views_count y saves_count se actualizan en tiempo real: cada llamada a /palettes/{id} incrementa views_count de forma síncrona. Order=popular ordena por likes_count.
En la v1, no. Los slugs son deterministas (códigos hex concatenados sin #), así que puedes construirlos en el cliente, pero la búsqueda solo funciona por id entero. Si necesitas obtener paletas por slug, abre un issue.