Root
See also
This is the generation-time override. The equivalent at import time is each format's background_color on Create Import.
The root element customises the background of your image.
| Property | Description |
|---|---|
background_color | 3 filling modes: Monochrome, Linear gradient, or Cmyka (print only). Full token grammar: Colors & Gradients. |
Monochrome color
Supported formats:
- 6 hex digits prefixed with
#:#RRGGBB— e.g.#0000FF - 8 hex digits prefixed with
#:#RRGGBBAA— includes alpha — e.g.#0000FF80(blue at 50% opacity)

Opacity reference:
| Opacity (0–100) | Alpha hex |
|---|---|
| 0 | 00 |
| 5 | 0D |
| 10 | 1A |
| 20 | 33 |
| 30 | 4D |
| 40 | 66 |
| 50 | 80 |
| 60 | 99 |
| 70 | B3 |
| 80 | CC |
| 90 | E6 |
| 100 | FF |
No 3-digit hex
3-digit hex colors (e.g. #AAA) are not supported.
Linear gradient
Can be used as background_color (banner background, button) or color (text). For the exact token grammar, see Colors & Gradients below.
Examples:
| Value | Result |
|---|---|
"background_color": "linear-gradient(0% 0% 100% 0%,0% #1a47ff 1,100% #b65151 1)" | ![]() |
"background_color": "linear-gradient(0% 0% 0% 100%,0% #1a47ff 1,100% #b65151 1)" | ![]() |
"background_color": "linear-gradient(0% 0% 100% 100%,0% #1a47ff 1,100% #b65151 1)" | ![]() |
Cmyk / Cmyka Color
Used for print designs only — see Colors & Gradients below for the full CMYK token grammar and how it relates to hex.
Colors & Gradients
Every color field across the API takes a string token. Which token forms are accepted depends on the design type and on the specific field.
Hex
For static / animated designs:
#RRGGBB or #RRGGBBAA (the 8-digit form appends alpha). Case-insensitive. Nothing else is accepted (a cmyk(...) token is the one exception — it is converted, see below):
| Value | Result |
|---|---|
#ffffff, #FFFFFF, #ffffff80 | ✅ Accepted |
#fff, #fffa (3/4-digit shorthand) | ✅ Accepted on Design Import — expanded to the full form before storage. Use the full 6/8-digit form for generation-time overrides. |
ff0000 (no #) | ❌ Rejected |
#fffffff (7 digits) | ❌ Rejected |
rgb(255,0,0), red | ❌ Rejected |
Linear gradient
Linear gradients do exist on static and animated designs, but they use Abyssale's own grammar — not CSS. CSS gradient syntax will not match:
linear-gradient(<x>% <y>% <x1>% <y1>%,<offset>% #RRGGBB <alpha>,<offset>% #RRGGBB <alpha>)- The first group is the gradient line: start point
<x>% <y>%then end point<x1>% <y1>%, all four space-separated. - Then exactly two color stops, comma-separated from the line and from each other. Each stop is
<offset>% #RRGGBB <alpha>— again space-separated internally, withalphaa bare float (1,0.5), not a percentage.
A worked example — an opaque top-to-bottom teal → navy fill:
"background_color": "linear-gradient(0% 0% 0% 100%,0% #0a363a 1,100% #041b2d 1)"Only fill-type fields accept a gradient. The property table you came from says whether a specific field is one of them.
| Accepts a gradient | Hex / CMYK only |
|---|---|
A format background on static / animated | A page background, and a format background on printer |
A shape, button or rating layer's background_color | A text layer's background_color |
color on a text or button layer | Borders and strokes |
| Shadows and text decoration | |
| Overlays and patterns |
CMYK
For printer / printer_multipage designs — print designs store CMYK:
cmyk(C,M,Y,K) cmyka(C,M,Y,K) cmyka(C,M,Y,K,A)Components are integers 0–100, with no % sign. Whitespace between components is accepted and normalised away. Tokens are case-insensitive. See Print Imports → Colors.
Which token on which design type
| Token | static / animated | printer / printer_multipage |
|---|---|---|
#RRGGBB / #RRGGBBAA | ✅ Accepted | ✅ Converted to cmyk(...) + color_converted warning |
linear-gradient(...) | ✅ On gradient-capable fields | ❌ unsupported_for_type |
cmyk(...) / cmyka(...) | ✅ Converted to hex + color_converted warning | ✅ Stored as sent |
A solid color in the "wrong" space is converted, not rejected. The warning names the path and both values; alpha survives in both directions (#RRGGBBAA ⇄ cmyka(C,M,Y,K,A)), and the hex the converter emits is uppercase.
Conversion is approximate
No ICC profile is involved, so a converted print color is a close approximation, not a colour-managed match. Author cmyk(...) yourself when the exact ink matters — it is then stored verbatim, with no conversion and no warning.
Why a solid colour converts but a gradient does not
Converting a gradient means collapsing it to its first colour, which would silently turn your artwork into a flat fill. Converting a solid colour only costs some accuracy, and the warning tells you it happened.
A malformed token (a bad CMYK component, a % in a CMYK token, a gradient with the wrong number of stops) is invalid_payload at import time, and the error message spells out the accepted forms.
Printer color defaults
On printer, defaults are CMYK too: text / shape / button / qrcode colors default to cmyk(0,0,0,100) (black) and button text to cmyk(0,0,0,0) (white). Rating layers get print-appropriate defaults from the backend — star_color → cmyk(0,20,65,0) and background_color → cmyk(0,0,0,8) — where static/animated keep #FFCD59 / #EAEAEA.
background_color is the only root property
The root element accepts nothing else — no hidden, no shadows, no image. A background image is a regular image layer behind the others.
Related
- Element Properties — the per-layer overrides
- Colors & Gradients — the full token grammar



