Skip to content
Limited-time offerevery video just HK$1only 1,000, first come first servedGet it now
Axiom Lab
Developer docs

Reference

API reference · Plans

Plan before producing: workflow, specs, assets and structure are frozen and anything missing is reported.

View Markdown

List Plans

GET/v1/plans

API key requiredSuccess 200

Parameters

NameTypeDescription
limitqueryintegerDefault 50; range 1–200
cursorquerystringlength ≤ 256; nullable
afterquerystringlength ≤ 256; nullable
X-Project-IDheaderstringThe project to act on; the default project when omitted; nullable

Response 200 application/json

NameTypeDescription
datarequiredarray<object>
data[].idrequiredstring
data[].project_idrequiredstringnullable
data[].kindrequiredstring
data[].namerequiredstring
data[].versionrequiredinteger
data[].created_atrequirednumber
data[].updated_atrequirednumber
data[].datarequiredobject
data[].data.statusrequiredstringOne of: planning ready needs_input unavailable
data[].data.requestrequiredobject
data[].data.assetsarray<object>
data[].data.routingobjectnullable
data[].data.requirementsarray<object>
data[].data.reasonstringnullable
data[].data.job_idstringThe production this plan started; a plan starts at most one; nullable
next_cursorstringOpaque; pass as cursor (or the after alias) for the next page; nullable
has_morebooleanDefault false

Example

curl "https://axiomlab.online/v1/plans" \
  -H "Authorization: Bearer $AZIMO_API_KEY"

Create Plan

POST/v1/plans

API key requiredSuccess 201

Parameters

NameTypeDescription
Idempotency-KeyheaderstringA unique value you generate and keep; reuse it when retrying so the request never runs twice; length 1–128; nullable
X-Project-IDheaderstringThe project to act on; the default project when omitted; nullable

Request body application/json

NameTypeDescription
promptstringlength ≤ 4000
assetsarray<string>up to 30 items
optionsobject
options.workflowstringOne of: auto explainer short_drama creative_video motion_explainer profile_card product_pitch; Default explainer
options.goalstringlength ≤ 2000
options.audiencestringlength ≤ 1000
options.duration_maxintegerPlanned length in seconds, checked against the workflow's range, whose lower bound depends on the workflow (GET /v1/workflows: 30–180 for most, profile_card 30–90). It does not cap the film: its length is confirmed after the materials are analysed (needs_input with confirm_duration); Default 60; range 5–180
options.widthintegerWith height, the aspect ratio: 1920×1080 (16:9); profile_card 1080×1920 (9:16); Default 1920; range 640–3840
options.heightintegerDefault 1080; range 360–2160
options.fpsintegerDefault 30; range 24–60
options.subtitlesbooleanSubtitle preference, applied by profile_card only; other films usually come with subtitles burned in; Default false
options.musicbooleanBackground music preference, applied by profile_card only; Default true
options.skill_idstringlength ≤ 200; nullable
options.credit_budgetintegerrange 1–1000000; nullable
options.video_typestringOne of: project product personal corporate name_card; nullable
options.content_datamap<string, string>
options.style_presetstringOne of: cinematic_realism clean_3d product_studio; Default cinematic_realism
options.brandobject
options.profileobject
options.motion_stylestringOne of: mono photo; Default mono
options.photo_subjectstringlength ≤ 120
options.photo_licensestringOne of: strict sharealike; Default strict
options.stylestringA style id from GET /v1/styles; for video_type product one of the 15-second TVC looks cinematic, tech, lifestyle; unset uses the default style; nullable
options.languagestringThe film's language when the request has no text of its own; unset: Chinese; One of: zh en; nullable
options.founderobject企业家名片: name, company, titles, facts (0–12; a card counts as two), photos[{asset, role, caption}], template (ink | grid | renwu), consent, optional industry and name_pinyin; required with video_type name_card. Length is 30–90 seconds, set from the material; nullable
options.founder.namerequiredstringlength 2–12
options.founder.companyrequiredstringlength 2–40
options.founder.titlesrequiredarray<string>up to 3 items
options.founder.factsarray<object>up to 12 items
options.founder.photosrequiredarray<object>up to 12 items
options.founder.templatestringOne of: ink grid renwu; Default ink
options.founder.educationarray<string>up to 3 items
options.founder.honorsarray<string>up to 6 items
options.founder.mottostringthe closing line; the customer's own words; length ≤ 40
options.founder.contactstringshown on the end card only when given; length ≤ 60
options.founder.industrystring行业 / 主营,如智慧农业;framing lines and illustrative scenes may rest on it; length ≤ 20
options.founder.name_pinyinstringoptional pronunciation, e.g. shěn jì bái; written into the narration prompt; length ≤ 48
options.founder.brand_colorstring#RRGGBB accent for the grid template
options.founder.consentbooleanthe customer holds the rights to these photos and the facts are true; Default false
webhook_urlstringlength ≤ 2000; nullable
plan_idstringnullable
template_idstringnullable
brand_idstringnullable
variablesmap<string, string>

Response 201 application/json

NameTypeDescription
idrequiredstring
project_idrequiredstringnullable
kindrequiredstring
namerequiredstring
versionrequiredinteger
created_atrequirednumber
updated_atrequirednumber
datarequiredobject
data.statusrequiredstringOne of: planning ready needs_input unavailable
data.requestrequiredobject
data.assetsarray<object>
data.routingobjectnullable
data.requirementsarray<object>
data.reasonstringnullable
data.job_idstringThe production this plan started; a plan starts at most one; nullable

Example

curl -X POST "https://axiomlab.online/v1/plans" \
  -H "Authorization: Bearer $AZIMO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "<prompt>", "assets": ["<asset id>"]}'

Get Plan

GET/v1/plans/{plan_id}

API key requiredSuccess 200

Parameters

NameTypeDescription
plan_idrequiredpathstring
X-Project-IDheaderstringThe project to act on; the default project when omitted; nullable

Response 200 application/json

NameTypeDescription
idrequiredstring
project_idrequiredstringnullable
kindrequiredstring
namerequiredstring
versionrequiredinteger
created_atrequirednumber
updated_atrequirednumber
datarequiredobject
data.statusrequiredstringOne of: planning ready needs_input unavailable
data.requestrequiredobject
data.assetsarray<object>
data.routingobjectnullable
data.requirementsarray<object>
data.reasonstringnullable
data.job_idstringThe production this plan started; a plan starts at most one; nullable

Example

curl "https://axiomlab.online/v1/plans/<plan_id>" \
  -H "Authorization: Bearer $AZIMO_API_KEY"

Preview Route

POST/v1/route

API key requiredSuccess 200

Parameters

NameTypeDescription
Idempotency-KeyheaderstringA unique value you generate and keep; reuse it when retrying so the request never runs twice; length 1–128; nullable
X-Project-IDheaderstringThe project to act on; the default project when omitted; nullable

Request body application/json

NameTypeDescription
promptstringlength ≤ 4000
assetsarray<string>up to 30 items
optionsobject
options.workflowstringOne of: auto explainer short_drama creative_video motion_explainer profile_card product_pitch; Default explainer
options.goalstringlength ≤ 2000
options.audiencestringlength ≤ 1000
options.duration_maxintegerPlanned length in seconds, checked against the workflow's range, whose lower bound depends on the workflow (GET /v1/workflows: 30–180 for most, profile_card 30–90). It does not cap the film: its length is confirmed after the materials are analysed (needs_input with confirm_duration); Default 60; range 5–180
options.widthintegerWith height, the aspect ratio: 1920×1080 (16:9); profile_card 1080×1920 (9:16); Default 1920; range 640–3840
options.heightintegerDefault 1080; range 360–2160
options.fpsintegerDefault 30; range 24–60
options.subtitlesbooleanSubtitle preference, applied by profile_card only; other films usually come with subtitles burned in; Default false
options.musicbooleanBackground music preference, applied by profile_card only; Default true
options.skill_idstringlength ≤ 200; nullable
options.credit_budgetintegerrange 1–1000000; nullable
options.video_typestringOne of: project product personal corporate name_card; nullable
options.content_datamap<string, string>
options.style_presetstringOne of: cinematic_realism clean_3d product_studio; Default cinematic_realism
options.brandobject
options.profileobject
options.motion_stylestringOne of: mono photo; Default mono
options.photo_subjectstringlength ≤ 120
options.photo_licensestringOne of: strict sharealike; Default strict
options.stylestringA style id from GET /v1/styles; for video_type product one of the 15-second TVC looks cinematic, tech, lifestyle; unset uses the default style; nullable
options.languagestringThe film's language when the request has no text of its own; unset: Chinese; One of: zh en; nullable
options.founderobject企业家名片: name, company, titles, facts (0–12; a card counts as two), photos[{asset, role, caption}], template (ink | grid | renwu), consent, optional industry and name_pinyin; required with video_type name_card. Length is 30–90 seconds, set from the material; nullable
options.founder.namerequiredstringlength 2–12
options.founder.companyrequiredstringlength 2–40
options.founder.titlesrequiredarray<string>up to 3 items
options.founder.factsarray<object>up to 12 items
options.founder.photosrequiredarray<object>up to 12 items
options.founder.templatestringOne of: ink grid renwu; Default ink
options.founder.educationarray<string>up to 3 items
options.founder.honorsarray<string>up to 6 items
options.founder.mottostringthe closing line; the customer's own words; length ≤ 40
options.founder.contactstringshown on the end card only when given; length ≤ 60
options.founder.industrystring行业 / 主营,如智慧农业;framing lines and illustrative scenes may rest on it; length ≤ 20
options.founder.name_pinyinstringoptional pronunciation, e.g. shěn jì bái; written into the narration prompt; length ≤ 48
options.founder.brand_colorstring#RRGGBB accent for the grid template
options.founder.consentbooleanthe customer holds the rights to these photos and the facts are true; Default false
webhook_urlstringlength ≤ 2000; nullable
plan_idstringnullable
template_idstringnullable
brand_idstringnullable
variablesmap<string, string>

Response 200 application/json

NameTypeDescription
plan_idrequiredstring
workflowstringnullable
requirementsarray<object>

Example

curl -X POST "https://axiomlab.online/v1/route" \
  -H "Authorization: Bearer $AZIMO_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "<prompt>", "assets": ["<asset id>"]}'

← All endpoints