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 — neverapplication/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 bodyempty 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
modelvalue 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 aContent-Typeheader) whose body is anopenrestyHTML error page titled500 Internal Server Error. The 500 is only in the HTML, never in the status line, soif (res.status >= 500)never fires and a naiveJSON.parseruns on markup. As with theempty bodycase above, check the body, not the status. Validate the model name up front againstGET /list/, which returned{"result":["ui","default","the_fall","communist","maple_story","stellar_photography"]}live this run. POST /apiwithout 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 bodylessempty bodyresponse above instead of a palette. Always POST to the slash-terminated path directly.