Art & Design — entry 003 of 20
Colormind
Colormind generates five-color palettes from a model trained on movies, art, and popular color schemes, returning a plain array of RGB triples from a single POST to /api/ with no signup. A live probe of the real gateway confirmed it now answers over HTTPS as well as HTTP (correcting https false -> true) and sends Access-Control-Allow-Origin: * on every response, resolving cors unknown -> yes.
Colormind generates five-color palettes from a model trained on movies, art, and popular color schemes, returning a plain array of RGB triples from a single keyless POST -- there's no GET data route at all. A live POST this run against `/api/` with `{"model":"default"}` returned a genuine 5-color palette as `{"result":[[r,g,b],...]}`.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required. A live POST this run against the real gateway returned a genuine palette while carrying `access-control-allow-origin: *` -- nothing to configure before the first call.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Generate a 5-color palette
POSThttps://colormind.io/api/
Content-Type: application/json
{"model":"default"}{"result":[[78,55,54],[99,135,118],[251,241,205],[177,207,123],[199,78,72]]}The `input` array (omitted above) accepts `"N"` as a placeholder for any of the 5 slots, letting you lock specific colors and have the model fill in the rest -- e.g. `{"model":"default","input":[[255,0,0],"N","N","N","N"]}` keeps the first color fixed.
Try it
Developer reference
https://colormind.io- POST/api/
- GET/list/
Gotchas & limits
- Every response carries `content-type: text/html; charset=UTF-8` -- confirmed on both a valid and a bodyless call this run -- never `application/json`, despite the body being real JSON. Code that gates parsing on the content-type header will skip a response it should have parsed.
- A bodyless POST, or a plain GET to `/api/`, both return HTTP 200 with the literal plain-text body `empty body` -- a live probe this run confirmed both cases identically. The API never signals the mistake with a status code, so a caller has to check the body content itself, not just the status.
- An unknown `model` value fails the same invisible way -- a live POST this run with `{"model":"nonexistentmodel"}` returned **HTTP 200** (confirmed identically across four probes, over both HTTP/2 and HTTP/1.1, with and without a `Content-Type` header) whose body is an `openresty` HTML error page titled `500 Internal Server Error`. The 500 is only in the HTML, never in the status line, so `if (res.status >= 500)` never fires and a naive `JSON.parse` runs on markup. As with the `empty body` case above, check the body, not the status. Validate the model name up front against `GET /list/`, which returned `{"result":["ui","default","the_fall","communist","maple_story","stellar_photography"]}` live this run.
- `POST /api` without the trailing slash 301-redirects to `/api/` -- a live probe this run confirmed the redirect -- and many HTTP clients silently downgrade a redirected POST to a GET, which then yields the bodyless `empty body` response above instead of a palette. Always POST to the slash-terminated path directly.