Hi there,
A blurry or pixelated image can ruin an otherwise great design. It happens most on large formats like print, displays or high-resolution banners, and whenever images come from a source you don't control, like a product feed or user-submitted content.

AI Upscale fixes that. It increases the resolution and sharpness of your images directly in the Design Builder, and can do it automatically for every visual you generate.
You'll find it in the AI toolbar at the bottom of the canvas, alongside Remove Background, Auto Focus, Expand, Erase, and Text-to-Image.
Every image is different, so AI Upscale lets you choose the model that fits:

Then choose how much to increase the resolution: up to 4x.
Auto upscales the entire image, which is what you'll want most of the time.
Manual lets you draw a zone on the image to keep and upscale only that part. It's the easiest way to zoom in on a product detail or a face without ending up with a pixelated result.

Once the upscale is done, a before/after slider lets you compare the original with the new version, and zoom in to see the difference in fine details. Happy with it? Apply it to your design, or simply download the upscaled image.
If your design has several formats, the upscale can be applied to all of them at once, so your visuals stay consistent everywhere.
And just like the other AI actions, you can save your upscale settings on the design. Every new image used in your variations is then upscaled automatically at generation, whether it comes from a spreadsheet, a Quick Generation form or the API. No more checking images one by one: every visual you generate gets the same quality.You'll find it in the AI toolbar at the bottom of the canvas, alongside Remove Background, Auto Focus, Expand, Erase, and Text-to-Image.
Hi there,
Gradients in Abyssale used to stop at two colors. Not anymore: you can now build gradients with up to 8 colors, and choose exactly where each one appears.

Add as many colors as your design needs, up to eight, and slide each one along the gradient to decide where it shows up and how quickly it blends into the next.
That opens up a lot more than a simple fade:
Just select a layer, switch its color to Gradient, and click + Add stop to add a new color

Your gradients aren't limited to the editor. They carry through to every variation you generate, whether from the spreadsheet, Quick Generation, or the API, and can even change from one variation to the next.
Your existing gradients keep working exactly as before.
Print designs can now use a true gradient on shapes and buttons, including CMYK colors. The gradient stays crisp and faithful in the final PDF, so the colors you pick are the colors that get printed.
Hi there,
A good call to action is understood at a glance. Buttons in Abyssale can now carry an icon next to their label (an arrow, a cart, a play symbol), making your CTAs more visual and easier to scan.
Select a button layer, enable the new Button Icon toggle in the right panel, and upload your icon (JPEG, PNG, SVG or WEBP, up to 20 MB). From there, you control how it sits next to the text:

Upload an SVG and you can switch its color between Original (the file's own colors) and Custom (any HEX color of your choice). One icon file can then serve every brand color, button style, or campaign palette, without exporting a new version for each.
Custom color applies a single color to the whole icon, so keep multicolor icons on Original.
Icons are dynamic, just like the rest of the button. Via the API, send:
icon_url: a public URL to the iconicon_encoded: the icon as base64 or a data URI instead of a URL (if both are sent, icon_url wins)icon_color: a HEX color to recolor it (SVG only, no gradients)json
{ "payload": "Download now", "icon_url": "https://your-cdn.com/icons/arrow.svg", "icon_color": "#0A363A" }
Size, gap and position stay as set in the editor, so your layout holds no matter which icon comes in. If you add an icon by API to a button designed without one, it's placed on the left at font size with no gap, so for the best result, set the icon up in the design first.

Until now, a button's corner radius was a single global value applied to all four corners. You can now set the radius corner by corner, which opens up shapes that weren't possible before: a tab rounded only on top, a speech-bubble style CTA, or a pill cut square on one side to sit flush against another element.
Hi there,
Adapting one image to many formats has always meant a compromise. A landscape photo in a square frame either gets cropped with Cover, losing part of the scene, or sits inside Contain with empty bands above and below. AI Expand removes that tradeoff: it generates new content around your image to continue the scene, so the picture actually fills the frame.
No prompt required. You'll find it in the AI toolbar at the bottom of the canvas, next to Remove Background, Auto Focus, Erase, and Text-to-Image.

Auto fills the empty margins that Contain leaves behind. Put a landscape photo in a square format, click Expand, and the AI extends the scene above and below until the frame is full.
Manual gives you four sliders (Left, Right, Top, Bottom) to add space exactly where you want it. Extend one edge to make room for a headline, or several at once to give your composition more breathing room.

Next to the Auto and Manual controls, a formats toggle lets you expand the image for the current format only, or across all the formats of your design in a single operation. Build one square post, and the same image adapts to your story, banner, and landscape formats too.
After an Auto expansion, you can save it as an AI action. From then on, every new variation of the design expands its image automatically with the model you picked, whether it's generated through Quick Generation, a spreadsheet, or the API. Swap in a hundred different product photos, and each one gets expanded to fit, without anyone touching the editor.
Like the other AI actions, Expand lets you choose which AI model runs the generation, with the credit cost shown before you click generate. Check the preview, then Apply Expand to update your layer, or download the result directly.
Each generation uses AI credits depending on the model and the number of formats processed.
Hi there,
The model list in AI Text-to-Image just got three new additions: GPT Image 2.5 Flare, GPT Image 2.5 Sunburst, and Seedream 5 Pro. All three are selectable from the same model dropdown you already use for Text-to-Image generation, alongside your existing options.

OpenAI's speed-first variant of GPT Image 2.5. Flare is built to be the everyday choice: fast generation, natural lighting, and solid handling of complex layouts, including transparent backgrounds. If you're generating at volume and want a quick turnaround without a big quality tradeoff, this is the one to reach for.
The precision-focused sibling to Flare, built for the moments when getting the details exactly right matters more than speed. Sunburst spends longer on a generation in exchange for tighter control over intricate detail, better suited to premium visuals where the extra wait is worth it.
ByteDance's flagship image model, and the most structurally different of the three: it's tuned specifically for dense, text-heavy layouts and precise typography rather than purely photographic scenes. It's a strong pick for structured compositions, product photography, and anything where legible in-image text is part of the brief, not an afterthought.
Nothing changes about the workflow: open the model dropdown in the AI toolbar, pick one of the three, and generate as usual. Like the other models that support it, you can add reference images to steer the result instead of prompting from scratch.
As with every model in the list, generation cost varies by model, so check the credit cost shown next to each one before generating at scale.
Hi there,
Abyssale now speaks MCP. Connect it to Claude.ai, Claude Code CLI, ChatGPT/Codex, or Cursor, and your AI assistant can work directly in your Abyssale workspace, no API integration required.
import_design_from_json builds a fully editable, multi-format design directly from a JSON payload, meaning an assistant can go from a brief to a real Abyssale design without anyone opening the editor first.Ask Claude to "generate this banner in every format for our Q4 campaign" or "build me an editable product design from this brief," and it can just do it, reading the design first so it never guesses at layer names, then rendering straight to a file URL.
mcp.json).
Hi there,
AI Translation in the Spreadsheet has been one of the quickest ways to localize a batch of creatives: select your text, pick a language, and Abyssale translates it while preserving context and meaning, optionally duplicating your rows so the originals stay intact.

It had one limitation that anyone running multilingual campaigns felt immediately: one target language per operation. Localizing a campaign into six markets meant selecting the same content, opening AI Actions, and running the translation six separate times. It worked, but it was repetitive in exactly the way automation is supposed to eliminate.
That limitation is gone. You can now select up to 10 target languages at once, and Abyssale translates your content into all of them in a single operation.
The flow is the same one you already know, with one difference at the language step:
One click, and every selected language is handled. With duplication enabled, a single source row becomes one row per target language, ready to generate a full multilingual variant set without a single repeated action.
There's a second improvement bundled in. If your spreadsheet has a language column (the one you can add via the Manage columns button), Abyssale now fills it in automatically for each translated row with the corresponding language.

Before, that column was something you had to fill by hand after translating, or leave empty. Now every duplicated row arrives already labeled with its language, so you can see at a glance which row belongs to which market, sort or filter by language, and, if you're using that column as a dynamic variable in your design, drive language-specific content or formats straight from the spreadsheet without any manual tagging.
The time saving is obvious, but the bigger shift is that the structure of your spreadsheet now matches how localization work actually happens. Campaigns aren't translated into one language; they're translated into a market list. Selecting that list in one go means:
Hi there,
The in-app API console has always been the fastest way to see what a generation request for a given design looks like: open it, and it hands you a ready-to-run JSON payload built from that design's configuration. Until now, though, that payload was always a synchronous request, which meant the console couldn't show you, or let you test the parts of the API that only exist in asynchronous generation.
That's changed. A new Query mode selector in the console lets you switch between Sync and Async, and the payload, the available options, and the result behavior all update to match.

The two modes correspond to the two generation paths in the API, and the console now generates the correct payload for whichever one you pick:
template_format_name (a single string).template_format_names (an array), and the API returns a generation request ID immediately.Switching modes isn't just a cosmetic toggle: it changes which AI parameters the console includes, because the two paths don't support the same set.
If you've enabled Remove Background or Text-to-Image on a design and wondered why the console's sync payload didn't reflect it, this is the reason. Those actions are only supported on asynchronous generation. Background removal can take longer than the synchronous path's 10-second limit, so it's deprecated in sync and not recommended there; Text-to-Image behaves similarly. Surfacing those parameters in a sync payload would produce a request that looks correct but fails at runtime — so the console deliberately filters them out.
Concretely, when the console builds a payload for a design:
auto_focus and auto_focus_properties)remove_bg and remove_bg_properties), and Text-to-Image
Before, the only way to test a Remove Background request from the console was to add those fields by hand. Now you switch to Async and they're generated from the design's configuration, the same way Auto Focus always has been.
A helper block below the console in sync mode explains this and links straight to the asynchronous generation docs, so anyone landing on the console for the first time understands why a design's AI settings don't all show up in the sync payload.
The File type selector (Auto, PNG, JPEG, WEBP, AVIF) previously only appeared in some contexts. It's now available in both modes, sitting right next to the Query mode selector, so a static design gets the same output-format control the other design types already had, and it's a visible reminder that the API supports several export types, not just one.
Async generation in production means receiving results via webhook or polling the request ID. In the console, you don't have to do either: run an async query and the result still appears below, exactly as it does for animated, print, and multi-page designs, which were already async-only. The console handles the polling for you, so you can iterate on an async payload with the same fast feedback loop you're used to from sync.
Hi there,
Background removal is one of the most-used AI actions in Abyssale, and one of the most common ways to waste credits on it is running it on an image that doesn't need it. If a batch mixes already cut-out PNGs with regular photos, every image gets processed the same way, including the ones that already have no background to remove.
A new Skip if Already Transparent option fixes that. Turn it on, and Abyssale checks each image for existing transparency before deciding whether to run background removal at all.

When the option is enabled, Abyssale first checks whether the image already contains a significant amount of transparency:
Trim Transparent Pixels still applies either way. If you have both options enabled, an already-transparent image isn't re-processed by the removal model, but it's still cropped down to its subject, so the result stays compact and centered.
One thing to be aware of: the transparency check always costs 1 AI credit when the option is on, even when removal ends up running afterwards. If you know none of your source images are transparent, leave it off, there's nothing to save in that case.
You can enable it in two places:
Like the other Remove Background settings, this one can be saved as part of the layer's AI action, so it carries over automatically to every future variation of the design, whether generated through Quick Generation, a spreadsheet, or the API.
It's worth noting that Skip if Already Transparent is a design-level setting, not an API parameter. There's no API property for it: when the toggle is enabled on the layer, it applies to every generation of that design, including ones triggered via the API, and the API payload can't set or override it. That means once you've configured it in the editor, you don't need to think about it again in your integration.
The payoff is biggest in batch work. If you're running background removal across a product catalog, a set of user-uploaded images, or any source where some assets are already cut out and some aren't, this stops you from paying full model cost on images that would have come out unchanged anyway, and does it without you having to sort the images by hand first.
Hi there,
AI settings in Abyssale used to be a single on/off switch: AI features were either available to a workspace or they weren't.
That's still true, but it's no longer the whole picture. Administrators can now go a level deeper and control which specific AI models their team is allowed to use for each AI feature, and set which one is used by default.
As Abyssale has added more AI models across features like Text-to-Image and Remove Background, teams have ended up with real decisions to make about which models they actually want in play, not because every model isn't useful, but because "useful" depends on the team. A model might be excellent and still be the wrong choice for a given workspace: too expensive to run at volume, not aligned with a client's content policy, or simply inconsistent with the quality bar the team has settled on.
Until now, there was no way to express that at the workspace level, every enabled AI feature meant every model behind it was fair game, and standardizing on one meant trusting each person to pick the right one every time.
The new controls live in workspace AI settings, in a Models preferences section. For each AI feature, Text to Image, Remove Background, and so on, you'll see the full list of available models, along with:

Each model has a simple toggle. ON means it's available for the team to select when generating content. OFF hides it from selection entirely, team members won't be able to use it, even if their subscription plan technically includes it.
This is the mechanism for restricting usage: disable anything that doesn't meet your organization's cost, quality, or compliance bar, and it disappears from the picker for everyone in the workspace.
For any enabled model, the ⋯ (more options) menu includes Set model as default. That model is then pre-selected automatically whenever someone on the team starts a new AI generation, so the team defaults to whatever you've decided is the right choice, instead of relying on each person to remember and pick it manually every time.
Two rules keep this consistent: a model has to be enabled before it can be set as default, and disabling the current default forces you to choose a new one.
Put together, enabling/disabling models and setting a default give admins three concrete levers:
This sits alongside the existing workspace-wide AI Features Access toggle and the AI Model Training setting (which controls whether anonymized workspace data can be used to improve Abyssale's models), both still available in the same settings area, for admins who want to manage AI access at that broader level too.
→ Read the full guide: Control AI Features and Content Training in Abyssale