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 21 Aug 2026

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 21 Aug 2026, 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

Alternatives to ColorMagic API

If ColorMagic does not fit, these photography & design apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Metropolitan Museum of ArtFree Metropolitan Museum of Art API with no key: 470,000+ artworks with high-resolution public-domain images, artist data and full object metadata. Tested.No keyNo19 Aug 2026
Art Institute of ChicagoFree Art Institute of Chicago API with no key: 130,000+ artworks with IIIF images, colour data, artist info and rich metadata. Well documented. Tested example.No keyYes19 Aug 2026
Cleveland Museum of ArtFree Cleveland Museum of Art API with no key: 60,000+ artworks with open-access images, provenance, exhibition history and full metadata. Tested curl example.No keyNo19 Aug 2026
DiceBear AvatarsFree avatar generator API with no key: deterministic SVG or PNG avatars from any seed, in 30+ styles with customisable colours. Tested curl example.No keyYes19 Aug 2026
COLOURloversFree COLOURlovers API with no key: community-voted colour palettes, individual colours and patterns with hex values, view counts and popularity ranks. Tested example included.No keyNo21 Aug 2026
DummyImageFree placeholder image API with no key: any size, custom background and text colours, custom caption, PNG, GIF or JPG — all from the URL. Tested example included.No keyYes21 Aug 2026
All Photography & Design APIs

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