Palettes API
Busque na biblioteca de paletas de cores do Jinero — 6.200+ paletas selecionadas, com filtros por clima, harmonia, temperatura, tom e tags, além de dados completos das cores e metadados de SEO prontos.
API somente leitura sobre a biblioteca de paletas do Jinero. Busque por clima, harmonia, temperatura, tom, número de cores e tags; obtenha paletas individuais com todos os dados das cores, nomes amigáveis para SEO e sugestões de paletas relacionadas. Ela alimenta tanto a nossa própria interface quanto qualquer agente LLM que precise de paletas selecionadas.
# 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 os endpoints são públicos — sem chave. Somente leitura e leves, então os limites são generosos.
# Anonymous limits (per IP):
# GET /palettes 60 req/min
# GET /palettes/{id} 60 req/min
# Pagination: per_page max 100, default 24
Busca paginada. Todos os filtros são opcionais e combináveis. Sem filtros, retorna a biblioteca inteira, ordenada pelo order escolhido.
https://jinero.online/api/v1/palettes
| Parâmetro | Tipo | Descrição |
|---|---|---|
name |
string | Busca aproximada pelo nome (LIKE). A maioria das paletas não tem nome — prefira combinar com outros filtros. |
tone |
string | light · dark · mixed. |
temperature |
string | warm · cool · neutral. |
mood |
string | pastel · muted · earthy · vibrant · monochrome (e outros — a lista de valores é aberta). |
harmony |
string | analogous · complementary · triadic · monochromatic · tetradic · split-complementary. |
color_count |
integer | Número exato (2–6) ou 7+ para “muitas cores”. |
tags[] |
string[] | Slugs das tags obrigatórias. Repita o parâmetro para várias tags. |
order |
string | newest (padrão) · popular · name. |
per_page |
integer | 1–100, padrão 24. |
page |
integer | Número da página, padrão 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
}
Retorna uma paleta e mais 8 paletas relacionadas (mesma temperatura e tom, ordenadas por popularidade). Chamar este endpoint também incrementa views_count.
https://jinero.online/api/v1/palettes/{id}
| Parâmetro | Tipo | Descrição |
|---|---|---|
id |
integer (path) | ID da paleta, da resposta da 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": [...] }
]
}
Cerca de 65% da biblioteca importada tem name: null. Geramos um display_name legível a partir de mood + color_count por um accessor do model — por exemplo, uma paleta suave de 4 cores sem nome vira "4-Color Muted Palette". Os campos seo_title e seo_description são gerados do mesmo jeito, então links e metatags continuam consistentes, tenha a paleta um nome editorial ou não.
// 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 padrão. Os erros retornam JSON com o 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." }
Sobre a Palettes API do jinero.online
API REST gratuita sobre uma biblioteca de 6.200+ paletas — organizadas por clima, harmonia, temperatura e tom, com nomes prontos para SEO e sugestões de paletas relacionadas já incluídas.
6.200+ paletas
Paletas selecionadas e importadas com metadados consistentes — clima, harmonia, temperatura, tom. Busca por todos os critérios que importam.
Paginação e filtros
Contrato de paginação padrão do Laravel — current_page, last_page, total, além de parâmetros de filtro tipados. Nenhum formato de cursor próprio para aprender.
Pronto para SEO
Cada paleta vem com display_name, seo_title e seo_description gerados — coloque-os direto no seu <title> e nas metatags.
Paletas relacionadas
A resposta de uma paleta inclui até 8 paletas relacionadas (mesma temperatura e tom, ordenadas por popularidade) — perfeito para blocos de “você também pode gostar”.
Perguntas frequentes
Não. Os dois endpoints são públicos e limitados a 60 req/min por IP. Se precisar de limites maiores para processamento em lote, crie uma conta e gere um token de API.
A biblioteca começou com importações de sites públicos de curadoria de cores, que publicam principalmente paletas sem nome. Nunca inventamos nomes editoriais falsos — em vez disso, geramos um display_name estável a partir de mood + color_count por um accessor do model, para a API continuar consistente.
Sim — repita o parâmetro tags[]: ?tags[]=warm-tones&tags[]=monochrome. Todas as tags listadas precisam estar presentes (semântica AND). Para ter o comportamento OR, faça duas requisições separadas e junte os resultados no cliente.
likes_count, views_count e saves_count são atualizados em tempo real — cada chamada a /palettes/{id} incrementa views_count de forma síncrona. Order=popular ordena por likes_count.
Não na v1. Os slugs são determinísticos (códigos hex concatenados, sem #), então você pode montá-los no cliente, mas a busca é só pelo id numérico. Abra uma issue se tiver um caso de uso para buscar pelo slug.