Skip to main content
POST
/
v1
/
videos
/
generations
curl --request POST \
  --url https://api.apimart.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "veo3.1-fast-official",
    "prompt": "a golden retriever running on the beach, sunset, cinematic",
    "duration": 8,
    "aspect_ratio": "16:9"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_xxxxxxxxxx"
    }
  ]
}
curl --request POST \
  --url https://api.apimart.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "veo3.1-fast-official",
    "prompt": "a golden retriever running on the beach, sunset, cinematic",
    "duration": 8,
    "aspect_ratio": "16:9"
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_xxxxxxxxxx"
    }
  ]
}

Authorizations

Authorization
string
required
All API endpoints require Bearer Token authenticationGet your API Key:Visit the API Key Management Page to get your API KeyAdd it to the request header:
Authorization: Bearer YOUR_API_KEY

Body

model
string
required
Video generation model nameAvailable models:
  • veo3.1-fast-official - Veo 3.1 Official Fast version
  • veo3.1-quality-official - Veo 3.1 Official High Quality version
prompt
string
required
Positive text promptDescribe scenes, actions, styles, etc. in detail for better generation results. English prompts are recommended.Example: "a golden retriever running on the beach, sunset, cinematic"
negative_prompt
string
Negative prompt to exclude unwanted contentExample: "blurry, low quality, watermark, text"
duration
integer
default:"8"
Video duration in secondsRecommended values: 4 / 6 / 8Default: 8Note: Must be a pure number (e.g. 8), do not add quotes, otherwise an error will occur
aspect_ratio
string
default:"16:9"
Video aspect ratioAvailable values:
  • 16:9 - Landscape
  • 9:16 - Portrait
Default: 16:9
resolution
string
default:"720p"
Video resolutionAvailable values:
  • 720p - Standard resolution
  • 1080p - High definition
  • 4K - Ultra high definition
Default: 720p
first_frame_image
string
First frame image URL for image-to-video generation
  • Image URL must be publicly accessible without hotlink protection
  • Object storage URLs are recommended over temporary download links
last_frame_image
string
Last frame image URL for image-to-video generationUsed with first_frame_image to control first and last frames
seed
integer
Random seed for reproducing generation resultsValue range: 0 - 4294967295
sample_count
integer
default:"1"
Number of samples to generate (1-4), currently recommended to use 1Default: 1
generate_audio
boolean
default:"false"
Whether to generate audio track
person_generation
string
default:"allow_adult"
Person generation policyAvailable values:
  • allow_adult - Only allow generating adult persons/faces
  • disallow - Do not allow generating persons or faces
Default: allow_adult
resize_mode
string
default:"pad"
Image resize strategy (effective for image-to-video)Available values:
  • pad - Padding mode
  • crop - Cropping mode
Default: pad
enhance_prompt
boolean
default:"true"
Whether to enable upstream prompt enhancementDefault: true
  • This parameter can only be set to true. Setting it to false will cause a request error
  • If you don’t need this parameter, do not include it

Text-to-Video vs Image-to-Video

The system automatically determines the mode based on whether image parameters are provided: no images for text-to-video, images for image-to-video.
ParameterText-to-VideoImage-to-Video
promptRequiredRequired
first_frame_imageNot usedRequired (at least one)
last_frame_imageNot usedOptional (last frame)
negative_promptOptionalOptional
durationOptionalOptional
aspect_ratioOptionalOptional
resolutionOptionalOptional
seedOptionalOptional
generate_audioOptionalOptional
person_generationOptionalOptional
resize_modeNot applicableOptional
enhance_promptOptionalOptional

Response

code
integer
Response status code, 200 on success
data
array
Response data array

Usage Scenarios

Scenario 1: Text-to-Video (Basic)

{
  "model": "veo3.1-fast-official",
  "prompt": "a golden retriever running on the beach, sunset, cinematic"
}

Scenario 2: Text-to-Video (Full Parameters)

{
  "model": "veo3.1-quality-official",
  "prompt": "a cinematic close-up of a ragdoll cat slowly walking through a sunlit living room",
  "negative_prompt": "blurry, low quality, watermark, text",
  "duration": 8,
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "seed": 12345,
  "generate_audio": true,
  "person_generation": "disallow",
  "enhance_prompt": true
}

Scenario 3: Image-to-Video (Single First Frame)

{
  "model": "veo3.1-fast-official",
  "prompt": "the cat slowly walks forward and looks around",
  "first_frame_image": "https://example.com/cat.png",
  "duration": 8,
  "resolution": "720p"
}

Scenario 4: Image-to-Video (First Frame + Last Frame)

{
  "model": "veo3.1-quality-official",
  "prompt": "smooth cinematic transition from the first frame to the last frame",
  "first_frame_image": "https://example.com/frame-start.png",
  "last_frame_image": "https://example.com/frame-end.png",
  "duration": 8,
  "resolution": "1080p"
}

Scenario 5: Video with Audio

{
  "model": "veo3.1-quality-official",
  "prompt": "a busy coffee shop with people chatting and barista making latte art",
  "duration": 8,
  "generate_audio": true,
  "aspect_ratio": "16:9"
}
Query Task ResultsVideo generation is an asynchronous task that returns a task_id upon submission. Use the Get Task Status endpoint to query generation progress and results.