Skip to main content
POST
/
v1
/
videos
/
generations
sora-2 Interface
curl --request POST \
  --url https://api.evolink.ai/v1/videos/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "model": "sora-2",
  "prompt": "A cat playing piano"
}'
{
  "created": 1757169743,
  "id": "task-unified-1757169743-7cvnl5zw",
  "model": "sora-2",
  "object": "video.generation.task",
  "progress": 0,
  "status": "pending",
  "task_info": {
    "can_cancel": true,
    "estimated_time": 300,
    "video_duration": 9
  },
  "type": "video",
  "usage": {
    "billing_rule": "per_call",
    "credits_reserved": 7,
    "user_group": "default"
  }
}

Authorizations

Authorization
string
header
required

##All APIs require Bearer Token authentication##

Get API Key:

Visit API Key Management Page to get your API Key

Add to request header when using:

Authorization: Bearer YOUR_API_KEY

Body

application/json
model
string
default:sora-2
required

Video generation model name

Example:

"sora-2"

prompt
string
required

Prompt describing what kind of video to generate

Maximum length: 1000
Example:

"A cat playing piano"

aspect_ratio
enum<string>

Video aspect ratio, 16:9 generates landscape video, 9:16 generates portrait video

Available options:
16:9,
9:16
Example:

"16:9"

image_urls
string<uri>[]

Reference image URL list for image-to-video feature

Note:

  • Images containing real human figures are not supported
  • Single request supports input image quantity: 1 image
  • Image size: no more than 10MB
  • Supported file formats: .jpg, .jpeg, .png, .webp
  • Image URLs must be directly viewable by the server, or the image URL should trigger direct download when accessed (typically these URLs end with image file extensions, such as .png, .jpg)
Maximum length: 1
Example:
["http://example.com/image1.jpg"]
remove_watermark
boolean

Whether to remove video watermark, by default it will be removed

Note:

  • true: Remove watermark, higher pricing. This is the default value, please note when sending requests
  • false: Keep watermark, standard pricing
Example:

true

duration
integer

Specifies the generated video duration (seconds), default is 10, representing 10 seconds

Note:

  • Only supports 10, 15 values, representing 10 seconds, 15 seconds
  • Billing is based on the duration value, 15 seconds costs more than 10 seconds
Example:

10

callback_url
string<uri>

HTTPS callback address after task completion

Callback Timing:

  • Triggered when task is completed, failed, or cancelled
  • Sent after billing confirmation is completed

Security Restrictions:

  • Only HTTPS protocol is supported
  • Callback to internal IP addresses is prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
  • URL length must not exceed 2048 characters

Callback Mechanism:

  • Timeout: 10 seconds
  • Maximum 3 retries on failure (retries after 1 second/2 seconds/4 seconds)
  • Callback response body format is consistent with the task query API response format
  • Callback address returning 2xx status code is considered successful, other status codes will trigger retry
Example:

"https://your-domain.com/webhooks/video-task-completed"

Response

Video generation task created successfully

created
integer

Task creation timestamp

Example:

1757169743

id
string

Task ID

Example:

"task-unified-1757169743-7cvnl5zw"

model
string

Actual model name used

Example:

"sora-2"

object
enum<string>

Specific task type

Available options:
video.generation.task
progress
integer

Task progress percentage (0-100)

Required range: 0 <= x <= 100
Example:

0

status
enum<string>

Task status

Available options:
pending,
processing,
completed,
failed
Example:

"pending"

task_info
object

Video task detailed information

type
enum<string>

Task output type

Available options:
text,
image,
audio,
video
Example:

"video"

usage
object

Usage and billing information