Sora Character Generation
- Sora Character (sora-character) model generates character profiles from videos
- Async processing mode, use the returned task ID to query status
- Generated profile picture links are valid for 24 hours, please save them promptly
OpenAPI
````yaml en/api-manual/video-series/sora2/sora-character-generate.json post /v1/videos/generations openapi: 3.1.0 info: title: sora-character API description: >- Generate character profiles from videos, extracting character names and profile pictures license: name: MIT version: 1.0.0 servers: - url: https://ai.odkkk.com/apiv1 description: Production security: - bearerAuth: [] tags: - name: Character Generation description: AI character generation APIs paths: /v1/videos/generations: post: tags: - Character Generation summary: sora-character API description: >- - Sora Character (sora-character) model generates character profiles from videos
- Async processing mode, use the returned task ID to [query
status](/en/api-manual/task-management/get-task-detail)
- Generated profile picture links are valid for 24 hours, please save
them promptly
operationId: createCharacterGeneration
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CharacterGenerationRequest'
examples:
character_generation:
summary: Generate character from video
value:
model: sora-character
video_url: https://example.com/video.mp4
timestamps: 1,3
responses:
'200':
description: Character generation task created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CharacterGenerationResponse'
'400':
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: 400
message: Invalid timestamps parameter
type: invalid_request_error
param: timestamps
'401':
description: Unauthorized, invalid or expired token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: 401
message: Invalid or expired token
type: authentication_error
'402':
description: Insufficient quota
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: 402
message: Insufficient quota
type: insufficient_quota_error
fallback_suggestion: https://ai.odkkk.com/apiv1/dashboard/billing
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: 429
message: Rate limit exceeded
type: rate_limit_error
fallback_suggestion: retry after 60 seconds
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error:
code: 500
message: Internal server error
type: internal_server_error
fallback_suggestion: try again later
components: schemas: CharacterGenerationRequest: type: object required: - model - video_url properties: model: type: string description: Model name default: sora-character example: sora-character video_url: type: string format: uri description: |- Video URL
**Note:**
- Video URL must be directly accessible by the server
- Supported formats: `.mp4`, `.mov`, `.webm`
example: https://example.com/video.mp4
timestamps:
type: string
description: >-
Timestamps specifying which time points to extract characters from
**Format:**
- Use comma to separate multiple time points, e.g., `1,3` means 1st
and 3rd second
- Time unit is seconds
- **Time range limit:** The span between selected time points must
not exceed `2 seconds`
- **Default:** `0,2` (from 0 to 2 seconds)
example: 1,3
CharacterGenerationResponse:
type: object
properties:
created:
type: integer
description: Task creation timestamp
example: 1767917446
id:
type: string
description: Task ID for querying task status
example: task-unified-1767917446-5lqy8zzv
model:
type: string
description: Model name used
example: sora-character
object:
type: string
enum:
- video.generation.task
description: Task object type
progress:
type: integer
description: Task progress percentage (0-100)
minimum: 0
maximum: 100
example: 0
status:
type: string
description: Task status
enum:
- pending
- processing
- completed
- failed
example: pending
task_info:
$ref: '#/components/schemas/TaskInfo'
type:
type: string
enum:
- video
description: Task output type
example: video
usage:
$ref: '#/components/schemas/Usage'
result_data:
$ref: '#/components/schemas/ResultData'
description: Result data (only returned when status is completed)
ErrorResponse:
type: object
properties:
error:
type: object
properties:
code:
type: integer
message:
type: string
type:
type: string
param:
type: string
fallback_suggestion:
type: string
TaskInfo:
type: object
properties:
can_cancel:
type: boolean
description: Whether the task can be cancelled
example: true
estimated_time:
type: integer
description: Estimated completion time (seconds)
example: 150
video_duration:
type: integer
description: Video duration (seconds)
example: 8
Usage:
type: object
properties:
billing_rule:
type: string
enum:
- per_call
- per_token
- per_second
example: per_call
credits_reserved:
type: number
description: Estimated credits consumption
example: 0.1
user_group:
type: string
description: User group
example: vip
ResultData:
type: object
properties:
character_name:
type: string
description: Generated character name (unique identifier)
example: chr_Axtjik3O#
profile_picture_url:
type: string
format: uri
description: Character profile picture URL, valid for 24 hours
example: https://example.com/profile.jpg
securitySchemes: bearerAuth: type: http scheme: bearer description: >- ##All APIs require Bearer Token authentication##
**Get API Key:**
Visit [API Key Management Page](https://ai.odkkk.com/apiv1/dashboard/keys) to
get your API Key
**Add to request header when using:**
```
Authorization: Bearer YOUR_API_KEY
```
````
To find navigation and other pages in this documentation, fetch the llms.txt file at: https://ai.odkkk.com/apiv1/docs/llms.txt