Fattly AI Images API
The Images API from Fattly AI — 3 operation(s) for images.
The Images API from Fattly AI — 3 operation(s) for images.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/fattly-app:fattly-app-images-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Fattly Images API
version: 1.0.0
summary: UGC video ads, AI images, video and voiceovers from 40+ models.
description: 'REST API of fattly.app — the same engine as the web app, the CLI (`npm i -g fattly`) and the MCP server (`https://fattly.app/api/mcp`).
**Auth:** create a key at fattly.app → Dashboard → API keys and send `Authorization: Bearer gpx_live_...`.
**Billing:** every generation spends credits from the key owner''s account (GET /api/models lists prices). Failed generations are refunded automatically. Keys can have a daily spend limit.
**Async jobs:** video, video ads and other long jobs return an `id` — poll GET /api/video/status?id=... every 5-10 s until `completed` or `failed`.
**Inputs:** image inputs must be URLs returned by POST /api/upload.
**Content policy:** safe-for-work only, adults only, use only faces and voices you have the right to use.
**Ad presets and creator avatars:** preset ids (templateId) and avatars are listed by the MCP tools fattly_list_ad_presets and fattly_create_avatar (MCP server: https://fattly.app/api/mcp).'
contact:
name: Fattly
url: https://fattly.app
email: contact@fattly.app
termsOfService: https://fattly.app/regulamin
servers:
- url: https://fattly.app
security:
- bearerAuth: []
tags:
- name: Images
paths:
/api/generate:
post:
tags:
- Images
operationId: generateImage
summary: Generate or edit images
description: Text-to-image, or image editing when `inputImageUrls` is set (multi-image edit models).
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
prompt:
type: string
description: Description of the image to generate.
modelId:
type: string
description: 'Model id (default nano-banana-2). List: GET /api/models.'
aspectRatio:
type: string
description: Aspect ratio, e.g. 1:1, 16:9, 9:16 (default 1:1).
numImages:
type: integer
minimum: 1
maximum: 4
description: Number of images 1–4 (default 1).
inputImageUrls:
type: array
items:
type: string
maxItems: 4
description: 'Optional MULTIPLE input images (fal URLs) for multi-image edit models like nano-banana-2-edit / nano-banana-pro-edit. Typical swap use: image #1 = the scene/frame to keep (background, framing, lighting), image #2 = the subject/face to place into that scene. Get each URL from POST /api/upload.'
required:
- prompt
additionalProperties: false
responses:
'200':
description: Finished images
content:
application/json:
schema:
type: object
properties:
id:
type: string
imageUrls:
type: array
items:
type: string
format: uri
required:
- imageUrls
'400':
description: Invalid input or blocked content
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing, invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'402':
description: Not enough credits
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit or daily key spend limit reached
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/upscale:
post:
tags:
- Images
operationId: upscaleImage
summary: Upscale an image
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
imageUrl:
type: string
description: Image to upscale — a fal URL from POST /api/upload.
factor:
type: integer
minimum: 2
maximum: 4
description: Scale factor 2–4 (default 2).
required:
- imageUrl
additionalProperties: false
responses:
'200':
description: Upscaled image
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
description: Link to the finished file (signed, valid about 1 hour — download it or fetch a fresh link).
required:
- url
'400':
description: Invalid input or blocked content
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing, invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'402':
description: Not enough credits
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit or daily key spend limit reached
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/remove-bg:
post:
tags:
- Images
operationId: removeBackground
summary: Remove the background
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
imageUrl:
type: string
description: Image to cut out — a fal URL from POST /api/upload.
required:
- imageUrl
additionalProperties: false
responses:
'200':
description: Cutout
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
description: Link to the finished file (signed, valid about 1 hour — download it or fetch a fresh link).
required:
- url
'400':
description: Invalid input or blocked content
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Missing, invalid or revoked API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'402':
description: Not enough credits
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: Rate limit or daily key spend limit reached
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
properties:
error:
type: string
required:
- error
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key gpx_live_... from fattly.app → Dashboard → API keys.
externalDocs:
description: MCP / Claude setup
url: https://fattly.app/claude-mcp