{"id":"full-sales","kind":"complete","name":{"he":"מודעת מכירה","en":"Sales ad"},"one_line":{"he":"סרטון מכירה: הוק מונה, כתוביות פופ, תמונות מוצר ב-Nano Banana Pro, אייקונים על נקודות ההוכחה, כרטיס סיום קינטי עם המחיר (או המוצר, כשאין מחיר — אף פעם לא מחיר מומצא), מוזיקה…","en":"A selling clip: a counting-number hook, pop captions, Nano Banana Pro product shots, icons on the proof points, a kinetic end card with the price (or the product, when no price is…"},"listed":true,"version":"1.0","updated":"2026-10-09","when_to_use":["A finished video in one skill: counting hook, captions, AI product shots, icons on the proof points, kinetic end card (price or product).","A talking video should come out as a finished post, not just captioned."],"when_not_to_use":["Only captions or only a title are wanted: a caption or hook skill is many times cheaper."],"example":{"video_url":"https://media.gpt.org.il/lookbook/examples/sales-agent.mp4","credits":295,"seconds":58},"preview":null,"price":{"unit":"minute","from":300,"to":380,"note":"per finished minute; 30 s ≈ 240–310 credits — generated media is priced per asset, so half a minute is not half the price"},"inputs":[{"name":"video_url","type":"video","required":true,"limits":"a public link, or the original recording uploaded (POST /v1/studio/uploads), up to 2 GB","notes":"upload the original as it is (a phone's MOV / HEVC / 4K is fine), never a resized copy"}],"outputs":[{"name":"output.url","type":"video","required":true,"limits":"mp4, 9:16 1080p unless the request says otherwise","notes":"the file is deleted 24 hours after it is made: download it and tell the customer"},{"name":"cost","type":"number","required":true,"limits":null,"notes":"GET /v1/usage?tag=<job name> → totals.credits: quote this, not the estimate"}],"steps":[{"method":"POST","path":"/v1/studio/uploads","what":"Only for a file (not a link): get an upload URL, PUT the bytes to output.upload_url with output.headers, use output.url as the video","body":{"filename":"clip.mp4"},"async":false,"optional":true},{"method":"POST","path":"/v1/studio/remove-silence","what":"Remove silences and filler words","body":{"video_url":"<video url — from the recipe>"},"async":true,"optional":false},{"method":"POST","path":"/v1/ai/image","what":"Generate or edit an image","body":{"prompt":"<prompt — from the recipe>"},"async":false,"optional":false},{"method":"POST","path":"/v1/stock/icon","what":"Icon → transparent PNG","body":{"icon":"mdi:rocket-launch"},"async":false,"optional":false},{"method":"POST","path":"/v1/ai/music","what":"Generate music","body":{"prompt":"<prompt — from the recipe>","duration":30,"instrumental":true},"async":false,"optional":false},{"method":"POST","path":"/v1/studio/edit","what":"Full edit in one render","body":{"video_url":"<video url — from the recipe>"},"async":true,"optional":false},{"method":"GET","path":"/v1/executions/{id}","what":"Poll a call that answered processing until it is completed (the file is output.url)","body":null,"async":false,"optional":false},{"method":"GET","path":"/v1/usage","what":"?tag=<job name>: what the whole job cost — quote it to the customer","body":null,"async":false,"optional":false}],"rules":["Show the customer the price (POST <path>/estimate with the same body, or the price above) and wait for their OK before any paid call.","Send Idempotency-Key: <job>-<step> on every POST. After a timeout send the same call with the SAME key — you get the same job back, never a second charge.","A long call answers status processing: poll GET /v1/executions/{id} every 5–10 s (or send x-wait-ms, up to 90000). Never send the job again to see whether it finished.","Send the same X-Tag: <job name> on every call of one job; GET /v1/usage?tag=<job name> is then what it really cost.","On-screen text is in the video's language and taken from what is actually said (a carousel: from the customer's brief). Never invent facts, names, prices or numbers.","Hebrew has no capitals: keep uppercase false (it only breaks the Latin words inside a Hebrew line).","Keep text inside the middle 80% of the frame: side_margin ≥ 6, margin ≥ 12 — the platform's buttons cover the rest.","Check the words against the speech before burning them in: a phrase lost by the speech model is transcribed again with speech_models [\"universal-2\"] and the words sent as `words`."],"common_errors":[{"code":"invalid_input","why":"400: a field is missing, misspelled or out of range — the message names it","fix":"Fix exactly that field and send again; send only the fields the recipe or the docs show."},{"code":"unauthorized","why":"401: the API key is missing, wrong or revoked","fix":"Ask the customer for a valid key (keys are made at /api-keys); never print it back."},{"code":"insufficient_credits","why":"402: the balance does not cover the estimate (details.required_credits)","fix":"Tell the customer the price and that the balance is short; do not retry until they top up."},{"code":"rate_limited","why":"429: too many calls a minute","fix":"Wait the retry-after seconds, then send the same call with the same Idempotency-Key."},{"code":"failed","why":"the execution's status is failed or timeout — nothing is charged for failed work","fix":"Read error.message, fix the input, and start again with a NEW Idempotency-Key."},{"code":"upload_too_large","why":"413: the file is bigger than the call takes","fix":"Upload the original through POST /v1/studio/uploads and send its output.url; never shrink the picture's shape."},{"code":"skill_not_found","why":"404: no skill with this id or slug","fix":"Take the id from GET /v1/skills (items[].id or slug)."},{"code":"skill_not_available","why":"409: the skill is not on offer right now","fix":"Tell the customer and pick another skill from GET /v1/skills."},{"code":"skill_input_length","why":"422: the video is shorter or longer than the skill takes","fix":"Trim the video (POST /v1/studio/trim) or pick a skill that takes its length."},{"code":"duplicate_client_key","why":"409: a run with this client_key already exists","fix":"Do not start another: find it with GET /v1/agent/runs and follow it."}],"quality_check":["The voice is clearly above the music all the way through.","The captions and every line on screen match what is said.","Watch the start, the middle and the end of the result before handing it over — not only its status.","Read `warnings` in the answer (a font swapped for the language, a picture that had to be enlarged) and tell the customer what they mean."],"tags":{"domain":"edit","level":"ai","hebrew":true,"recommended":true,"new":false,"creator":false,"topics":["complete","captions","hook","music","ai_shots","graphics"]},"links":{"recipe":"/skills/full-sales.md","docs":"/docs?tool=video-studio","run":"/v1/skills/apihub-sales/run"}}