Hi there,
Building on top of the Abyssale API has meant hand-rolling HTTP requests since day one — right auth headers, right payload shape, your own retry logic if a request timed out. That's no longer the only option. Abyssale just shipped its first official SDKs:
@abyssale/sdk for Node.js/TypeScript (now at 1.3.0),abyssale for Python (now at 1.1.0).Both SDKs wrap the core REST API — designs, generation, projects, workspace templates, exports, and, as of this release, webhook signing — in a typed, idiomatic client for their respective language, so integrating Abyssale into a codebase looks like using any other well-maintained SDK, not stitching together fetch calls.
Install it with:
npm install @abyssale/sdk
Node.js 20.3 or later is required — not just Node 20. The retry middleware relies on AbortSignal.any, which only landed in 20.3.0, so installing on 20.0–20.2 succeeds but fails at runtime.
Configuration is entirely environment-variable driven — no constructor, no setup step beyond setting ABYSSALE_API_KEY. Note that the SDK throws at import time if that variable isn't set, which occasionally surprises people in test environments:
import abyssale from '@abyssale/sdk';
const { data, error } = await abyssale.generateImage('your-design-id', {
elements: {
title: { payload: 'Hello World' },
background: { background_color: '#FF0000' },
},
template_format_name: 'facebook-post',
});
console.log(data?.file.cdn_url);
A few things worth knowing:
{ data, error, response }, so error handling stays explicit instead of relying on try/catch around network calls.5xx is retried on reads only — a generation POST is never repeated, since a timeout doesn't mean the render didn't happen, and retrying it could bill you twice. A 429 carrying a Retry-After header gets the full retry ladder; a bare 429 gets a single one-second probe, since that status alone can mean either "out of credits" or "hit the gateway's per-second ceiling." feature_not_in_plan is never retried. Retry count is configurable via ABYSSALE_MAX_RETRIES.waitForGenerationRequest and waitForDuplicationRequest handle the poll loop for async jobs (multi-format generation, multi-page PDFs, workspace template duplication) so you don't have to write your own polling logic.@abyssale/sdk/webhooks — it needs no API key at all, since verifying a signature is pure local cryptography, not an API call.One caveat: the design-import surface is deliberately left out of the SDK for now, since it's still in Alpha and the format may change — the OpenAPI spec used to generate the client strips those endpoints so a routine regeneration can't accidentally reintroduce them before things stabilize.
→ npmjs.com/package/@abyssale/sdk
→ github.com/getabyssale/abyssale-sdk
→ developers.abyssale.com/sdks/nodejs
The same core coverage is now available for Python teams, published to PyPI as abyssale, at 1.1.0.
pip install abyssale
from abyssale import abyssale, AbyssaleAPIError
try:
banner = abyssale.generate_image(
"your-design-id",
elements={
"title": {"payload": "Hello World"},
"background": {"background_color": "#FF0000"},
},
template_format_name="facebook-post",
)
print(banner.file.cdn_url)
except AbyssaleAPIError as e:
print("API error:", e.id)
The two SDKs are built on the same underlying API, but they don't handle errors the same way. Where the Node SDK returns { data, error } and never throws, the Python SDK raises AbyssaleAPIError on failure, carrying a machine-readable id you can match against. Worth keeping in mind if you're used to one and picking up the other.
Request bodies in Python are plain dicts by design rather than generated model classes — the elements schema is an anyOf with no discriminator, so a strict model would risk mis-coercing valid payloads.
Like the Node SDK, this release also adds webhook signing support via abyssale.webhooks: the same list/create/delete methods for your signing secret, plus a signature verifier that works without an API key configured.
And the same Alpha caveat applies here too: design-import endpoints are intentionally excluded from the generated client while that feature's format is still settling.
→ github.com/getabyssale/abyssale-python-sdk
→ developers.abyssale.com/sdks/python
Every integration built directly against the raw REST API was solving the same problems over and over: retry logic that doesn't double-bill you, polling for async jobs, verifying webhook signatures by hand. With official, typed SDKs for both Node.js and Python — and now first-class webhook signing in both — that work is done once, centrally, and maintained alongside the API itself.
Questions about migrating an existing integration to one of the SDKs? Reach out at help@abyssale.com.
Hi there,
For as long as the Abyssale API has existed, it's followed the same rule: build the design in the editor first, generate from it after. That rule just changed.
You can now send a full design as a single JSON payload and have Abyssale create it for you — and export any existing design back into that same shape.
On top of that, workspace templates are now reachable by API too, alongside a round of platform-level improvements aimed squarely at anyone running Abyssale as part of an integration.
Until now, the editor was a mandatory first step. Every design, however simple, had to be built by hand before the API could generate a single asset from it. That dependency is gone: a design can now be described entirely as JSON and imported directly, without ever opening the builder.
The reverse works too — any existing design can be exported into that same JSON shape, which means you can pull a design out, inspect or modify its structure, and import it back as a new one.
This isn't limited to simple static visuals. It covers:
This turns design creation itself into something automatable, not just design generation. A few things become possible that weren't before:
The feature is marked Alpha because the JSON format itself may still evolve — but it's live and rolled out to everyone, with no partner signup or waitlist required to access it. Anyone can start using it today.

Workspace templates, your brand masters, standardized layouts, whatever your team treats as a starting point — were previously something you could only spin up into a project from inside the builder. That's now available by API as well: list the templates in a workspace, and turn any one of them into a new project programmatically.
This is particularly useful if you're standardizing on a fixed set of brand templates across multiple teams or client accounts and want project creation to be part of an automated flow rather than a manual step someone has to remember.
Alongside the two feature additions, this release includes a set of changes to the API's underlying behavior:
In practice, this means fewer support tickets from integrations breaking in confusing, hard-to-diagnose ways — and a clear, consistent answer any time someone asks "why did my request fail?"

The developer documentation has been rebuilt from the ground up, with a quickstart, a full error reference, a changelog, and a complete endpoint catalogue, all in one place.
Hi there,
For a while, AI in Abyssale meant reaching into a menu, buried a click or two away from the layer you were actually working on. That's changed. Remove Background, Auto Focus, the Eraser, and AI Text-to-Image now sit together in a single AI toolbar that appears the moment you select an image layer, and each of them just got meaningfully more capable.
Here's a full walkthrough of what's new, with a link to the dedicated guide for each feature if you want the details.

Select any image layer in the Design Editor and an AI toolbar appears at the bottom of the canvas, with all four AI actions right there: Remove Background, Focus, Erase, and Ai text to image. No more navigating through separate modals or side-panel menus depending on which action you needed, it's the same entry point every time, for every action.
From there, each action opens its own context directly in the toolbar, where you configure it and generate without leaving the canvas.
Background removal now gives you a choice of model instead of a single fixed engine. Click the model dropdown to see the available options, each labeled with its relative AI credit cost:

If your first pass doesn't cleanly isolate the subject, especially around tricky edges, switching models is usually faster than repeating the same one. Two additional controls round out the feature: Trim Transparent Pixels, which crops the image down to its subject after removal, and Manual Selection, which lets you draw a box around the area you want to guarantee is kept (Design Editor only, not available via API).
Once you're happy with a result, you can save it as the rule for that layer going forward, so every future variation gets the same treatment automatically.
→ Read the full guide: Remove Image Backgrounds
Auto Focus keeps your subject perfectly framed regardless of the original image's size or orientation, and it offersn the two detection models depending on what you're framing:

During automated variations, if the AI detects the tags you've chosen in a new image, it merges them automatically to keep your composition consistent at scale, useful for anything from headshots to product shots run through a large batch.
→ Read the full guide: Auto Focus

The AI Eraser lets you paint over any object, logo, or unwanted detail in an image and have it intelligently replaced with matching background content — no manual retouching required. It's a natural fit for cleaning up product photos, removing logos from reused assets, or hiding distracting background elements.
Two selection modes are available: brush mode, with an adjustable size for fine edges or broader areas, and bounding box mode, for quickly clearing larger or simpler shapes. Like the other AI actions, you now choose which AI model handles the erase before applying it, and the edit is non-destructive until you confirm it.
→ Read the full guide: Erase Unwanted Objects from Images

Text-to-Image turns a written description into a custom visual directly inside the builder, no stock photo search, no manual illustration. The feature now supports multiple AI models instead of a single one, and depending on the model you choose, you can add up to 4 reference images to steer the generation instead of working from the prompt alone.
Other capabilities carried over and still worth knowing:
Text-to-Image is also available through the API: pass a text_to_image prompt on an image element instead of a static URL, and Abyssale generates the visual in real time as part of your automation.
→ Read the full guide: AI Text to Image

The biggest shift isn't any single action, it's that none of them are one-off anymore. Save an AI action once (Remove Background, Auto Focus, or Text-to-Image) and it becomes the standing rule for that image layer.
Every future variation of the design inherits it automatically, whether it's generated through Quick Generation, a spreadsheet, or the API, including having each variation generate its own unique AI image, not just reuse the same one.
That reach comes with control. In Design Settings, you decide whether AI Text-to-Image is allowed on a design at all. For Quick Generation specifically, you can also decide whether the end user creating a new variation is allowed to generate an AI image inside it, or not, so self-serve generation stays exactly as open, or as locked down, as you want it.
For the technical details on wiring any of this into your own workflows, remove_bg, auto_focus, and text_to_image element properties, model names, and payload examples — the API reference has the full spec.
Hi there,
You can now generate print-ready PDFs for large formats directly in Abyssale, at actual dimensions, no workarounds needed.
Create print formats up to 10 000 mm per side. Metro posters, roll-ups, billboards, bus shelters, all supported natively.

Set the exact resolution your printer requires, independently for each format in your design. 300 DPI for close-up print, 72–150 DPI for large outdoor formats.

The generation cost in credits is displayed in real time as you adjust dimensions and DPI — no surprises before you generate.

Import source files up to 500 MB, so you can bring in high-res images and assets without compression.
New design : Create a new design, select a Print design type (Multi format or Multipage), then define your format dimensions in mm or inches. For each format, set the DPI that matches your print requirements in the design editor.
Existing design : Already have a print design? Simply add a new format on it to your large format size, then adjust the DPI accordingly.
The maximum available DPI updates automatically based on your canvas size, you'll always see what's possible before generating.
Hi there,
We’ve just released a highly requested addition to our design toolkit that will make your branding workflows smoother than ever: the Eyedropper tool!
This feature is designed to give you absolute precision when selecting colors, ensuring your generated visuals remain perfectly consistent with your brand assets or reference images.


Now you can match your creative vision with surgical precision, keeping your designs on-brand every single time!
Enjoy a more precise and efficient creative experience!
Hi there,
Ready to add a touch of storytelling and focus to your animated designs? We’re thrilled to introduce a highly-requested addition to our animation toolkit: the Typewriter effect!

This new feature allows you to reveal your text layer by layer, mimicking the classic look of a typewriter. It’s the perfect way to grab attention, build suspense, or simply add a sophisticated, dynamic feel to your headlines and quotes.
Adding a "spin" to your words is simple and follows our standard animation workflow:
Now you can create more engaging, narrative-driven content with just a few clicks. We can't wait to see how you use this to tell your brand's story!
Enjoy a more dynamic and expressive creative generation experience!
Hi there,
We’ve just rolled out a enhancement to one of our most-used workflow features! You can now duplicate any existing design into a Print format
.
Previously, duplication was limited to switching between Static and Animated designs. This new update bridges the gap between digital and physical, allowing you to turn your web-optimized creatives into high-quality, print-ready assets in just a few clicks. Whether you're moving from a social banner to a flyer or a digital ad to a professional brochure, your workflow just got a lot more versatile!
Transitioning your designs from screen to paper is straightforward:

Your new print design will open in the editor, ready for you to define your bleed areas and generate a professional, print-ready PDF!
Enjoy a more connected and efficient creative generation experience across all your media!
Hi there,
A focused improvement for anyone using Auto Focus with the General detection model. We've brought the same Zoom Level control that was already available on the People model to the General model — giving you consistent, precise control no matter what you're framing.
The General model previously locked the zoom to the maximum, cropping tightly to the edges of the detected object with no room to breathe. Now you're in control.

After running detection and selecting your focus tags, you'll find a new Zoom Level selector with four options:

The zoom configuration applies automatically to all future generations for that layer, whether via API, Spreadsheet, or Quick Generation.
Hi there,
A small but mighty improvement for all API users out there. We've made it significantly easier to find and use the right font ID when customizing layers through the API.
When generating visuals via the API, you can override the font of any text layer by passing a font ID in your request. Simple in theory but finding the right ID was anything but. Your only option was to call a dedicated API endpoint to retrieve the full list of fonts on your workspace, then dig through the results to find the one you needed.
No way to do this directly from the platform.
You can now copy the ID of any custom font directly from the Creative Hub with a single click. No more API calls just to find a font reference.

Good to Know
GET /fonts endpoint.A small click that saves a lot of back-and-forth!
Hi there,
We've just made the Quick Generation workflow even smoother with a quality-of-life improvement that saves you a few clicks every time you want to tweak a result.
When you generate a visual using the Quick Generation method, you'll now see an "Edit visual" button directly in the preview. Spot something you'd like to adjust, the image position, a text element, or any other detail, and you can jump straight into editing without ever leaving the workflow.

Previously, if you wanted to modify a generated visual, you had to exit the workflow, navigate to the Generated Visuals page, locate the right visual, and then open it for editing. Those days are over.
No more interrupting your creative flow just to polish a detail. Generate, preview, and refine — all in one place.