# Skill: effect/icon-morph — "אייקון שמשתנה" (Icon morph)

One line icon flows into the next — chart into timeline into chat — on a tile or on its own.
אייקון קו אחד זורם לתוך הבא — גרף לציר זמן לבועת צ׳אט — על אריח או לבד.

Category: Overlays & graphics · שכבות וגרפיקה · a real preview: https://media.gpt.org.il/lookbook/effects/icon-morph.mp4?v=mv19exzc
Price: **60 credits per finished minute**: the render itself — 1 credit per second of 1080p output. Combined with captions, a hook or other effects: still one render, nothing more for combining.

Base URL: `https://apihub.co.il` · Auth: `Authorization: Bearer <API key>` · Docs: `/docs` (group "Video Effects")
Send `X-Tag: <job name>` on every call of one video; `GET /v1/usage?tag=<job name>` returns what it cost.
**Files are kept 24 hours** — download the finished video.

---

## 1. On its own — one call

```jsonc
POST /v1/effects/icon-morph             // x-wait-ms: 110000
{
  "video_url": "https://media.gpt.org.il/samples/sample-he.mp4",
  "start": 0.2,
  "duration": 3.7,
  "params": {
    "backdrop": "panel",
    "tile": true
  }
}
```

A normal render: `status: processing` → poll `GET /v1/executions/{id}` until `completed`, then read `output.url`.

When it plays: a stretch: `start` + `duration` (seconds of the finished video), or `at` (a word id) + `duration`, or `during` { from, to } (word ids).

## 2. With captions, a hook and other effects — the same render

```jsonc
POST /v1/studio/edit               // x-wait-ms: 110000
{
  "video_url": "<the video>",
  "language_code": "he",
  "captions": {
    "style": "classic"
  },
  "effects": [
    {
      "id": "icon-morph",
      "params": {
        "backdrop": "panel",
        "tile": true
      },
      "start": 0.2,
      "duration": 3.7
    }
  ],
  "audio": {
    "normalize": true
  },
  "output": {
    "aspect_ratio": "9:16",
    "resolution": "1080",
    "fit": "crop",
    "quality": "high"
  }
}
```

`effects` is a list: add more entries for more effects. The engine applies them by pipeline stage (cuts and time →
camera → grade and looks → overlays → text and captions → sound), never by their order in the list. An edit has one
`transition`, one `color` grade, one `music` bed, one `speed` and one caption style: two effects that set the same
one are refused with a message that names them.

## 3. Params

| param | default | range / options | what it does |
|---|---|---|---|
| `icons` | `["chart","timeline","chat","gear"]` | list | The icons, in order (chat, play, chart, sparkle, gear, laptop, check, user, bolt, heart, star, globe, camera, mic, cart, rocket, lock, mail, calendar, bulb, target, timeline, video, phone, clock, scissors, wand, code, folder, image, music, search, money, bell, eye) |
| `mode` | `"cross-scale"` | `cross-scale` · `morph` | cross-scale = the old one shrinks away as the new one grows from the same centre · morph = every line flows into the next |
| `ms` | `260` | 60–1500 | How long each change takes, ms |
| `enter` | `"draw"` | `draw` · `pop` | How the first icon arrives |
| `x` | `50` | 0–100 | Centre, % from the left |
| `y` | `24` | 0–100 | Centre, % from the top |
| `size` | `30` | 5–80 | Size, % of the frame width |
| `tile` | `false` | boolean | On a rounded tile |
| `tile_color` | `"#0D203C"` | string | The tile |
| `stroke_color` | `"#8DC4D9"` | string | The line colour |
| `stroke` | `1.6` | 0.5–4 | Line weight in the icon's 24-unit grid (2 = a standard outline icon) |
| `glow` | `6` | 0–20 | A soft glow round the lines, px at 1080 wide (0 = none) |
| `backdrop` | `"none"` | `none` · `panel` · `full` | A dark motion-graphics plate behind the icons: a panel across the top, the whole frame, or none (over the video) |
| `backdrop_height` | `48` | 20–100 | panel: its height, % of the frame |

GET `/v1/effects/icon-morph` returns the same as JSON (with the full body schema). Every field has a default; numbers
outside their range are refused with the field's name.
