# Colormind

> Generate color palettes with Colormind, the free keyless color scheme generator driven by a deep learning model trained on photographs, film stills and popular art. Get a five-color palette from nothing, build one around the colors you already have, ask what goes with a single color, or get a UI palette with a light shade, two accents, the main brand color and a dark shade built around your brand color. Draw from the general default model, the ui model, or one of the models that rotate in daily, trained on a film, a game or a style of photography, and check which are loaded before a step relies on one.

App · Images & Design · 8 actions. Web page: https://docs.lodol.com/docs/integrations/colormind

## Actions

### Check a model is available

Check whether a model is loaded today before a step relies on it. Models other than default and ui change every day, so a workflow built on one should ask first. A model that is not there is reported as a value rather than a failed step, with the nearest names that are, so the workflow can fall back to one of them.

**Inputs**

- Model (`model`, text, required): The model to check, in any spelling: Makoto Shinkai is makoto_shinkai.

**Outputs**

- `available` (true/false)
- `is_permanent` (true/false)
- `message` (text)
- `model` (text)
- `model_count` (number)
- `models` (list)
- `suggestions` (list)

**Example output**

```json
{
  "available": true,
  "is_permanent": false,
  "message": "The makoto_shinkai model is loaded today. Models other than default and ui change at 08:00 UTC.",
  "model": "makoto_shinkai",
  "model_count": 6,
  "models": [
    "default",
    "ui",
    "makoto_shinkai",
    "metroid_fusion",
    "akira_film",
    "flower_photography"
  ],
  "suggestions": []
}
```

### Check service status

Check whether Colormind is answering, how quickly, and how many models it has loaded. This is the one action that reports a problem as a value instead of failing the step, so a workflow can decide what to do about it. It also says whether the check fell in the daily reload window at 08:00 UTC, when the service is down for about 30 seconds while the day's models load, and when the next reload is.

**Inputs**: None.

**Outputs**

- `in_reload_window` (true/false)
- `message` (text)
- `model_count` (number)
- `models` (list)
- `next_refresh_at` (text)
- `online` (true/false)
- `reachable` (true/false)
- `response_time_ms` (number)
- `status_code` (number)

**Example output**

```json
{
  "in_reload_window": false,
  "message": "Colormind is up and answering with 6 models loaded.",
  "model_count": 6,
  "models": [
    "default",
    "ui",
    "makoto_shinkai",
    "metroid_fusion",
    "akira_film",
    "flower_photography"
  ],
  "next_refresh_at": "2026-09-12T08:00:00+00:00",
  "online": true,
  "reachable": true,
  "response_time_ms": 38.0,
  "status_code": 200
}
```

### Complete a palette

Build a palette around the colors you already have. Give up to four colors, in the slots you want them in, and Colormind fills the rest to go with them. Each color that comes back says whether its slot was locked and, because the model nudges a locked color by a small amount to fit, what was asked for and whether it changed, so a brand color that must stay exact can be checked or put back by the next step.

**Inputs**

- Colors to keep (`colors`, list, required): The colors to build around, one per entry, in slot order: the first entry is slot 1. Leave an entry empty, or write N, for a slot Colormind should fill; fewer than five entries leave the remaining slots free. At least one color and at most four, since a palette has five slots. A hex code such as D64E45 or #D64E45, rgb(214, 78, 69), or three numbers from 0 to 255 all work, as does a color from an earlier step.
- Model (`model`, text): The Colormind model to draw from. default and ui are always available; the others are named after films, games and photography styles and change every day at 08:00 UTC, so pick one from the list or run List models first. Any spelling works: Makoto Shinkai is makoto_shinkai. Defaults to default. Default: `default`.

**Outputs**

- `any_locked_color_changed` (true/false)
- `color_count` (number)
- `colors` (list)
- `css_colors` (list)
- `generated_count` (number)
- `generated_hexes` (list)
- `hexes` (list)
- `is_permanent_model` (true/false)
- `locked_count` (number)
- `locked_hexes` (list)
- `model` (text)

**Example output**

```json
{
  "any_locked_color_changed": true,
  "color_count": 5,
  "colors": [
    {
      "changed": true,
      "css": "#312F31",
      "hex": "312F31",
      "locked": true,
      "position": 1,
      "requested_hex": "2C2B2C",
      "rgb": {
        "b": 49,
        "g": 47,
        "r": 49
      },
      "role": null
    },
    {
      "changed": true,
      "css": "#5B5351",
      "hex": "5B5351",
      "locked": true,
      "position": 2,
      "requested_hex": "5A5352",
      "rgb": {
        "b": 81,
        "g": 83,
        "r": 91
      },
      "role": null
    },
    {
      "changed": null,
      "css": "#859B8F",
      "hex": "859B8F",
      "locked": false,
      "position": 3,
      "requested_hex": null,
      "rgb": {
        "b": 143,
        "g": 155,
        "r": 133
      },
      "role": null
    },
    {
      "changed": null,
      "css": "#E2D1A7",
      "hex": "E2D1A7",
      "locked": false,
      "position": 4,
      "requested_hex": null,
      "rgb": {
        "b": 167,
        "g": 209,
        "r": 226
      },
      "role": null
    },
    {
      "changed": null,
      "css": "#EBC67E",
      "hex": "EBC67E",
      "locked": false,
      "position": 5,
      "requested_hex": null,
      "rgb": {
        "b": 126,
        "g": 198,
        "r": 235
      },
      "role": null
    }
  ],
  "css_colors": [
    "#312F31",
    "#5B5351",
    "#859B8F",
    "#E2D1A7",
    "#EBC67E"
  ],
  "generated_count": 3,
  "generated_hexes": [
    "859B8F",
    "E2D1A7",
    "EBC67E"
  ],
  "hexes": [
    "312F31",
    "5B5351",
    "859B8F",
    "E2D1A7",
    "EBC67E"
  ],
  "is_permanent_model": true,
  "locked_count": 2,
  "locked_hexes": [
    "312F31",
    "5B5351"
  ],
  "model": "default"
}
```

### Generate a color palette

Generate a five-color palette from nothing with one of Colormind's models: the general default model, the ui model for interfaces, or one of the models that rotate in daily, trained on a film, a game or a style of photography. Every color comes back as a hex code, a CSS-ready one and RGB, and a ui palette labels each slot with its role.

**Inputs**

- Model (`model`, text): The Colormind model to draw from. default and ui are always available; the others are named after films, games and photography styles and change every day at 08:00 UTC, so pick one from the list or run List models first. Any spelling works: Makoto Shinkai is makoto_shinkai. Defaults to default. Default: `default`.

**Outputs**

- `color_count` (number)
- `colors` (list)
- `css_colors` (list)
- `hexes` (list)
- `is_permanent_model` (true/false)
- `model` (text)

**Example output**

```json
{
  "color_count": 5,
  "colors": [
    {
      "css": "#D64E45",
      "hex": "D64E45",
      "position": 1,
      "rgb": {
        "b": 69,
        "g": 78,
        "r": 214
      },
      "role": null
    },
    {
      "css": "#F7F2A3",
      "hex": "F7F2A3",
      "position": 2,
      "rgb": {
        "b": 163,
        "g": 242,
        "r": 247
      },
      "role": null
    },
    {
      "css": "#C9D893",
      "hex": "C9D893",
      "position": 3,
      "rgb": {
        "b": 147,
        "g": 216,
        "r": 201
      },
      "role": null
    },
    {
      "css": "#398D70",
      "hex": "398D70",
      "position": 4,
      "rgb": {
        "b": 112,
        "g": 141,
        "r": 57
      },
      "role": null
    },
    {
      "css": "#3E5040",
      "hex": "3E5040",
      "position": 5,
      "rgb": {
        "b": 64,
        "g": 80,
        "r": 62
      },
      "role": null
    }
  ],
  "css_colors": [
    "#D64E45",
    "#F7F2A3",
    "#C9D893",
    "#398D70",
    "#3E5040"
  ],
  "hexes": [
    "D64E45",
    "F7F2A3",
    "C9D893",
    "398D70",
    "3E5040"
  ],
  "is_permanent_model": true,
  "model": "default"
}
```

### Generate a UI palette

Generate a palette for a user interface with Colormind's ui model, built around your brand color when you give one. The five colors come back by role as well as in order: a light shade for backgrounds, a light accent, the main brand color, a dark accent and a dark shade for text, so a step can read light_shade or dark_shade by name. The answer says whether the model nudged the brand color to fit.

**Inputs**

- Brand color (`brand_color`, text): The color to build the interface around, which goes into the main brand slot. Leave empty for a palette from nothing. A hex code such as D64E45 or #D64E45, rgb(214, 78, 69), or three numbers from 0 to 255 all work, as does a color from an earlier step.

**Outputs**

- `brand_color` (object)
- `brand_color_changed` (true/false)
- `color_count` (number)
- `colors` (list)
- `css_colors` (list)
- `dark_accent` (object)
- `dark_shade` (object)
- `hexes` (list)
- `light_accent` (object)
- `light_shade` (object)
- `main_brand` (object)
- `model` (text)

**Example output**

```json
{
  "brand_color": {
    "css": "#859B8F",
    "hex": "859B8F",
    "position": 3,
    "rgb": {
      "b": 143,
      "g": 155,
      "r": 133
    },
    "role": "main_brand"
  },
  "brand_color_changed": false,
  "color_count": 5,
  "colors": [
    {
      "css": "#E2D1A7",
      "hex": "E2D1A7",
      "position": 1,
      "rgb": {
        "b": 167,
        "g": 209,
        "r": 226
      },
      "role": "light_shade"
    },
    {
      "css": "#EBC67E",
      "hex": "EBC67E",
      "position": 2,
      "rgb": {
        "b": 126,
        "g": 198,
        "r": 235
      },
      "role": "light_accent"
    },
    {
      "css": "#859B8F",
      "hex": "859B8F",
      "position": 3,
      "rgb": {
        "b": 143,
        "g": 155,
        "r": 133
      },
      "role": "main_brand"
    },
    {
      "css": "#5B5351",
      "hex": "5B5351",
      "position": 4,
      "rgb": {
        "b": 81,
        "g": 83,
        "r": 91
      },
      "role": "dark_accent"
    },
    {
      "css": "#312F31",
      "hex": "312F31",
      "position": 5,
      "rgb": {
        "b": 49,
        "g": 47,
        "r": 49
      },
      "role": "dark_shade"
    }
  ],
  "css_colors": [
    "#E2D1A7",
    "#EBC67E",
    "#859B8F",
    "#5B5351",
    "#312F31"
  ],
  "dark_accent": {
    "css": "#5B5351",
    "hex": "5B5351",
    "position": 4,
    "rgb": {
      "b": 81,
      "g": 83,
      "r": 91
    },
    "role": "dark_accent"
  },
  "dark_shade": {
    "css": "#312F31",
    "hex": "312F31",
    "position": 5,
    "rgb": {
      "b": 49,
      "g": 47,
      "r": 49
    },
    "role": "dark_shade"
  },
  "hexes": [
    "E2D1A7",
    "EBC67E",
    "859B8F",
    "5B5351",
    "312F31"
  ],
  "light_accent": {
    "css": "#EBC67E",
    "hex": "EBC67E",
    "position": 2,
    "rgb": {
      "b": 126,
      "g": 198,
      "r": 235
    },
    "role": "light_accent"
  },
  "light_shade": {
    "css": "#E2D1A7",
    "hex": "E2D1A7",
    "position": 1,
    "rgb": {
      "b": 167,
      "g": 209,
      "r": 226
    },
    "role": "light_shade"
  },
  "main_brand": {
    "css": "#859B8F",
    "hex": "859B8F",
    "position": 3,
    "rgb": {
      "b": 143,
      "g": 155,
      "r": 133
    },
    "role": "main_brand"
  },
  "model": "ui"
}
```

### Generate several palettes

Generate up to ten palettes with one model in a single step, to pick from or to post as options. Each draw is random, so the palettes differ, and each costs Colormind one request. Every palette comes back with its colors, its hex codes and its CSS-ready ones.

**Inputs**

- Number of palettes (`count`, number): How many palettes to generate, from 1 to 10. Defaults to 3. From 1 to 10. Default: `3`.
- Model (`model`, text): The Colormind model to draw from. default and ui are always available; the others are named after films, games and photography styles and change every day at 08:00 UTC, so pick one from the list or run List models first. Any spelling works: Makoto Shinkai is makoto_shinkai. Defaults to default. Default: `default`.

**Outputs**

- `is_permanent_model` (true/false)
- `model` (text)
- `palette_count` (number)
- `palettes` (list)
- `requested_count` (number)

**Example output**

```json
{
  "is_permanent_model": true,
  "model": "default",
  "palette_count": 2,
  "palettes": [
    {
      "color_count": 5,
      "colors": [
        {
          "css": "#D64E45",
          "hex": "D64E45",
          "position": 1,
          "rgb": {
            "b": 69,
            "g": 78,
            "r": 214
          },
          "role": null
        },
        {
          "css": "#F7F2A3",
          "hex": "F7F2A3",
          "position": 2,
          "rgb": {
            "b": 163,
            "g": 242,
            "r": 247
          },
          "role": null
        },
        {
          "css": "#C9D893",
          "hex": "C9D893",
          "position": 3,
          "rgb": {
            "b": 147,
            "g": 216,
            "r": 201
          },
          "role": null
        },
        {
          "css": "#398D70",
          "hex": "398D70",
          "position": 4,
          "rgb": {
            "b": 112,
            "g": 141,
            "r": 57
          },
          "role": null
        },
        {
          "css": "#3E5040",
          "hex": "3E5040",
          "position": 5,
          "rgb": {
            "b": 64,
            "g": 80,
            "r": 62
          },
          "role": null
        }
      ],
      "css_colors": [
        "#D64E45",
        "#F7F2A3",
        "#C9D893",
        "#398D70",
        "#3E5040"
      ],
      "hexes": [
        "D64E45",
        "F7F2A3",
        "C9D893",
        "398D70",
        "3E5040"
      ]
    },
    {
      "color_count": 5,
      "colors": [
        {
          "css": "#2A2930",
          "hex": "2A2930",
          "position": 1,
          "rgb": {
            "b": 48,
            "g": 41,
            "r": 42
          },
          "role": null
        },
        {
          "css": "#5A5354",
          "hex": "5A5354",
          "position": 2,
          "rgb": {
            "b": 84,
            "g": 83,
            "r": 90
          },
          "role": null
        },
        {
          "css": "#BF9DAF",
          "hex": "BF9DAF",
          "position": 3,
          "rgb": {
            "b": 175,
            "g": 157,
            "r": 191
          },
          "role": null
        },
        {
          "css": "#BC8A7D",
          "hex": "BC8A7D",
          "position": 4,
          "rgb": {
            "b": 125,
            "g": 138,
            "r": 188
          },
          "role": null
        },
        {
          "css": "#D7AA42",
          "hex": "D7AA42",
          "position": 5,
          "rgb": {
            "b": 66,
            "g": 170,
            "r": 215
          },
          "role": null
        }
      ],
      "css_colors": [
        "#2A2930",
        "#5A5354",
        "#BF9DAF",
        "#BC8A7D",
        "#D7AA42"
      ],
      "hexes": [
        "2A2930",
        "5A5354",
        "BF9DAF",
        "BC8A7D",
        "D7AA42"
      ]
    }
  ],
  "requested_count": 2
}
```

### List models

List the models Colormind has loaded today. default and ui are always there; the others are trained on a film, a game or a style of photography and are replaced every day at 08:00 UTC, so the answer says which are permanent, which are today's, and when the next change is.

**Inputs**: None.

**Outputs**

- `daily_models` (list)
- `model_count` (number)
- `model_names` (list)
- `models` (list)
- `next_refresh_at` (text)
- `permanent_models` (list)
- `refreshes_at` (text)

**Example output**

```json
{
  "daily_models": [
    "makoto_shinkai",
    "metroid_fusion",
    "akira_film",
    "flower_photography"
  ],
  "model_count": 6,
  "model_names": [
    "default",
    "ui",
    "makoto_shinkai",
    "metroid_fusion",
    "akira_film",
    "flower_photography"
  ],
  "models": [
    {
      "is_permanent": true,
      "name": "default"
    },
    {
      "is_permanent": true,
      "name": "ui"
    },
    {
      "is_permanent": false,
      "name": "makoto_shinkai"
    },
    {
      "is_permanent": false,
      "name": "metroid_fusion"
    },
    {
      "is_permanent": false,
      "name": "akira_film"
    },
    {
      "is_permanent": false,
      "name": "flower_photography"
    }
  ],
  "next_refresh_at": "2026-09-12T08:00:00+00:00",
  "permanent_models": [
    "default",
    "ui"
  ],
  "refreshes_at": "08:00 UTC"
}
```

### Suggest matching colors

Get four colors that go with one: the color is locked into one slot of a palette and Colormind fills the other four around it. Choose the slot when it matters; with the ui model, slot 3 is the main brand color and the rest become its shades and accents. The four suggestions come back on their own, with the whole palette beside them, and the answer says whether the model nudged the color you gave.

**Inputs**

- Color (`color`, text, required): The color to find companions for. A hex code such as D64E45 or #D64E45, rgb(214, 78, 69), or three numbers from 0 to 255 all work, as does a color from an earlier step.
- Model (`model`, text): The Colormind model to draw from. default and ui are always available; the others are named after films, games and photography styles and change every day at 08:00 UTC, so pick one from the list or run List models first. Any spelling works: Makoto Shinkai is makoto_shinkai. Defaults to default. Default: `default`.
- Slot (`position`, number): Which of the five slots to lock the color into, from 1 to 5. The slot only matters for the ui model, where 3 is the main brand color. Defaults to 1. From 1 to 5. Default: `1`.

**Outputs**

- `changed` (true/false)
- `color` (object)
- `css_colors` (list)
- `hexes` (list)
- `model` (text)
- `palette_hexes` (list)
- `position` (number)
- `returned_color` (object)
- `suggestion_count` (number)
- `suggestions` (list)

**Example output**

```json
{
  "changed": true,
  "color": {
    "css": "#2C2B2C",
    "hex": "2C2B2C",
    "position": 1,
    "rgb": {
      "b": 44,
      "g": 43,
      "r": 44
    },
    "role": null
  },
  "css_colors": [
    "#5B5351",
    "#859B8F",
    "#E2D1A7",
    "#EBC67E"
  ],
  "hexes": [
    "5B5351",
    "859B8F",
    "E2D1A7",
    "EBC67E"
  ],
  "model": "default",
  "palette_hexes": [
    "312F31",
    "5B5351",
    "859B8F",
    "E2D1A7",
    "EBC67E"
  ],
  "position": 1,
  "returned_color": {
    "css": "#312F31",
    "hex": "312F31",
    "position": 1,
    "rgb": {
      "b": 49,
      "g": 47,
      "r": 49
    },
    "role": null
  },
  "suggestion_count": 4,
  "suggestions": [
    {
      "css": "#5B5351",
      "hex": "5B5351",
      "position": 2,
      "rgb": {
        "b": 81,
        "g": 83,
        "r": 91
      },
      "role": null
    },
    {
      "css": "#859B8F",
      "hex": "859B8F",
      "position": 3,
      "rgb": {
        "b": 143,
        "g": 155,
        "r": 133
      },
      "role": null
    },
    {
      "css": "#E2D1A7",
      "hex": "E2D1A7",
      "position": 4,
      "rgb": {
        "b": 167,
        "g": 209,
        "r": 226
      },
      "role": null
    },
    {
      "css": "#EBC67E",
      "hex": "EBC67E",
      "position": 5,
      "rgb": {
        "b": 126,
        "g": 198,
        "r": 235
      },
      "role": null
    }
  ]
}
```
