For AI agents: this page is also available as Markdown at https://docs.refabric.com/task-api-reference/image.extract_colours.md, and the index of every page is https://docs.refabric.com/llms.txt.
Production prep
Extract the colours of a garment
Read a garment's colours from its image, with their Pantone matches, largest share first. Delivered as a palette image with the colours in its data.
Endpoint: POST https://api.refabric.com/v1/tasks/image.extract_coloursTask: image.extract_coloursScope: tasks:runCategory: Production prep
Quick start
import os
import time
import requests
headers = {"Authorization": f"Key {os.environ['REFABRIC_API_KEY']}"}
job = requests.post(
"https://api.refabric.com/v1/tasks/image.extract_colours",
headers=headers,
json={
"image": "art:9f3c01",
},
).json()
print(job["job_id"])
while True:
status = requests.get(job["status_url"], headers=headers).json()
if status["lifecycle"] == "terminal":
break
time.sleep(5)
print(requests.get(job["result_url"], headers=headers).json())cURL waits for the result with Prefer: wait; when the job outlives the wait, it answers 202 with the job's URLs.
Input schema
- stringrequired
The garment image to read its colours from, as one string: a URL, a file from an earlier result (
art:…or its url) or an upload (file:…). If it is an image of one of your designs, the result is also saved on that design.pattern: ^(https://|art:|file:).+$
Example:
art:9f3c01
Output schema
- array<object>optional
One file: the palette chart (
image/*), with the colours indata. Pass a colour on unchanged wherever a colour is taken (moodboard.create,brand_kit.create).- objectoptional
The garment's palette.
- array<object>optional
The garment's colours, the largest share first.
- stringrequired
The colour as #RRGGBB, like "#E8D9C4".
pattern: ^#[0-9A-Fa-f]{6}$
- stringoptional
A name for the colour.
- stringoptional
Its Pantone code, when known.
Required-fields example
{
"image": "art:9f3c01"
}Full example
{
"image": "art:9f3c01"
}Response example
{
"job_id": "5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968",
"lifecycle": "queued",
"status_url": "http://v3-api.refabric.com/v1/jobs/5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968",
"result_url": "http://v3-api.refabric.com/v1/jobs/5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968/result",
"cancel_url": "http://v3-api.refabric.com/v1/jobs/5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968/cancel"
}Result example
{
"job_id": "5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968",
"files": [
{
"file": "art:a1b2c4",
"url": "https://files.example.com/image.extract_colours/1.png",
"media_type": "image/png",
"task": "image.extract_colours",
"job_id": "5f0c2a1e9b8d4c7a8e6f1d2c3b4a5968",
"created_at": "2026-10-01T09:30:00Z",
"data": {
"colours": [
{
"hex": "#E8D9C4",
"name": "Bleached Sand",
"pantone": "13-1008 TCX"
},
{
"hex": "#2B2F36"
},
{
"hex": "#F4F1EA",
"name": "Snow White",
"pantone": "11-0602 TCX"
}
]
}
}
],
"has_more": false
}The file is the palette chart; data.colours is largest share first. The image is one of your designs, so the palette is also saved on that design's production details.
Send an image of a garment and get its colours back, the largest share first, each with its Pantone code when one is known, together with a palette chart image. If the image is one of your designs, the colours are also saved on that design.
Built for
- A garment's palette for a tech pack
- Colours to pass on to a moodboard or a brand kit
- Pantone references for production
What you get
- One file: the palette chart image.
data.colours: the garment's colours, the largest share first, one per hex.
Specs
| Input formats | Images, each one string: a URL, an upload (file:…) or a file from an earlier result (art:…). Upload types and sizes: GET /v1/meta limits.upload. |
|---|---|
| Input count | image: one |
| Output format | Files: each one line with its url and its media_type, in the job's result. |
| Outputs per job | One file per job. |
Choosing a task
- Use this when you only need the garment's colours. Use image.extract_materials when you need its fabrics, trims and components too.
Errors
Related
moodboard.create· It runs after: it takes this task's result.brand_kit.create· It runs after: it takes this task's result.image.extract_materials· It does a neighbouring job.
Good to know
Pricing: Estimate a request before you run it, or see the price of each option.
For agents and code generation
- https://api.refabric.com/v1/tasks/image.extract_colours/llms.txt
- https://api.refabric.com/v1/tasks/image.extract_colours/openapi.json
GET https://api.refabric.com/v1/tasks/image.extract_colours