---
title: "Connector line · קו מחבר"
method: POST
path: "/v1/effects/connector-line"
tags: ["Effects · Overlays & graphics"]
---

# Connector line · קו מחבר

`POST /v1/effects/connector-line`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/effects/connector-line`
- Auth: HTTP bearer

A spark appears and an arc draws from one icon to the next, which pops as the line arrives.

ניצוץ מופיע וקשת מציירת את עצמה מאייקון אחד לבא אחריו, שקופץ כשהקו מגיע.

One effect, one render: send the video (or nothing, for the canvas), the effect's `params` and when it plays (`start` + `duration` seconds, or `at` / `during` words) — every field has a default. The same effect stacks with others in `effects` of POST /v1/studio/edit. Preview: GET /v1/effects/connector-line.

**Billing:** Per second of output, like /v1/studio/edit — the effect is burned into the same render (+ transcription seconds when a captions effect transcribes automatically). A heavy effect (one that adds render time — measured) adds effect seconds: the seconds it is on screen × its weight, priced like output seconds; GET /v1/effects/{id} states its weight and price. Failed renders are not charged. · **Rate limit:** 30/min · **Asynchronous**

## Headers

- `Idempotency-Key` string
- `X-Tag` string
- `x-wait-ms` integer

## Request body

- object
  - `at` object: Start at a word (instead of a time)
    - `edge` 'start' | 'end', required: The moment the word starts, or the moment it ends
    - `word` string, required: The word's id (w0001…)
    - `offset_ms` number: Shift in ms, applied after the cuts (default 0)
  - `keep` object[]: Keep only these spans of the video (seconds) — every join between them is a cut a transition plays on
    - `end` number, required
    - `start` number, required
  - `trim` object: Use only this part of the video (seconds)
    - `end` number
    - `start` number
  - `start` number: seconds on the output — when it starts (default: the effect's own)
  - `words` object[]: Your own timed words (ms) instead of a transcript
    - `id` string
    - `end` number, required
    - `text` string, required
    - `start` number, required
  - `during` object: Start and end with a stretch of words (instead of a time and a duration)
    - `to` string, required: Id of the last word
    - `from` string, required: Id of the first word
    - `pad_end_ms` number: End this much later (default 0)
    - `pad_start_ms` number: Start this much earlier (default 0)
  - `output` object
    - `fit` 'crop' | 'blur' | 'pad': When the aspect ratio changes: crop the edges, blurred copy behind, or solid bars
    - `fps` number
    - `format` 'mp4' | 'webm' | 'mov' | 'gif' | 'mp3' | 'wav' | 'm4a' | 'jpg' | 'png'
    - `quality` 'draft' | 'standard' | 'high': high (default) = best picture; draft renders fastest for previews
    - `background` string: Bar colour for fit=pad
    - `resolution` '480' | '720' | '1080' | 'source': Short side in pixels (1080 = Full HD). `source` keeps the input size, max 1080
    - `aspect_ratio` 'original' | '9:16' | '16:9' | '1:1' | '4:5' | '4:3': 9:16 for Reels/TikTok/Shorts, 1:1 or 4:5 for feed, 16:9 for YouTube
  - `params` object: The effect's own settings (every field has a default)
    - `ms` integer: How long it takes to draw, ms
    - `to` object: Where it ends
      - `x` number, required: % of the width, from the left
      - `y` number, required: % of the height, from the top
    - `dot` boolean: A spark riding the line's end
    - `bend` number: How much it arcs (0 = straight)
    - `from` object: Where the line starts
      - `x` number, required: % of the width, from the left
      - `y` number, required: % of the height, from the top
    - `glow` number: A soft glow round the line, px at 1080 wide
    - `color` string: The line colour
    - `width` number: Line width, % of the frame width
    - `stroke` number: The icons' line weight in their 24-unit grid
    - `to_icon` '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', nullable: An icon that pops at the end as the line arrives (null = none)
    - `backdrop` 'none' | 'panel' | 'full': A dark motion-graphics plate behind the icons: a panel across the top, the whole frame, or none (over the video)
    - `from_icon` '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', nullable: An icon waiting at the start (null = none)
    - `icon_size` number: The icons' size, % of the frame width
    - `backdrop_height` number: panel: its height, % of the frame
  - `duration` number: seconds — how long it lasts
  - `video_url` string, uri: The video to put it on — leave out for the plain canvas
  - `language_code` string: Spoken language for the automatic transcript, e.g. he, en
  - `transcript_id` string: Reuse a transcript (captions effects)

## Response `200`

Completed (or 202 while processing)

- object
  - `id` string: Execution id — stable across internal retries; use it with GET /v1/executions/{id}
  - `status` 'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
  - `operation` string
  - `tag` string, nullable: Your X-Tag, if sent
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `output` object: Operation result (see each operation). While a Studio render is processing: `stage` (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), `phase` (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), `progress` (a percent, 0–100) and `progress_fraction` (0–1), `eta_seconds` (seconds left, never below 0) and `estimate_seconds`
  - `error` string, nullable
  - `usage` object
    - `credits_charged` number, nullable
    - `credits_reserved` number
    - `estimated_credits` number
    - `cost_source` 'provider_reported' | 'calculated' | 'estimated' | 'null', nullable
    - `provider_usage` object, nullable: Normalised consumption, e.g. { VIDEO_SECOND: 22.4 }
  - `balance` object
    - `available` number
    - `reserved` number

## Other responses

- `202`: Processing — poll GET /v1/executions/{id}
- `400`: Invalid input
- `402`: Insufficient credits / project budget
- `404`: Resource not found (or not yours)
- `429`: Rate limited
- `503`: Service temporarily paused

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
