Skip to content

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:

  1. Agent Core — identity, overview, personality, inspiration, voice, look, accounts, in one PATCH
  2. Content Ideas — let the agent propose video ideas grounded in trending data
  3. 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.

Terminal window
export GEN_API_KEY="gen_pat_your_key_here"
Terminal window
curl -s https://api.gen.pro/v1/agents \
-H "X-API-Key: $GEN_API_KEY" | jq '.agents[0]'
{ "id": "agent_xyz789", "name": "Alex" }
Terminal window
export AGENT_ID="agent_xyz789"

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.

Terminal window
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" }
]
}' | jq

Response (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:

Terminal window
curl -s "https://api.gen.pro/v1/agents/$AGENT_ID/core" \
-H "X-API-Key: $GEN_API_KEY" | jq

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.

Terminal window
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\"
}" | jq

Response: { "run_id": "run_abc", "conversation_id": "conv_xyz" }

The run is async — poll status until it’s done:

Terminal window
curl -s "https://agent.gen.pro/v1/runs/run_abc" \
-H "X-API-Key: $GEN_API_KEY" | jq '.status'

Valid statuses: pendingplanningexecutingcompleted (or failed).

When complete, the ideas show up in the conversation:

Terminal window
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.

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.

Terminal window
# 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 agent
curl -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 script
curl -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 complete
curl -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 filled
curl -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" | jq

See the Content Resources guide for downloading the rendered output and the Publishing reference for pushing it to social.