# Bannerbear

> Make images and videos from your Bannerbear templates, combine files into PDFs, remove backgrounds, generate AI images and run Bannerbear workflows.

App · 20 actions. Web page: https://docs.lodol.com/docs/integrations/bannerbear

## Actions

### Add template from library

Copy a ready-made template from Bannerbear's library into your workspace, ready to use with 'Create image' or 'Create animation'. Trial workspaces hold up to 3 of each kind.

**Inputs**

- Library template ID (`library_template`, text, required): The template's id, from 'Search template library'.

**Outputs**

- `kind` (text): What was added: image, animation or workflow
- `template` (object): The new template in your workspace (an animation template also has a frame rate and duration)

**Example output**

```json
{
  "kind": "image",
  "template": {
    "created_at": "2026-10-19T09:00:00.000Z",
    "description": null,
    "height": 500,
    "layers": [
      {
        "id": "_e8219o",
        "name": "title",
        "type": "text"
      },
      {
        "id": "_815ykc",
        "name": "background",
        "type": "image"
      }
    ],
    "name": "Twitter header",
    "preview": "https://images.bannerbear.com/v5/templates/1aA2ozpQJrr5q4DmrE/preview/p.jpg",
    "tags": [
      "social"
    ],
    "uid": "1aA2ozpQJrr5q4DmrE",
    "width": 1500
  }
}
```

### Animate template with a preset

Give an animation template's layers a ready-made movement, such as fading or zooming in, one after another if you like. Free; Bannerbear keeps the previous version.

**Inputs**

- Template (`template`, text, required): The animation template. Pick one, or give its id from an earlier step.
- Preset (`preset`, text, required): The movement to give each layer. One of: `FadeIn` (Fade in), `FadeOut` (Fade out), `ZoomIn` (Zoom in), `ZoomOut` (Zoom out), `GetBigger` (Get bigger), `GetSmaller` (Get smaller), `ScaleIn` (Scale in), `ScaleOut` (Scale out), `PopIn` (Pop in (text layers only)), `PopOut` (Pop out (text layers only)).
- Layers (`layers`, list): The layers to animate, in the order they should start. Leave empty for every layer.
- Length (ms) (`duration`, number): How long each layer's movement takes, in milliseconds. Defaults to 400. From 1 to 60000.
- Delay between layers (ms) (`stagger`, number): Milliseconds between one layer starting and the next. Defaults to 0, all at once. From 0 to 60000.
- Keep other layers' animation (`keep_other_animations`, true/false): Yes: only the chosen layers change. No (default): the template's whole timeline is replaced.

**Outputs**

- `template` (object): The template with its new timeline

**Example output**

```json
{
  "template": {
    "created_at": "2026-10-19T09:00:00.000Z",
    "description": null,
    "duration_seconds": 0.4,
    "frame_rate": 30,
    "height": 1080,
    "layers": [
      {
        "id": "figma-8",
        "name": "title",
        "type": "text"
      }
    ],
    "name": "Title card",
    "preview": null,
    "tags": [],
    "uid": "wLE15Aaj6QaB8MrQxY",
    "width": 1920
  }
}
```

### Combine into PDF

Put JPG, PNG and PDF files together into one PDF, a page each, in the order given. Returns the PDF's URL. Uses 1 credit.

**Inputs**

- Files (`urls`, list, required): The URLs of the JPG, PNG or PDF files, in page order.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `job` (object): The finished tool run
- `url` (text): The finished file's address

**Example output**

```json
{
  "job": {
    "completed_at": "2026-10-19T09:00:03.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "inputs": {},
    "metadata": null,
    "outputs": {
      "pdf_url": "https://media.bannerbear.com/v5/tools/create_pdf/out.pdf"
    },
    "progress": 100,
    "status": "completed",
    "tool": "create_pdf",
    "uid": "Mny5GzpG06kODjJegk"
  },
  "url": "https://media.bannerbear.com/v5/tools/create_pdf/out.pdf"
}
```

### Create animation

Make a video from an animation template, with your text and pictures in its layers. Waits for it to finish (usually under a minute) and returns the MP4's URL. Uses 2 credits per second.

**Inputs**

- Template (`template`, text, required): The animation template. Pick one, or give its id from an earlier step.
- Layer values (`layer_values`, object): What to put in each layer: text for a text layer, an image URL for an image layer. Leave a layer empty to keep the template's own.
- Other layer changes (`layer_changes`, list): Anything else to change on a layer, in Bannerbear's format: a list of objects naming the layer, like [{"name": "title", "color": "#FF0000"}] or [{"name": "badge", "hidden": true}].
- Frame rate (`frame_rate`, text): Defaults to the template's own, usually 30 fps. One of: `24` (24 fps), `30` (30 fps), `60` (60 fps (uses twice the credits)).
- Transparent background (`transparent`, true/false): Leave out the background. The video is then a MOV file.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `animation` (object): The animation
- `url` (text): The finished file's address

**Example output**

```json
{
  "animation": {
    "completed_at": "2026-10-19T09:00:11.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "files": {
      "mp4": "https://videos.bannerbear.com/v5/animations/l04J5q8jaz8VrQ1LMd/final/video.mp4"
    },
    "metadata": null,
    "progress": 100,
    "status": "completed",
    "template": "wLE15Aaj6QaB8MrQxY",
    "uid": "l04J5q8jaz8VrQ1LMd"
  },
  "url": "https://videos.bannerbear.com/v5/animations/l04J5q8jaz8VrQ1LMd/final/video.mp4"
}
```

### Create image

Make an image from a template, with your text and pictures in its layers. Waits for it to finish and returns the file's URL. Uses 1 credit per file type and size step.

**Inputs**

- Template (`template`, text, required): The image template. Pick one, or give its id from an earlier step.
- Layer values (`layer_values`, object): What to put in each layer: text for a text layer, an image URL for an image layer. Leave a layer empty to keep the template's own.
- Other layer changes (`layer_changes`, list): Anything else to change on a layer, in Bannerbear's format: a list of objects naming the layer, like [{"name": "title", "color": "#FF0000"}] or [{"name": "badge", "hidden": true}].
- File types (`formats`, list): The files to make. Defaults to JPG. Each extra type uses another credit. One or more of: `jpg`, `png`, `webp`, `avif`, `pdf`.
- Size (`scale`, text): Render larger than the template, for sharper images. Each step up multiplies the credits used. One of: `1` (1x, the template's size (default)), `2` (2x), `3` (3x), `4` (4x).
- Transparent background (`transparent`, true/false): Leave out the template's background. Use with PNG or WebP.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `image` (object): The image
- `url` (text): The finished file's address

**Example output**

```json
{
  "image": {
    "completed_at": "2026-10-19T09:00:01.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "files": {
      "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
    },
    "metadata": null,
    "status": "completed",
    "template": "1aA2ozpQJrr5q4DmrE",
    "uid": "ARNZvkVzbnWVwYrMoD"
  },
  "url": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
}
```

### Delete animation template

Delete an animation template from the workspace. Videos already made from it are kept.

**Inputs**

- Template (`template`, text, required): The animation template. Pick one, or give its id from an earlier step.

**Outputs**

- `deleted` (true/false): Always true once deleted
- `template_id` (text): The template deleted

**Example output**

```json
{
  "deleted": true,
  "template_id": "wLE15Aaj6QaB8MrQxY"
}
```

### Delete image template

Delete an image template from the workspace. Images already made from it are kept.

**Inputs**

- Template (`template`, text, required): The image template. Pick one, or give its id from an earlier step.

**Outputs**

- `deleted` (true/false): Always true once deleted
- `template_id` (text): The template deleted

**Example output**

```json
{
  "deleted": true,
  "template_id": "1aA2ozpQJrr5q4DmrE"
}
```

### Generate AI image

Make an image from a written description with an AI model. Returns the image's URL. Uses AI credits, fewest with Flux Schnell.

**Inputs**

- Description (`prompt`, text, required): What to make: the subject, style and composition, up to 2,000 characters.
- Model (`model`, text): The AI model. Defaults to Flux Schnell. One of: `flux_schnell` (Flux Schnell: fastest, fewest credits (default)), `flux_1_1_pro` (Flux 1.1 Pro), `nano_banana` (Nano Banana), `gpt_image_2` (GPT Image 2).
- Shape (`aspect_ratio`, text): The image's shape. Defaults to square. One of: `1:1` (Square, 1:1 (default)), `16:9` (Landscape, 16:9), `4:3` (Landscape, 4:3), `9:16` (Portrait, 9:16), `3:4` (Portrait, 3:4).
- Starting image URL (`reference_image_url`, text): An image to start from. Only some models use one.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `job` (object): The finished tool run
- `url` (text): The finished file's address

**Example output**

```json
{
  "job": {
    "completed_at": "2026-10-19T09:00:03.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "inputs": {},
    "metadata": null,
    "outputs": {
      "image_url": "https://media.bannerbear.com/v5/tools/generate_ai_image/out.jpg"
    },
    "progress": 100,
    "status": "completed",
    "tool": "generate_ai_image",
    "uid": "Mny5GzpG06kODjJegk"
  },
  "url": "https://media.bannerbear.com/v5/tools/generate_ai_image/out.jpg"
}
```

### Get account

Get the connected Bannerbear workspace: its plan, and how many credits and AI credits it has used and has left this month.

**Inputs**: None.

**Outputs**

- `account` (object): The workspace and its credits
- `ai_credits_left` (number): AI credits left
- `credits_left` (number): Credits left

**Example output**

```json
{
  "account": {
    "ai_quota": {
      "current": 1.2,
      "max": 200,
      "remaining": 198.8
    },
    "api_key": {
      "name": "Default",
      "scopes": []
    },
    "created_at": "2026-10-01T09:00:00.000Z",
    "plan": "Bannerbear Automate",
    "quota": {
      "current": 12,
      "max": 1000,
      "remaining": 988
    },
    "uid": "lqRBnyOPnVJPMAGj3e",
    "workspace": "Default Workspace"
  },
  "ai_credits_left": 198.8,
  "credits_left": 988
}
```

### Get animation

Get one animation with its progress and video URL.

**Inputs**

- Animation ID (`animation_id`, text, required): The animation's id, from 'Create animation'.

**Outputs**

- `animation` (object): The animation
- `url` (text): The finished file's address

**Example output**

```json
{
  "animation": {
    "completed_at": "2026-10-19T09:00:11.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "files": {
      "mp4": "https://videos.bannerbear.com/v5/animations/l04J5q8jaz8VrQ1LMd/final/video.mp4"
    },
    "metadata": null,
    "progress": 100,
    "status": "completed",
    "template": "wLE15Aaj6QaB8MrQxY",
    "uid": "l04J5q8jaz8VrQ1LMd"
  },
  "url": "https://videos.bannerbear.com/v5/animations/l04J5q8jaz8VrQ1LMd/final/video.mp4"
}
```

### Get image

Get one image with its status and file URLs.

**Inputs**

- Image ID (`image_id`, text, required): The image's id, from 'Create image' or 'List images'.

**Outputs**

- `image` (object): The image
- `url` (text): The finished file's address

**Example output**

```json
{
  "image": {
    "completed_at": "2026-10-19T09:00:01.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "files": {
      "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
    },
    "metadata": null,
    "status": "completed",
    "template": "1aA2ozpQJrr5q4DmrE",
    "uid": "ARNZvkVzbnWVwYrMoD"
  },
  "url": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
}
```

### Get image template

Get one image template: its name, size, preview and the name and type of each layer you can fill in.

**Inputs**

- Template (`template`, text, required): The image template. Pick one, or give its id from an earlier step.

**Outputs**

- `template` (object): The image template

**Example output**

```json
{
  "template": {
    "created_at": "2026-10-19T09:00:00.000Z",
    "description": null,
    "height": 500,
    "layers": [
      {
        "id": "_e8219o",
        "name": "title",
        "type": "text"
      },
      {
        "id": "_815ykc",
        "name": "background",
        "type": "image"
      }
    ],
    "name": "Twitter header",
    "preview": "https://images.bannerbear.com/v5/templates/1aA2ozpQJrr5q4DmrE/preview/p.jpg",
    "tags": [
      "social"
    ],
    "uid": "1aA2ozpQJrr5q4DmrE",
    "width": 1500
  }
}
```

### Get workflow run

Get one workflow run: its status, progress, each step's result, and any error.

**Inputs**

- Run ID (`run_id`, text, required): The run's id, from 'Run workflow'.

**Outputs**

- `outputs` (object): Each step's results by step name, such as its file URLs
- `run` (object): The workflow run

**Example output**

```json
{
  "outputs": {
    "header": {
      "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
    }
  },
  "run": {
    "completed_at": "2026-10-19T09:00:02.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "inputs": {
      "title": "Hello"
    },
    "metadata": null,
    "outputs": {
      "header": {
        "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
      }
    },
    "progress": 100,
    "status": "completed",
    "steps": [
      {
        "key": "header",
        "output": {
          "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
        },
        "status": "completed",
        "type": "image"
      }
    ],
    "uid": "np20mj8ANrqA6Y5OX9",
    "workflow": "l6V2EKOavky1NWvzy7"
  }
}
```

### List animation templates

List the workspace's animation templates with their length, size and layers. Returns 25 at a time.

**Inputs**

- Page (`page`, number): Which page of 25 to get, newest first. Defaults to the first. At least 1.

**Outputs**

- `count` (number): How many on this page
- `next_page` (number): The next page's number, or empty on the last page
- `page` (number): This page's number
- `templates` (list): The animation templates

**Example output**

```json
{
  "count": 1,
  "next_page": null,
  "page": 1,
  "templates": [
    {
      "created_at": "2026-10-19T09:00:00.000Z",
      "description": null,
      "duration_seconds": 6.0,
      "frame_rate": 30,
      "height": 1080,
      "layers": [
        {
          "id": "figma-8",
          "name": "title",
          "type": "text"
        }
      ],
      "name": "Title card",
      "preview": null,
      "tags": [],
      "uid": "wLE15Aaj6QaB8MrQxY",
      "width": 1920
    }
  ]
}
```

### List image templates

List the workspace's image templates with their sizes, previews and layers. Returns 25 at a time.

**Inputs**

- Page (`page`, number): Which page of 25 to get, newest first. Defaults to the first. At least 1.

**Outputs**

- `count` (number): How many on this page
- `next_page` (number): The next page's number, or empty on the last page
- `page` (number): This page's number
- `templates` (list): The image templates

**Example output**

```json
{
  "count": 1,
  "next_page": null,
  "page": 1,
  "templates": [
    {
      "created_at": "2026-10-19T09:00:00.000Z",
      "description": null,
      "height": 500,
      "layers": [
        {
          "id": "_e8219o",
          "name": "title",
          "type": "text"
        },
        {
          "id": "_815ykc",
          "name": "background",
          "type": "image"
        }
      ],
      "name": "Twitter header",
      "preview": "https://images.bannerbear.com/v5/templates/1aA2ozpQJrr5q4DmrE/preview/p.jpg",
      "tags": [
        "social"
      ],
      "uid": "1aA2ozpQJrr5q4DmrE",
      "width": 1500
    }
  ]
}
```

### List images

List the workspace's images, newest first, with their status and file URLs. Returns 25 at a time.

**Inputs**

- Page (`page`, number): Which page of 25 to get, newest first. Defaults to the first. At least 1.

**Outputs**

- `count` (number): How many on this page
- `images` (list): The images
- `next_page` (number): The next page's number, or empty on the last page
- `page` (number): This page's number

**Example output**

```json
{
  "count": 1,
  "images": [
    {
      "completed_at": "2026-10-19T09:00:01.000Z",
      "created_at": "2026-10-19T09:00:00.000Z",
      "files": {
        "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
      },
      "metadata": null,
      "status": "completed",
      "template": "1aA2ozpQJrr5q4DmrE",
      "uid": "ARNZvkVzbnWVwYrMoD",
      "url": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
    }
  ],
  "next_page": null,
  "page": 1
}
```

### Remove background

Cut the subject of a photo out onto a transparent background. Returns the PNG's URL. Uses 2 credits and 1 AI credit.

**Inputs**

- Image URL (`image_url`, text, required): The URL of a JPG or PNG photo.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `job` (object): The finished tool run
- `url` (text): The finished file's address

**Example output**

```json
{
  "job": {
    "completed_at": "2026-10-19T09:00:03.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "inputs": {},
    "metadata": null,
    "outputs": {
      "image_url": "https://media.bannerbear.com/v5/ai/remove_background/out.png"
    },
    "progress": 100,
    "status": "completed",
    "tool": "remove_bg",
    "uid": "Mny5GzpG06kODjJegk"
  },
  "url": "https://media.bannerbear.com/v5/ai/remove_background/out.png"
}
```

### Rename or tag image template

Change an image template's name, description or tags. Only the fields given change; new tags replace the old ones.

**Inputs**

- Template (`template`, text, required): The image template. Pick one, or give its id from an earlier step.
- Name (`name`, text): A new name. Leave empty to keep it.
- Description (`description`, text): A new description. Leave empty to keep it.
- Tags (`tags`, list): Tags to set, replacing the current ones. Leave empty to keep them.

**Outputs**

- `template` (object): The updated template

**Example output**

```json
{
  "template": {
    "created_at": "2026-10-19T09:00:00.000Z",
    "description": null,
    "height": 500,
    "layers": [
      {
        "id": "_e8219o",
        "name": "title",
        "type": "text"
      },
      {
        "id": "_815ykc",
        "name": "background",
        "type": "image"
      }
    ],
    "name": "Twitter header (spring)",
    "preview": "https://images.bannerbear.com/v5/templates/1aA2ozpQJrr5q4DmrE/preview/p.jpg",
    "tags": [
      "social",
      "spring"
    ],
    "uid": "1aA2ozpQJrr5q4DmrE",
    "width": 1500
  }
}
```

### Run workflow

Start one of your Bannerbear workflows with its inputs, wait for it to finish, and return each step's results. Uses the credits its steps use.

**Inputs**

- Workflow (`workflow`, text, required): The Bannerbear workflow. Pick one, or give its id from an earlier step.
- Inputs (`inputs`, object): A value for each of the workflow's inputs.
- Wait for it to finish (`wait`, true/false): Yes (default): the step returns the results, waiting up to 10 minutes. No: it returns as soon as the run starts. Default: `true`.
- Metadata (`metadata`, text): Your own note to keep with the result, such as an order number.

**Outputs**

- `outputs` (object): Each step's results by step name, such as its file URLs
- `run` (object): The workflow run

**Example output**

```json
{
  "outputs": {
    "header": {
      "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
    }
  },
  "run": {
    "completed_at": "2026-10-19T09:00:02.000Z",
    "created_at": "2026-10-19T09:00:00.000Z",
    "inputs": {
      "title": "Hello"
    },
    "metadata": null,
    "outputs": {
      "header": {
        "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
      }
    },
    "progress": 100,
    "status": "completed",
    "steps": [
      {
        "key": "header",
        "output": {
          "jpg": "https://images.bannerbear.com/V5/lqRBnyOPnVJPMAGj3e/ARNZvkVzbnWVwYrMoD/image.jpg"
        },
        "status": "completed",
        "type": "image"
      }
    ],
    "uid": "np20mj8ANrqA6Y5OX9",
    "workflow": "l6V2EKOavky1NWvzy7"
  }
}
```

### Search template library

Search Bannerbear's library of ready-made templates by name, kind and category. Add one to your workspace with 'Add template from library'.

**Inputs**

- Search (`search`, text): Words in the template's name, like Instagram story.
- Kind (`template_type`, text): Image or animation templates. Leave empty for both. One of: `image` (Image templates), `animation` (Animation templates).
- Category (`category`, text): Only templates in this category. One of: `announcements & news`, `beauty & fashion`, `business & finance`, `education & coaching`, `employee highlights`, `events & weddings`, `film & movies`, `food & drinks`, `gaming & e-sports`, `home & real estate`, and 8 more.
- Page (`page`, number): Which page of 25 to get, newest first. Defaults to the first. At least 1.

**Outputs**

- `count` (number): How many on this page
- `next_page` (number): The next page's number, or empty on the last page
- `page` (number): This page's number
- `templates` (list): The library templates

**Example output**

```json
{
  "count": 1,
  "next_page": null,
  "page": 1,
  "templates": [
    {
      "categories": [
        "social media"
      ],
      "description": "A modern header for tech brands.",
      "height": 500,
      "install_count": 12,
      "name": "Violet Modern Tech Twitter / X Header",
      "preview": "https://mojopreview.s3.amazonaws.com/V5/p.jpg",
      "published_at": "2026-10-07T07:11:08.474Z",
      "tags": [
        "social media"
      ],
      "template_kind": "image",
      "uid": "RQVO8Wz9nKd5GdYxel",
      "width": 1500
    }
  ]
}
```
