{"id":"full-human-video","kind":"complete","name":{"he":"וידאו טבעי — אתם מדברים למצלמה, בלי שזה נראה AI","en":"A natural video of you — talking to the camera like a person, not like AI"},"one_line":{"he":"אתם מדברים למצלמה — בלי מצלמה, ובלי המראה שמסגיר סרטוני AI.","en":"You, talking to the camera — without a camera, and without the look that gives AI videos away."},"listed":true,"version":"1.0","updated":"2026-10-09","when_to_use":["A finished video in one skill: your face from one photo, filmed like a phone propped on your desk — not a studio, a script in spoken Hebrew with a few real hesitations (אממ, a word started again), Gemini Omni moves you like a real, slightly restless person: one hand talks, gestures dropped halfway, a glance away, one acted moment a line — a real nose scratch, a mock, a look at your own hands, every take watched by Gemini: no letters in the frame, the same face, natural hands.","There is no talking video to edit — the result is made from a voice or a script."],"when_not_to_use":["Only captions or only a title are wanted: a caption or hook skill is many times cheaper.","The person in the video has not agreed to their voice or face being used."],"example":{"video_url":"https://media.gpt.org.il/lookbook/examples/human-video-he.mp4","credits":4184,"seconds":20.1},"preview":null,"price":{"unit":"minute","from":4000,"to":12500,"note":"per finished minute; 30 s ≈ 2100–6300 credits — generated media is priced per asset, so half a minute is not half the price"},"inputs":[{"name":"photo","type":"image","required":true,"limits":"one sharp photo of the customer, facing the camera, chest-up, natural light","notes":"only the customer's own face, or someone who agreed"},{"name":"voice_id","type":"text","required":true,"limits":"the customer's own cloned voice (POST /v1/ai/voices/clone, once)","notes":"never the video model's own voice"},{"name":"topic or script","type":"text","required":true,"limits":"3–6 lines of 6–9 seconds","notes":"spoken Hebrew with a few hesitations — the recipe's brief writes it"},{"name":"consent","type":"consent","required":true,"limits":null,"notes":"the person in the photo agrees to a generated video of them"}],"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":"Upload a file (get an upload URL)","body":{"filename":"clip.mp4"},"async":false,"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/ai/text","what":"Generate text (chat)","body":{"model":"gemini-3.5-flash","system":"<system — from the recipe>","prompt":"<prompt — from the recipe>"},"async":false,"optional":false},{"method":"POST","path":"/v1/ai/video","what":"Generate a video clip (Veo 3.1 · Gemini Omni)","body":{"prompt":"<prompt — from the recipe>"},"async":true,"optional":false},{"method":"POST","path":"/v1/ai/voices/clone","what":"Clone a voice","body":{"name":"<name — from the recipe>","audio_urls":["https://media.gpt.org.il/u/…/me-2min.mp3"]},"async":false,"optional":false},{"method":"POST","path":"/v1/ai/voice","what":"Voice-over (text to speech)","body":{"text":"<text — from the recipe>"},"async":false,"optional":false},{"method":"POST","path":"/v1/speech/transcripts","what":"Transcribe audio or video","body":{"audio_url":"<audio url — from the recipe>"},"async":true,"optional":false},{"method":"POST","path":"/v1/studio/convert","what":"Convert, compress, change speed, extract audio","body":{"video_url":"<video url — from the recipe>"},"async":true,"optional":false},{"method":"POST","path":"/v1/video/lipsync","what":"Lip-sync a video to new audio","body":{"video_url":"<video url — from the recipe>","audio_url":"<audio url — from the recipe>"},"async":true,"optional":false},{"method":"POST","path":"/v1/studio/merge","what":"Join clips","body":{"clips":[{"url":"https://media.gpt.org.il/samples/sample-he.mp4","end":5},{"url":"https://media.gpt.org.il/samples/sample-he.mp4","start":8,"end":13}]},"async":true,"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.","A real person's face or voice needs their consent: send consent { accepted: true, subject: self | other, basis: own | consent | licensed } as the customer declares it — ask them; never fill it in yourself.","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":"consent_required","why":"400: a face or a voice was sent without the person's consent declaration","fix":"Ask the customer who is in it and on what basis, then send consent { accepted, subject, basis }."},{"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":"create","level":"ai","hebrew":true,"recommended":false,"new":true,"creator":false,"topics":["complete","captions","music","ai_shots","voice"]},"links":{"recipe":"/skills/full-human-video.md","docs":"/docs?tool=video-studio","run":"/v1/skills/apihub-human-video/run"}}