# Skill: Promo / offer

A selling clip: the offer stated in the first three seconds, product shots generated to order, icon
badges for what is included, a price card, music, and a CTA that stays long enough to read.

**Price:** 290–360 credits per finished minute · 30 seconds ≈ 220–285 credits
**Uses:** `/v1/ai/image` · `/v1/stock/icon` · `/v1/ai/music` · `/v1/studio/remove-silence` · `/v1/studio/edit`

Base URL: `https://apihub.co.il` · Auth: `Authorization: Bearer <key>` · Docs: `/docs`
Tag every call with the same `X-Tag: <job>` and read the bill from `GET /v1/usage?tag=<job>`.

**Model quality.** Every AI endpoint takes `quality`: `fast` · `balanced` (default) · `best`. Stay on
`balanced` unless the customer asked for the best — `best` on video is 4× the price.

---

## 1. Collect the facts first

Before any call, have: what is sold, the offer, the price, three benefits, the call to action, and the brand
colour. Never invent a price or a claim — if the customer did not give it, leave it out.

## 2. Cut and transcribe

`POST /v1/studio/remove-silence` (`min_pause_ms: 350`, `padding_ms: 70`), then transcribe the cut.
If there is no speaker at all, skip to step 4 and drive the video with `texts` and `panels` only.

## 3. Generate the parts

```jsonc
POST /v1/ai/image { "prompt": "<product> on a clean studio backdrop, soft light, 9:16, no text", "aspect_ratio": "9:16", "resolution": "1K" }
POST /v1/stock/icon { "icon": "mdi:truck-fast", "color": "#111111", "size": 512, "background": "<brand colour>" }
POST /v1/ai/music { "prompt": "upbeat commercial bed, no vocals", "duration": <len+2>, "instrumental": true }
```

Two or three product images is plenty. Icons are free — use them for the benefit badges instead of
generating pictures of abstract benefits.

## 4. Render

```jsonc
POST /v1/studio/edit
{
  "video_url": "<cut url>", "transcript_id": "<id>",
  "captions": { "style": { "preset": "hormozi", "size": 6.8, "active_background": "<brand colour>",
    "active_color": "#111111", "max_words": 4, "max_lines": 1, "position": "bottom", "margin": 17, "side_margin": 7 } },
  "hook": { "text": "<the offer, 5–7 words>", "duration": 3.4,
    "style": { "preset": "yellow", "font": "Rubik", "weight": 900, "size": 6.6, "margin": 10, "rotate": -2 } },
  "overlays": [
    { "url": "<product image>", "type": "image", "start": 5.0, "duration": 2.8, "mode": "split",
      "split_side": "top", "split_ratio": 0.55, "speaker_focus": 0.3, "fade_ms": 180 },
    { "url": "<icon png>", "type": "image", "start": 9.0, "duration": 2.0, "mode": "pip",
      "size": 24, "x": 78, "y": 24, "rotate": -5, "float": 1.2, "shadow": true, "fade_ms": 150 }
  ],
  "texts": [
    { "text": "משלוח חינם", "start": 9.0, "duration": 2.0, "preset": "pill", "style": { "y": 33, "x": 42 } },
    { "text": "₪299 בלבד", "start": 14.0, "duration": 2.2, "preset": "mega", "style": { "y": 44 } },
    { "text": "הזמינו עכשיו", "start": 26.0, "duration": 2.6, "preset": "hero", "style": { "y": 40 } }
  ],
  "panels": [ { "start": 13.9, "duration": 2.4, "color": "#050505", "opacity": 0.9, "fade_ms": 100 },
              { "start": 25.9, "duration": 2.8, "color": "#050505", "opacity": 0.95, "fade_ms": 120 } ],
  "music": { "url": "<music>", "volume": 0.3, "duck": false, "fade_out_ms": 1800 },
  "watermark": { "url": "<logo>", "position": "top-left", "size": 10, "opacity": 0.9, "margin": 4 },
  "audio": { "normalize": true },
  "output": { "aspect_ratio": "9:16", "resolution": "1080", "fit": "crop", "quality": "high" }
}
```

The CTA card must stay at least 0.7 s after the last word — people screenshot it. Keep the price on screen
2 s or more; a number that flashes reads as a trick.

## Spending less on the same video

- A generated **image** is ≈ 29 credits; a generated **4-second clip** is ≈ 120 (Fast) or ≈ 480 (Veo 3.1).
  A **Gemini Omni** clip (`model: "gemini-omni-1.1-flash"`: speech and sound made with the picture, readable
  text in the frame) runs 3–10 s, usually 10: ≈ 310 credits at 720p, ≈ 460 at 1080p — take it only when the shot
  must talk or show text.
  Two images and a zoom often read better than one clip that hides the speaker.
- A free photograph from `/v1/stock/search` costs nothing — use it for anything that exists in the real
  world (places, objects, documents) and generate only what does not exist.
- Music is ≈ 1.3 credits per second. One track reused across a series is the single easiest saving.
- Render `quality: "standard"` instead of `"high"` while you iterate; switch to `"high"` for the final.

**How to read the price.** Renders are billed per second of output, so cutting and captioning scale with
length. Everything that is *generated* — an image, a clip, a music track — is billed per asset, no matter how
long the video is. That is why half a minute is not half the price: a 30-second video with the same four
images and one music track costs nearly what a 60-second one costs. Real numbers, not estimates, come from
`GET /v1/usage?tag=<your tag>` after the job.
