API

REST API for image, video & PDF generation

Generate images, video, GIF, PDF and HTML5 creatives programmatically with the Abyssale REST API. One integration, on-brand output, production-ready visuals on demand.

14 day free trial - no credit card required

One API for all
your visual needs

From social posts to full campaigns, generate any visual asset programmatically — from a product feed, a catalog, or your own app.

Start creating — It's free

Ad Network Solutions

Generate ad creatives programmatically for every network, size and format. Produce a campaign's variations from a single product feed through simple API calls.

Content Platforms

Embed visual generation into your content system. Automatically create custom images, thumbnails and social cards for any piece of content via the API.

eCommerce Automation

Connect your product catalog to automatically generate ad banners across every marketplace. Ideal for dynamic listings, promotional banners and feed-driven catalog updates.

SaaS Integration

Add visual generation to your software via the API. Build white-label solutions for your clients' branding and automate their content production.

RESTful endpoints,
endless creativity

Skip the design complexity. The Abyssale REST API turns simple requests into production-ready visuals — because creative automation shouldn't need 200 dependencies.

As easy
as API

Design rules, developer tools

Simple Endpoints, Powerful Results

Choose instant sync responses or async processing for large jobs. Control every design element through the API while keeping brand guidelines intact — turning complex, on-brand visuals into simple REST requests.
Start generating - It's free
Abyssale API exemple
Webhooks supported

Webhook Support

Real-time updates on generation status
Status polling

Status Polling

Simple endpoint to check generation progress
Abyssale CDN included on all plans

Included CDN

Generated assets served through our CDN (AWS)
Generate banner at scale with Abyssale's REST API

Production at Scale

One design into unlimited variations

Developer API

Visual Generation API

A simple REST API to generate banners, social ads, PDFs, HTML5, GIF and MP4 programmatically — from any stack, at any scale.

Simple Endpoints, Powerful Results

One request, done

Send a template ID and your data — get production-ready visuals in seconds. Sync or async, webhooks supported. OpenAPI spec included.

Official SDKs: @abyssale/sdk for Node.js and TypeScript, abyssale for Python — both typed from the OpenAPI spec, with sync and async clients.

// npm install @abyssale/sdk
// export ABYSSALE_API_KEY="{YOUR-API-KEY}"

import abyssale from '@abyssale/sdk';

const { data, error } = await abyssale.generateImage('YOUR_DESIGN_ID', {
  template_format_name: 'facebook-feed',
  elements: {
    text_title: { payload: 'Summer sale — 40% off' },
  },
});

if (error) console.error(error.id, error.message);
else console.log(data.file.cdn_url);
curl -X POST \
  https://api.abyssale.com/banner-builder/YOUR_DESIGN_ID/generate \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template_format_name": "facebook-feed",
    "elements": {
      "text_title": { "payload": "Summer sale — 40% off" }
    }
  }'
# pip install abyssale
# export ABYSSALE_API_KEY="{YOUR-API-KEY}"

from abyssale import Abyssale

with Abyssale() as client:
    banner = client.generate_image("YOUR_DESIGN_ID", {
        "template_format_name": "facebook-feed",
        "elements": {
            "text_title": {"payload": "Summer sale — 40% off"},
        },
    })

print(banner.file.cdn_url)

Start building your
own custom workflow!

From design to production-ready visuals, automate your creative generation however you need.
Our API gives you complete control.

Developer hub

Grab us by the hand and read our step by step guides to help you make the most out of the Abyssale API
Discover Developer Hub

API reference

Deep dive into a complete list of every actions, elements & properties available in our public REST API.
Discover API Reference

Platform comparison

Nine creative automation platforms side by side on API execution, output formats, SDKs and public pricing — so you can check the fit before you integrate.
See how this compares

Dynamic image URLs

Render a personalised visual straight from URL parameters, with no request and response cycle — so it works inside emails, CRM sends and static HTML. No rate limit in production mode.
Explore dynamic images

All features

Discover everything you can do with Abyssale

<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_215_5184)"> <path d="M10.2014 11.1368C10.3494 12.5197 11.4616 13.6319 12.8438 13.786C13.8705 13.9004 14.9246 13.9987 15.9993 13.9987C17.0741 13.9987 18.1282 13.9004 19.1549 13.786C20.5371 13.6319 21.6493 12.5197 21.7973 11.1368C21.9065 10.1159 21.9987 9.06787 21.9987 7.99935C21.9987 6.93085 21.9065 5.88277 21.7973 4.86191C21.6493 3.47903 20.5371 2.36679 19.1549 2.21272C18.1282 2.09829 17.0741 2 15.9993 2C14.9246 2 13.8705 2.09829 12.8438 2.21272C11.4616 2.36679 10.3494 3.47903 10.2014 4.86191C10.0922 5.88277 10 6.93085 10 7.99935C10 9.06787 10.0922 10.1159 10.2014 11.1368Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M2.20145 27.1388C2.3494 28.5216 3.46165 29.634 4.84384 29.7879C5.8705 29.9023 6.92462 30.0007 7.99935 30.0007C9.0741 30.0007 10.1282 29.9023 11.1549 29.7879C12.5371 29.634 13.6493 28.5216 13.7973 27.1388C13.9065 26.1179 13.9987 25.0698 13.9987 24.0013C13.9987 22.9328 13.9065 21.8847 13.7973 20.8639C13.6493 19.481 12.5371 18.3688 11.1549 18.2147C10.1282 18.1002 9.0741 18.002 7.99935 18.002C6.92462 18.002 5.8705 18.1002 4.84384 18.2147C3.46165 18.3688 2.3494 19.481 2.20145 20.8639C2.09223 21.8847 2 22.9328 2 24.0013C2 25.0698 2.09223 26.1179 2.20145 27.1388Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M18.2014 27.1388C18.3494 28.5216 19.4616 29.634 20.8438 29.7879C21.8705 29.9023 22.9246 30.0007 23.9994 30.0007C25.0741 30.0007 26.1283 29.9023 27.1549 29.7879C28.5372 29.634 29.6493 28.5216 29.7972 27.1388C29.9065 26.1179 29.9988 25.0698 29.9988 24.0013C29.9988 22.9328 29.9065 21.8847 29.7972 20.8639C29.6493 19.481 28.5372 18.3688 27.1549 18.2147C26.1283 18.1002 25.0741 18.002 23.9994 18.002C22.9246 18.002 21.8705 18.1002 20.8438 18.2147C19.4616 18.3688 18.3494 19.481 18.2014 20.8639C18.0922 21.8847 18 22.9328 18 24.0013C18 25.0698 18.0922 26.1179 18.2014 27.1388Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_215_5184"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

Projects

Organize all your creative projects in one place. Track progress, manage resources, and stay on track.
<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_215_4971)"> <path d="M2.39693 23.3646C2.74406 26.6108 5.35359 29.2218 8.59652 29.5833C13.5777 30.1388 18.4222 30.1388 23.4034 29.5833C26.6464 29.2218 29.2558 26.6108 29.603 23.3646C30.1323 18.4155 30.1323 13.5845 29.603 8.63522C29.2558 5.38911 26.6464 2.77829 23.4034 2.41663C18.4222 1.86112 13.5777 1.86112 8.59652 2.41663C5.35359 2.77829 2.74406 5.38911 2.39693 8.63522C1.86769 13.5845 1.86769 18.4155 2.39693 23.3646Z" stroke="#0A363A" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M29.6673 9.24029H2.33398C2.35484 9.03816 2.37608 8.83647 2.3976 8.63523C2.74472 5.38911 5.35425 2.77829 8.59718 2.41663C13.5784 1.86112 18.4229 1.86112 23.404 2.41663C26.6471 2.77829 29.2567 5.38911 29.6036 8.63523C29.6251 8.83647 29.6464 9.03816 29.6673 9.24029Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M18.418 19.0625H24.4018" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M8.89648 23.594C10.709 22.6878 12.5216 20.8752 13.4279 19.0627C12.5216 17.2501 10.709 15.4375 8.89648 14.5312" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_215_4971"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

API

Popular
Automate image, video, PDF, HTML5, GIF creation in your services using our powerful Abyssale API.
<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_215_5016)"> <path d="M6.61101 24.1243C4.44053 23.8747 2.70197 22.1369 2.46125 19.9654M6.61101 24.1243C7.97841 24.2816 9.45308 24.4469 10.9293 24.5477M6.61101 24.1243C8.05866 24.2908 9.61932 24.4514 11.1768 24.5398M2.46125 19.9654C2.22196 17.8067 2 15.5805 2 13.305C2 11.0296 2.22196 8.80333 2.46125 6.64471C2.70197 4.47322 4.44053 2.7353 6.61101 2.48569C8.78042 2.2362 11.018 2 13.305 2C15.5921 2 17.8297 2.2362 19.9991 2.48569C22.1695 2.73531 23.9081 4.47322 24.1488 6.64471C24.2646 7.68849 24.3762 8.74809 24.4606 9.82141M2.46125 19.9654C2.35049 18.9662 2.24391 17.9525 2.16087 16.9262C3.95157 14.6514 6.05067 12.9048 8.19662 12.9048C10.5861 12.9048 12.9174 15.0703 14.8296 17.7191M24.4081 19.932L19.9333 24.4069M23.6575 27.4014C20.823 29.8985 18.1949 31.1288 15.7029 28.6368C13.2323 26.1662 14.4203 23.5618 16.8742 20.7553M20.684 16.9373C23.5183 14.4402 26.1465 13.2098 28.6386 15.7019C31.1091 18.1725 29.9211 20.7768 27.4674 23.5833M17.4698 12.3097C19.1834 12.3097 20.1473 11.3458 20.1473 9.63224C20.1473 7.91865 19.1834 6.95475 17.4698 6.95475C15.7562 6.95475 14.7923 7.91865 14.7923 9.63224C14.7923 11.3458 15.7562 12.3097 17.4698 12.3097Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_215_5016"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

Dynamic image URLs

Create personalized visuals at scale with dynamic URLs. Customize content for each recipient using merge tags.
<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_215_5190)"> <path d="M16.2937 29.6987C17.3607 29.6188 18.2438 28.8077 18.425 27.7531C18.6135 26.6562 18.7945 25.5241 18.7945 24.3664C18.7945 23.2088 18.6135 22.0767 18.425 20.9797C18.2438 19.9252 17.3607 19.1142 16.2937 19.0343C14.3964 18.892 12.4231 18.7331 10.3973 18.7331C8.37145 18.7331 6.39814 18.892 4.50087 19.0343C3.43388 19.1142 2.55075 19.9252 2.36953 20.9797C2.18102 22.0767 2 23.2088 2 24.3664C2 25.5241 2.18102 26.6562 2.36953 27.7531C2.55075 28.8077 3.43388 29.6188 4.50087 29.6987C6.39814 29.841 8.37145 29.9998 10.3973 29.9998C12.4231 29.9998 14.3964 29.841 16.2937 29.6987Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M27.4991 12.9655C28.566 12.8856 29.4492 12.0746 29.6304 11.02C29.8188 9.92306 30 8.79093 30 7.63331C30 6.47571 29.8188 5.34358 29.6304 4.24661C29.4492 3.19207 28.566 2.38108 27.4991 2.3011C25.6018 2.15889 23.6284 2 21.6026 2C19.5768 2 17.6035 2.15889 15.7062 2.3011C14.6393 2.38108 13.7561 3.19207 13.5749 4.24661C13.3864 5.34358 13.2054 6.47571 13.2054 7.63331C13.2054 8.79093 13.3864 9.92306 13.5749 11.02C13.7561 12.0746 14.6393 12.8856 15.7062 12.9655C17.6035 13.1077 19.5768 13.2666 21.6026 13.2666C23.6284 13.2666 25.6018 13.1077 27.4991 12.9655Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M5.95057 13.1832C6.9884 13.0215 7.75377 12.091 7.81766 11.0426C7.88493 9.93861 7.94995 8.79886 7.94995 7.63331C7.94995 6.46776 7.88493 5.32803 7.81766 4.22401C7.75377 3.17561 6.9884 2.24509 5.95057 2.08343C5.62982 2.03347 5.30435 2 4.97497 2C4.6456 2 4.32013 2.03347 3.99939 2.08343C2.96156 2.24509 2.19618 3.17561 2.13229 4.22401C2.06502 5.32803 2 6.46776 2 7.63331C2 8.79886 2.06502 9.93861 2.13229 11.0426C2.19618 12.091 2.96156 13.0215 3.99939 13.1832C4.32013 13.2332 4.6456 13.2666 4.97497 13.2666C5.30435 13.2666 5.62982 13.2332 5.95057 13.1832Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M28.0004 29.9164C29.0382 29.7547 29.8036 28.8242 29.8674 27.7757C29.9348 26.6718 29.9998 25.5319 29.9998 24.3664C29.9998 23.201 29.9348 22.0612 29.8674 20.9572C29.8036 19.9088 29.0382 18.9782 28.0004 18.8166C27.6796 18.7666 27.3541 18.7331 27.0249 18.7331C26.6954 18.7331 26.3699 18.7666 26.0491 18.8166C25.0113 18.9782 24.2459 19.9088 24.1821 20.9572C24.1149 22.0612 24.0497 23.201 24.0497 24.3664C24.0497 25.5319 24.1149 26.6718 24.1821 27.7757C24.2459 28.8242 25.0113 29.7547 26.0491 29.9164C26.3699 29.9664 26.6954 29.9998 27.0249 29.9998C27.3541 29.9998 27.6796 29.9664 28.0004 29.9164Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_215_5190"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

Template Library

Access your organization's approved design templates. Create on-brand content with pre-validated assets.
<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_215_5000)"> <path d="M7.75549 13.661C7.86536 14.7372 8.73471 15.6069 9.81042 15.7217C10.4438 15.7892 11.0918 15.8433 11.7512 15.8433C12.4106 15.8433 13.0586 15.7892 13.692 15.7217C14.7677 15.6069 15.637 14.7372 15.7469 13.661C15.8112 13.0316 15.8618 12.3878 15.8618 11.7327C15.8618 11.0776 15.8112 10.4337 15.7469 9.80435C15.637 8.72812 14.7677 7.85846 13.692 7.74366C13.0586 7.67608 12.4106 7.62207 11.7512 7.62207C11.0918 7.62207 10.4438 7.67608 9.81042 7.74366C8.73471 7.85846 7.86536 8.72812 7.75549 9.80435C7.69123 10.4337 7.64062 11.0776 7.64062 11.7327C7.64062 12.3878 7.69123 13.0316 7.75549 13.661Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M8.39062 20.9561V24.379H11.7506" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.2935 24.3791V20.9561H20.9336" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.3562 15.9473H20.9961" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M15.8633 24.3463V20.9863" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M24.2935 11.7325V8.30957H20.9336" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.9453 2C23.8411 2.09656 24.7286 2.20038 25.6067 2.30216C27.7559 2.55126 29.47 4.26446 29.7112 6.41461C29.8093 7.28875 29.9086 8.17203 30.0006 9.06366" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M22.9453 29.9992C23.8411 29.9026 24.7286 29.7987 25.6067 29.697C27.7559 29.4479 29.47 27.7347 29.7112 25.5846C29.8093 24.7105 29.9086 23.8271 30.0006 22.9355" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.05532 2C8.15952 2.09656 7.27217 2.20038 6.394 2.30216C4.24474 2.55126 2.53061 4.26446 2.28937 6.41461C2.1913 7.28875 2.092 8.17203 2 9.06366" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M9.05532 29.9992C8.15952 29.9026 7.27217 29.7987 6.394 29.697C4.24474 29.4479 2.53061 27.7347 2.28937 25.5846C2.1913 24.7105 2.092 23.8271 2 22.9355" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_215_5000"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

QR Code

Generate dynamic QR codes that update in real-time. Perfect for contactless menus, tickets, and more...
<svg width="100%" height="100%" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <g clip-path="url(#clip0_220_5273)"> <path d="M7.88584 13.3801C13.3319 8.76137 18.8502 8.13052 21.979 8.35954C22.8765 8.42524 23.5756 9.12436 23.6412 10.0218C23.8704 13.1507 23.2396 18.6689 18.6208 24.1151C17.8524 25.0209 16.4926 25.0451 15.7732 24.0999C14.6742 22.6557 13.501 20.564 13.501 18.4999C11.4369 18.4999 9.3452 17.3267 7.90105 16.2276C6.95575 15.5083 6.97988 14.1485 7.88584 13.3801Z" stroke="#0A363A" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M13.5723 18.4278C14.5234 16.5702 15.7899 15.3037 17.6475 14.3525" stroke="#0A363A" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> <path d="M2.4701 23.3214C2.81536 26.5486 5.41085 29.1441 8.63636 29.5036C11.0322 29.7706 13.492 30 16 30C18.508 30 20.9678 29.7706 23.3636 29.5036C26.5892 29.1441 29.1846 26.5486 29.5298 23.3214C29.7847 20.9392 30 18.4935 30 16C30 13.5065 29.7847 11.0608 29.5298 8.67849C29.1846 5.45144 26.5892 2.85593 23.3636 2.4964C20.9678 2.22936 18.508 2 16 2C13.492 2 11.0322 2.22936 8.63636 2.4964C5.41085 2.85593 2.81536 5.45144 2.4701 8.67849C2.21523 11.0608 2 13.5065 2 16C2 18.4935 2.21523 20.9392 2.4701 23.3214Z" stroke="var(--page--dark)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/> </g> <defs> <clipPath id="clip0_220_5273"> <rect width="32" height="32" fill="white"/> </clipPath> </defs> </svg>

Sharing

Turn designs into collaborative workspaces. Preview, comment, approve, and generate from one link.

Discover all features

API questions, answered

What are the API rate limits?

Two limits apply and both answer 429 — the id in the body tells you which. A global ceiling of 10 requests per second covers every endpoint (rate_limit_exceeded). Separately, several endpoint categories carry a per-minute and a per-hour budget, both enforced: write 60/min and 1,200/hour, read 120/min and 3,000/hour, validation 120/min and 2,400/hour, polling 600/min and 18,000/hour (request_rate_limited). Generation endpoints sit in no tier: they are bounded by the global 10 requests-per-second ceiling and by your credit balance, not by a per-minute budget. Every response from a budgeted endpoint carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; a 429 also carries Retry-After in seconds. A missing header means no information, not unlimited budget — and retrying into a 429 still spends your hourly budget, so one refusal becomes two.Full rate limit reference

Is rendering synchronous or asynchronous?

Single images return synchronously. Multi-format renders, MP4 video, animated GIF and multi-page print PDF run as queued background jobs: POST /async/banner-builder/{designId}/generate returns a generation_request_id, then your webhook fires when the assets are ready. Polling is the fallback — honour next_check_after_ms and concurrent jobs stay inside the limit. Both SDKs wrap this as waitForGenerationRequest and wait_for_generation_request with exponential backoff. Multi-format jobs can partially succeed: the result carries a per-format errors array alongside the finished assets, so check it rather than assuming all formats rendered. Asynchronous generation guide

How are credits deducted — per request or per asset?

Per rendered format, not per request. One design generated in six formats costs six times a single render, so a multi-format call is priced by what it produces. Static outputs cost 1 credit each; animated outputs cost 1 credit per second, so a 5-second GIF is 5 credits. Reads, listings, imports and dry runs cost nothing. AI-layer features draw a separate AI-credit balance, so a request using background removal spends both balances at once. How credits are counted

How should my application handle API errors and retries?

Branch on error.id, never on the message text. request_rate_limited means you were too fast for that endpoint's tier — wait Retry-After seconds. feature_not_in_plan means plan gating rather than a bad request, so retrying never helps. The trap worth coding for: rate_limit_exceeded means either the global 10 requests-per-second ceiling or an empty credit balance. No amount of backoff recovers from an empty balance — stop the queue, top up, then resume, because each retry also spends your hourly budget. Both SDKs auto-retry with backoff and expose max_retries and max_retry_wait if you want to control or disable it. Error reference

How do I authenticate, and how do I verify webhook deliveries?

Requests carry a single x-api-key header — no OAuth flow and no token refresh. Webhook deliveries are signed with a separate per-workspace signing secret, fetched through the API and independently rotatable or revocable. It proves the delivery came from Abyssale and grants no account access, so it cannot spend credits if leaked. Verify the signature before trusting a payload; both SDKs ship a helper for it (verifyWebhookSignature and verify_webhook_signature). Webhook signature verification

Which languages have official SDKs?

Two official clients: @abyssale/sdk on npm for Node.js and TypeScript, and abyssale on PyPI for Python. Both are generated from the OpenAPI spec, ship synchronous and asynchronous clients with identical method names and return types, and include auto-retry plus webhook signature verification. Any other language calls the REST endpoints directly. The API is versioned by release date and keeps one version live at a time, so there is only ever one pairing to track. An MCP server for LLM-driven and agent workflows is available at mcp.abyssale.com. SDK reference

Can I test the API during the free trial, and which plans include it?

Yes — the API is available during the 14-day free trial, which grants 30 generation credits and 100 AI credits for the whole trial period, with no credit card required. After the trial, API access is included on every plan, alongside the MCP server and the no-code integrations. Output formats are gated separately: animated formats such as GIF and MP4 are available on all plans, while HTML5 banner ads and print-ready CMYK PDF need Suite. Asking for a format your plan does not include returns feature_not_in_plan rather than failing silently.Compare plans

Have more specific questions?

Every enterprise has unique needs. Our team is ready to discuss your specific requirements and provide detailed answers.
Chat with Our Team

Build better with our API guides

Deep dive into visual generation at scale. Explore tutorials on template manipulation, batch processing, webhooks integration, and performance optimization.

View all resources

Template-Based Image Generation APIs: How They Work and How to Choose One

How template-based image generation APIs work, what separates them from prompt-based tools, and the criteria that matter when choosing one.
Read more

Image Generation API for Automated Creative Production (2026 Guide)

A technical blueprint of the 2026 image generation API market. Learn why logic-first template APIs are replacing static and generative models for industrial-scale production.
Read more

Why AI Agents Need an Image Generation API (Not a Canvas)

AI Agents cannot use a mouse. Discover why your autonomous stack needs a Programmatic Image Generation API to turn data into visuals instantly, without breaking brand safety.
Read more
GET IT STARTED

Ready to scale your creative?

Automate your creative workflow. Create, collaborate and automate marketing assets faster than ever before.
Sign up for free today
Free trial - no credit card