# AI Image Ad Generator

> Agent skill on puras — published by puras. An AI ad creative generator for static image ads. Give it a brief (a product link or your product photos work too) and it researches the product, pulls your real logo off your site so the brand mark stays consistent, picks a proven ad layout, writes the headline and CTA, and renders one finished ad in the placement size you choose — 4:5, 1:1, 9:16, or 16:9 for Instagram, Facebook, TikTok, or Google.

- **Skill path:** `puras/product-ad-studio/static-image-ad`
- **Skillpack:** Product Ad Studio (`product-ad-studio`)
- **Skillpack ID:** `39903015-da3d-49a2-b549-9256ef164430`
- **Deployment version:** v58
- **Human page:** https://puras.co/skills/puras/product-ad-studio/static-image-ad
- **API base:** `https://api.puras.co`

## Description

An AI ad creative generator for static image ads. Give it a brief (a product link or your product photos work too) and it researches the product, pulls your real logo off your site so the brand mark stays consistent, picks a proven ad layout, writes the headline and CTA, and renders one finished ad in the placement size you choose — 4:5, 1:1, 9:16, or 16:9 for Instagram, Facebook, TikTok, or Google.

## Try it free

AI Image Ad Generator has a free in-browser playground on its page (https://puras.co/skills/puras/product-ad-studio/static-image-ad) — load an example or bring your own inputs and run it with a Google sign-in. No credit card, no subscription; runs are usage-based after the free try.

## Input schema

```json
{
  "type": "object",
  "required": [
    "brief"
  ],
  "properties": {
    "cta": {
      "type": "string",
      "maxLength": 24,
      "description": "Button text like \"Shop Now\". Auto-picked if left empty."
    },
    "brief": {
      "type": "text",
      "maxLength": 2000,
      "description": "What you're selling, who it's for — a link works too."
    },
    "offer": {
      "type": "string",
      "maxLength": 80,
      "description": "A real promo to feature, e.g. \"30% off this week\"."
    },
    "style": {
      "enum": [
        "auto",
        "premium",
        "minimal",
        "bold",
        "warm",
        "playful",
        "clean",
        "editorial"
      ],
      "type": "string",
      "description": "Visual vibe for the ads. Auto picks the best fit."
    },
    "aspect_ratio": {
      "enum": [
        "9:16",
        "4:5",
        "1:1",
        "16:9"
      ],
      "type": "string",
      "default": "4:5",
      "description": "Which ad shape to make. Feed-friendly 4:5 by default."
    },
    "include_people": {
      "type": "boolean",
      "default": true,
      "description": "Allow lifestyle ads with people. On by default."
    },
    "product_images": {
      "type": "array",
      "items": {
        "type": "image"
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "Optional product photos, so the real product stays accurate."
    }
  }
}
```

## Output schema

```json
{
  "type": "object",
  "properties": {
    "ad": {
      "type": "image",
      "description": "The finished static image ad."
    }
  }
}
```

## Examples

### Tropical iced drink — feed ad

A short brief and one product photo. The skill researches the drink and builds one ad, with its own headline and button, in the 4:5 feed size.

Inputs:

```json
{
  "brief": "A layered tropical iced drink for hot afternoons. Fun, refreshing, summer vibe.",
  "style": "bold",
  "aspect_ratio": "4:5",
  "include_people": true,
  "product_images": [
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/product-ad-studio/tropical-product.webp"
  ]
}
```

### Luxury fragrance — Stories offer ad

A photo, a short brief, and a real offer. The skill builds one premium offer ad in the vertical Stories size.

Inputs:

```json
{
  "cta": "Shop the Gift",
  "brief": "A refined fragrance in a sculptural glass bottle with a leather-textured cap — warm, timeless, luxury. Audience is gift-buyers. Land the gifting angle.",
  "offer": "Free engraving this week",
  "style": "premium",
  "aspect_ratio": "9:16",
  "include_people": false,
  "product_images": [
    "https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/product-ad-studio/fragrance-product.jpg"
  ]
}
```

### Brief only — no product photo

Just a brief, no photo. The skill imagines the product from your description and renders one ad in the feed size — handy when you don't have a packshot yet.

Inputs:

```json
{
  "brief": "A reusable insulated water bottle in matte sage green, keeps drinks cold 24 hours. For everyday commuters and gym-goers. Clean, minimal look.",
  "style": "minimal",
  "aspect_ratio": "4:5"
}
```

## Use this skill

puras runs this skill on its own backend — you send inputs and get the result back. Three ways to call, fastest first:

### 1. MCP server — recommended for coding agents, no API key

Connect the puras MCP server; auth is OAuth in the browser on first call, so there is nothing to paste.

```bash
claude mcp add --transport http puras https://mcp.puras.co/mcp
```

Any MCP client works — point it at `https://mcp.puras.co/mcp` (HTTP transport). Then ask the agent to run `static-image-ad` from skillpack `puras/product-ad-studio` with your inputs.

### 2. CLI / Python SDK — `pip install puras`

```bash
pip install puras
puras login            # or set PURAS_API_KEY
puras run puras/product-ad-studio/static-image-ad -i key=value
```

From Python:

```python
import puras

client = puras.Client()   # PURAS_API_KEY from env
result = client.run("puras/product-ad-studio/static-image-ad", {"brief":"A layered tropical iced drink for hot afternoons. Fun, refreshing, summer vibe.","style":"bold","aspect_ratio":"4:5","include_people":true,"product_images":["https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/product-ad-studio/tropical-product.webp"]})
```

### 3. HTTP API

`wait=true` blocks until the run reaches a terminal status and returns the result inline.

```bash
curl -X POST "https://api.puras.co/v1/jobs?skillpack=puras/product-ad-studio&wait=true" \
  -H "Authorization: Bearer $PURAS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"skill":"static-image-ad","inputs":{"brief":"A layered tropical iced drink for hot afternoons. Fun, refreshing, summer vibe.","style":"bold","aspect_ratio":"4:5","include_people":true,"product_images":["https://uozfqcfhlhugotnevscg.supabase.co/storage/v1/object/public/puras-public-skills/product-ad-studio/tropical-product.webp"]}}'
```

Mint an API key (for CLI / SDK / API) from https://puras.co/api-keys.

## Pricing

Runs are billed usage-based from your workspace credit balance — the cost of a job is the sum of the model token (and any media) usage it incurs. There is no per-call platform fee. The playground and the job result report the exact cost of each run.

- Pricing page: https://puras.co/pricing
- Machine-readable model price registry: `https://api.puras.co/v1/pricing`
