# Skill: effect/connector-line — "קו מחבר" (Connector line)

A spark appears and an arc draws from one icon to the next, which pops as the line arrives.
ניצוץ מופיע וקשת מציירת את עצמה מאייקון אחד לבא אחריו, שקופץ כשהקו מגיע.

Category: Overlays & graphics · שכבות וגרפיקה · a real preview: https://media.gpt.org.il/lookbook/effects/connector-line.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/connector-line             // x-wait-ms: 110000
{
  "video_url": "https://media.gpt.org.il/samples/sample-he.mp4",
  "start": 0.4,
  "duration": 3.2,
  "params": {
    "backdrop": "panel",
    "ms": 520
  }
}
```

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": "connector-line",
      "params": {
        "backdrop": "panel",
        "ms": 520
      },
      "start": 0.4,
      "duration": 3.2
    }
  ],
  "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 |
|---|---|---|---|
| `from` | `{"x":76,"y":20}` | object | Where the line starts |
| `to` | `{"x":30,"y":26}` | object | Where it ends |
| `bend` | `0.25` | -1–1 | How much it arcs (0 = straight) |
| `ms` | `340` | 80–3000 | How long it takes to draw, ms |
| `dot` | `true` | boolean | A spark riding the line's end |
| `color` | `"#8DC4D9"` | string | The line colour |
| `width` | `0.7` | 0.2–3 | Line width, % of the frame width |
| `glow` | `6` | 0–20 | A soft glow round the line, px at 1080 wide |
| `from_icon` | `"chat"` | value | An icon waiting at the start (null = none) |
| `to_icon` | `"play"` | value | An icon that pops at the end as the line arrives (null = none) |
| `icon_size` | `16` | 4–50 | The icons' size, % of the frame width |
| `stroke` | `1.6` | 0.5–4 | The icons' line weight in their 24-unit grid |
| `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/connector-line` 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.
