Paleta API · documentación

Design systems deterministas con teoría del color

Un endpoint PHP sin dependencias que devuelve paleta verificada WCAG (AA/AAA con ajuste garantizado), tokens de 14 estilos UI, tipografía, chequeo de daltonismo, rampas 50–900, par claro/oscuro y exports para CSS, SCSS, Tailwind y W3C Design Tokens.

Esta página está vestida con la paleta DOCS-4173 servida por el propio API — armonía tetrádica, contraste AA garantizado. El botón de arriba pide otra y la aplica en vivo.

Inicio rápido

curl "https://tu-dominio/paleta.php?seed=VX-2741&estilo=glass&layout=bento"
curl "https://tu-dominio/paleta.php?mood=cafe&lote=12"          # 12 paletas mood café
curl "https://tu-dominio/paleta.php?marca=DB4361&imagen=1" -o p.png  # PNG anclado a tu marca

# Determinista: misma semilla + mismos parámetros = misma salida.
# Con semilla explícita la respuesta es cacheable (max-age=86400).

Parámetros

Todos opcionales. También se aceptan vía PATH (/paleta.php/seed/VX-2741/estilo/glass) por si una redirección recorta el query string; en excluir por PATH se aceptan guiones.

ParámetroValoresDefaultQué hace
seedtexto (máx. 64)aleatoriaSemilla determinista del sistema completo.
armoniaauto monocromatica · analoga · complementaria · split · triadica · tetradicaautoEsquema de hues derivados del hue base.
registroauto profundo · claro · pastel · oscuro · desaturado · neobrutalautoReceta tonal. En auto se sortea solo entre los compatibles con el estilo.
estiloauto + 14 estilos (minimal … doodle)autoLenguaje visual: define los 14 tokens de superficie.
layoutclassic · bento · autoclassicSugerencia de layout.
modouno · parunoCon par agrega temas.claro, temas.oscuro y css_par.
nivelaa · aaaaaObjetivos de contraste. AAA: texto 4.5→7.0, UI 3.0→4.5.
ajuste_aa1 · 01Con 1 ajusta la luminosidad hasta cumplir; con 0 solo reporta.
excluirhues CSV2+ hues: hue base del hueco más ancho de la rueda; 1 hue: el opuesto.
pretty1 · 01Con 0, JSON compacto sin saltos de línea.
moodpastel · vintage · neon · calido · frio · otono · invierno · primavera · verano · naturaleza · cafe · atardecer · mar · doradoHue base dentro del rango del mood; en auto también aplica su registro y limita los estilos a los compatibles.
hue0–359Fija el hue base manualmente.
marcaRRGGBBAncla el hue al color de marca. Prioridad: marca > hue > mood > excluir.
lote2–24N paletas ligeras (seed-1..N) en una petición; cuenta como 1 para el rate limit.
imagen1Tarjeta PNG 1200×630 del tema principal (requiere GD).

Respuesta

CampoContenido
metaseed, armonía, registro, estilo, layout, modo, nivel, tema_principal, hue_base, hues, excluidos, nota, versión.
colores12 roles HEX, incluidos los 4 sobre_*: texto con contraste garantizado encima de cada rol cromático.
wcagPares críticos con ratio y objetivo. Con ajuste_aa=1, todo par cumple.
ajustes_aaRoles cuya luminosidad se movió para cumplir (antes/después).
estiloNombre, layout, registros recomendados y los 14 tokens (radius, sombras, blur, bordes, translucidez, gradiente, fondo decorado…).
tipografiaPareja display + cuerpo (máx. 2 familias) con pesos, fallback y google_fonts_url lista.
daltonismoSimulación de protanopia/deuteranopia/tritanopia del trío cromático y 9 pares con ΔE CIE76: ok ≥ 20, justo ≥ 10, riesgo < 10.
rampasEscalas 50–900 para primario, secundario, acento y neutro.
css_variablesBloque :root con colores + tokens + fuentes, listo para pegar.
exportsscss, tailwind (@theme v4) y tokens_w3c (color, rampa, fontFamily, dimension).
temas modo=parTemas claro y oscuro completos, cada uno con su propia garantía de contraste.
css_par modo=par:root claro + [data-tema="oscuro"] + @media (prefers-color-scheme: dark).

Ejemplos

Aplicar el design system completo a una página con tres líneas de JavaScript:

const d = await (await fetch('paleta.php?seed=VX-2741&estilo=glass')).json();
document.head.appendChild(
  Object.assign(document.createElement('style'), { textContent: d.css_variables })
);
// Y la tipografía:
document.head.appendChild(Object.assign(document.createElement('link'),
  { rel: 'stylesheet', href: d.tipografia.google_fonts_url }));

Par claro/oscuro con objetivos AAA, compacto, desde PHP:

$url = 'https://tu-dominio/paleta.php?seed=VX-2741&modo=par&nivel=aaa&pretty=0';
$d   = json_decode(file_get_contents($url), true);
file_put_contents('tema.css', $d['css_par']);

Enlaces vivos a la demo: liquid + bento · neumo en par · doodle · AAA

Determinismo y garantías

Rate limit

60 peticiones por minuto por IP. Al exceder: HTTP 429 con cabecera Retry-After y cuerpo {ok:false, error:"rate_limit", mensaje, reintentar_en}. Detrás de Cloudflare, activar RL_CONFIA_CF en paleta.php para usar la IP real. La galería de la demo (14 peticiones) queda holgada dentro del límite.

Contrato formal

El documento openapi.json (OpenAPI 3.1) describe parámetros con enums, el esquema completo de la respuesta y el error 429 — listo para generadores de clientes, validadores o para conectar asistentes de IA.