Quick Start
The GEN workflow has two halves: configure the agent (who it is, how it sounds, what inspires it) and generate content (ideas → video → publish). Get the first half right and the second half takes care of itself.
This guide walks the full happy path:
- Agent Core — identity, overview, personality, inspiration, voice, look, accounts, in one PATCH
- Content Ideas — let the agent propose video ideas grounded in trending data
- Produce the video — clone a template, drop in the idea, render
You can skip straight to step 3 if you already have a configured agent, but for new agents you should always do step 1 first. Ideas generated from a blank agent will be generic.
Prerequisites
Section titled “Prerequisites”- A GEN account at gen.pro
- An API key (create one here)
- Active GEN credits on your account
export GEN_API_KEY="gen_pat_your_key_here"0. Find your agent
Section titled “0. Find your agent”curl -s https://api.gen.pro/v1/agents \ -H "X-API-Key: $GEN_API_KEY" | jq '.agents[0]'{ "id": "agent_xyz789", "name": "Alex" }export AGENT_ID="agent_xyz789"1. Set up your Agent Core
Section titled “1. Set up your Agent Core”This is the most important step for any new agent. PATCH /v1/agents/{agent_id}/core writes every section of the agent setup canvas in one call: identity, overview (brand profile), personality, inspiration sources, voice, look, and the agent’s own social accounts.
curl -s -X PATCH "https://api.gen.pro/v1/agents/$AGENT_ID/core" \ -H "X-API-Key: $GEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "identity": { "name": "Santiago" }, "overview": { "brand_name": "Santiago", "description": "Santiago is a San Antonio street food scout. He champions hole-in-the-wall spots over fine dining — food trucks, family-run tamale stands, tourist-blind gems.", "identity_type": "character", "goal": "growth", "keywords": ["streetfood", "foodtruck", "tacotok"], "target_platforms": ["tiktok", "instagram"], "shortform": true, "research_topics": [ {"topic": "new food truck openings in San Antonio"}, {"topic": "viral street food TikTok moments"}, {"topic": "Texas food festival announcements"} ] }, "personality": "Santiago grew up eating at his tias taco stand on the East Side. He believes the best food comes from the smallest kitchens. He is warm, specific, never condescending, always hungry.", "inspiration": [ { "url": "https://tiktok.com/@keithlee", "platform": "tiktok" }, { "url": "https://tiktok.com/@foodwithsoy", "platform": "tiktok" } ], "look": { "description": "Latino male early 30s, athletic build, usually wearing a plain t-shirt and a worn Spurs cap. Shoots handheld." }, "accounts": [ { "url": "https://tiktok.com/@santiago_sa", "platform": "tiktok" }, { "url": "https://instagram.com/santiago_sa", "platform": "instagram" } ] }' | jqResponse (200): a status: ok entry per section you provided. If any section failed the response is 207 Multi-Status and the failing sections include status: error.
{ "identity": { "status": "ok", "data": { "name": "Santiago", "profile_photo_url": null } }, "overview": { "status": "ok", "data": { ... } }, "personality": { "status": "ok", "data": "Santiago grew up..." }, "inspiration": { "status": "ok", "data": [ { "id": 1, "url": "...", "platform": "tiktok" }, ... ] }, "look": { "status": "ok", "data": { "description": "Latino male...", "reference_images": [] } }, "accounts": { "status": "ok", "data": [ { "id": 42, "url": "...", "platform": "tiktok" }, ... ] }}You can also set sections one at a time by calling PATCH /core with only that section in the body. Use the Agent Core reference for field shapes and Agent Voice reference for voice library + design + cloning.
Verify by reading back:
curl -s "https://api.gen.pro/v1/agents/$AGENT_ID/core" \ -H "X-API-Key: $GEN_API_KEY" | jq2. Generate content ideas
Section titled “2. Generate content ideas”With your agent configured, let it propose video ideas. GEN’s content-ideas agent pulls trending data from 10+ platforms, matches it to the agent’s keywords and inspiration, and generates scripts grounded in real content.
curl -s -X POST https://agent.gen.pro/v1/agent/run \ -H "X-API-Key: $GEN_API_KEY" \ -H "Content-Type: application/json" \ -d "{ \"agent_id\": \"$AGENT_ID\", \"message\": \"Generate 5 content ideas grounded in this weeks trends\" }" | jqResponse: { "run_id": "run_abc", "conversation_id": "conv_xyz" }
The run is async — poll status until it’s done:
curl -s "https://agent.gen.pro/v1/runs/run_abc" \ -H "X-API-Key: $GEN_API_KEY" | jq '.status'Valid statuses: pending → planning → executing → completed (or failed).
When complete, the ideas show up in the conversation:
curl -s "https://agent.gen.pro/v1/conversations/conv_xyz" \ -H "X-API-Key: $GEN_API_KEY" | jq '.messages[-1]'Each idea includes: title, hook, full_script, video_type, estimated_duration, selected_assets (clips + images from the research phase), project_manifest (timeline layers for rendering), rationale. See the Content Ideas guide for the full shape and refinement flow.
3. Produce a video from an idea
Section titled “3. Produce a video from an idea”Once you like an idea, the fastest path to a rendered video is cloning a template that matches the video type and dropping the idea’s fields into its cells.
# a. list templates matching the video type (e.g. talking avatar, montage, split-screen)curl -s https://api.gen.pro/v1/templates/projects \ -H "X-API-Key: $GEN_API_KEY" | jq '.templates[] | {slug, name, video_type}'
# b. clone the chosen template into the agentcurl -s -X POST "https://api.gen.pro/v1/templates/spreadsheets/TEMPLATE_SLUG/clone" \ -H "X-API-Key: $GEN_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"agent_id\": \"$AGENT_ID\"}" | jq
# c. update a cell with the idea's scriptcurl -s -X PATCH "https://api.gen.pro/v1/autocontentengine/$ENGINE_ID/cells/$CELL_ID?agent_id=$AGENT_ID" \ -H "X-API-Key: $GEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"value": "Your script here"}' | jq
# d. generate content in the cell (text, image, video, speech — depends on the column type)curl -s -X POST "https://api.gen.pro/v1/autocontentengine/$ENGINE_ID/cells/$CELL_ID/generate?agent_id=$AGENT_ID" \ -H "X-API-Key: $GEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"generation_type": "text", "data": {"model": "gemini", "prompt": "..."}}' | jq
# e. poll the generation until completecurl -s https://api.gen.pro/v1/generations/GENERATION_ID \ -H "X-API-Key: $GEN_API_KEY" | jq '.status'
# f. render the final video once all cells are filledcurl -s -X POST "https://api.gen.pro/v1/autocontentengine/$ENGINE_ID/cells/$CELL_ID/render?agent_id=$AGENT_ID" \ -H "X-API-Key: $GEN_API_KEY" | jqSee the Content Resources guide for downloading the rendered output and the Publishing reference for pushing it to social.