BYTETOOLS

ColorMagic API

Free colour palette API with no key: search thousands of named palettes by keyword and get five hex codes, descriptive tags and a like count. Tested example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the ColorMagic API?

ColorMagic lets you search a community palette library by keyword with no API key. Each result returns five hex colours, the palette's name, a list of descriptive tags and how many people have liked it.

Palette generators that work from a seed colour solve the wrong problem most of the time. What a designer usually has is a word — sunset, brutalist, autumnal — and what they want is a set of colours that reads that way. ColorMagic searches on exactly that, matching keywords against palette names and tags rather than requiring a starting hex.

The `tags` array is where the search actually happens and it is more descriptive than a name alone: the sunset palette in the captured response is tagged apricot, coral, cream, light, peach, pink, soft, warm and yellow, which means it surfaces for any of those searches too. `likesCount` gives a crude quality ranking, since community-liked palettes tend to be the balanced ones. Two practical notes: colours always come as five hex strings including the leading hash, and the response carries no CORS header, so this needs calling from a server rather than from a browser.

Quick facts

Base URL
https://colormagic.app/api
Authentication
No API key and no account for palette search.
Rate limit
No published limit. Palettes change slowly — cache search results.
Pricing
Free.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the ColorMagic API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Search colour palettes by keyword

GET https://colormagic.app/api/palette/search?q=sunset

curl
curl 'https://colormagic.app/api/palette/search?q=sunset'
JavaScript (fetch)
const res = await fetch("https://colormagic.app/api/palette/search?q=sunset");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://colormagic.app/api/palette/search?q=sunset", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "id": "6712593deab8122db20f7915",
    "colors": [
      "#ff997a",
      "#ffb88f",
      "#ffcc99",
      "#ffe5b3",
      "#fff5e0"
    ],
    "text": "Peachy",
    "tags": [
      "apricot",
      "coral",
      "cream",
      "light",
      "peach",
      "pink",
      "soft",
      "sunset",
      "warm",
      "yellow"
    ],
    "likesCount": 166,
    "isLiked": false,
    "normalizedHash": "6e8ac241f7ca3b791f184550c3c0e03dbf1258c03a0d662bc10d5dd5d1a5d34a",
    "createdAt": "2024-10-18T12:49:01.046Z"
  },
  {
    "id": "67179bf105be065749691c18",
    "colors": [
      "#dac6b9",
      "#c0b0a5",
      "#a58e8d",
      "#8c5a5a",
      "#6c4b4b"
    ],
    "text": "Rodeo Sunset",
    "tags": [
      "aesthetic",
      "beige",
      "brown",
      "desert",
      "earthy",
      "retro",
      "soft",
      "vintage",
      "warm",
      "warm-autumn"
    ],
    "likesCount": 129,
    "isLiked": false,
    "normalizedHash": "64a2e519cfb994bdfb17ee350bc9b5fbe73f03a9363385c16bb99afe3b18fbbc",
    "createdAt": "2024-10-22T12:34:57.356Z"
  },
  {
    "id": "6768cc54be680a86c6266bf1",
    "colors": [
      "#3b1c2f",
      "#5d3c47",
      "#9a5b63",
      "#d1a789",
      "#f4e2c2"
    ],
    "text": "Moody Sunset",
    "tags": [
      "autumn",
      "beige",
      "dark",
      "deep",
      "earthy",
      "pink",
      "red",
      "retro",
      "warm"
    ],
    "likesCount": 83,
    "isLiked": false,
    "normalizedHash": "d7524a961f55a8a5ca0b82defd3216ee4015194982b8afd1222b95549e556db7",
    "createdAt": "2024-12-23T02:35:00.218Z"
  },
  {
    "id": "671

Parameters

ParameterTypeRequiredDescription
qqueryRequiredSearch keyword, matched against palette names and tags. sunset

Response fields

(root)array
Matching palettes, most relevant first. There is no envelope object.
idstring
Palette identifier.
colorsarray
Five hex colour strings including the leading `#`, ordered light to dark or as the creator arranged them.
textstring
The palette's name, for example `Peachy` or `Rodeo Sunset`.
tagsarray
Descriptive tags — colour names, moods and qualities. These drive the search as much as the name does.
likesCountinteger
Community likes. A reasonable proxy for how balanced a palette is.
isLikedboolean
Always false for anonymous requests, since there is no session to attribute a like to.
normalizedHashstring
Hash of the colour set, which identifies duplicate palettes submitted under different names.
createdAtstring
ISO 8601 creation timestamp.

What you can build with the ColorMagic API

  • Suggest palettes from a mood keyword in a design tool
  • Seed a theme generator with community-validated colour sets
  • Build a palette browser filtered by descriptive tag
  • Find harmonious five-colour sets for data visualisation

Common errors and how to fix them

Empty array

The keyword matched no palette names or tags.

Fix: Try a broader or more common descriptive word. The corpus is community-created, so niche terms return nothing.

Cross-origin request blocked

No Access-Control-Allow-Origin header is sent.

Fix: Call it from a server and proxy the result to your front end.

Duplicate-looking palettes

The same colour set can be submitted under several names.

Fix: Deduplicate on `normalizedHash`, which exists for exactly this purpose.

Colours fail a contrast check

Palettes are chosen aesthetically, not for accessibility.

Fix: Run your own contrast checks before using a palette for text and background pairs.

ColorMagic API — frequently asked questions

Is the ColorMagic API free?

Yes, free with no key or account for palette search.

How does the search work?

It matches your keyword against palette names and their descriptive tags, so a mood word like `sunset` or `soft` finds palettes even when the name does not contain it.

How many colours per palette?

Five hex values, supplied with the leading hash so they can go straight into CSS.

Can I call it from the browser?

No. The response carries no CORS header, so a browser fetch is blocked. Proxy it through your own server.

Tools that pair with this API

ColorMagic is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.