Besides the character video URL, you can provide additional parameters to enhance your character animation:
character_prompt: Description of the character and desired animation style (Max 5000 characters)
safety_instruction: Safety guidelines and content restrictions for the animation (Max 5000 characters)
Both parameters are optional but recommended for better control over the animation output.
File Storage Notice: Files uploaded through our File Upload API are stored temporarily for only 14 days. After this period, the character URLs will become invalid and cause errors when using the Character Animation API. We recommend using third-party permanent storage solutions (such as AWS S3, Google Cloud Storage, or other cloud storage services) to ensure long-term availability of your character video files.
Ensure your character videos are between 1-4 seconds long. Videos outside this duration range may cause processing errors.
When the task is completed successfully (state: "success"), the resultJson field contains:
Copy
{ "character_id": "example_123456789"}
The character_id can be used to reference the generated character animation in subsequent operations.
For production use, we recommend using the callBackUrl parameter to receive automatic notifications when generation completes, rather than polling the status endpoint.
market/sora2/sora-2-characters.json post /api/v1/jobs/createTask
Copy
openapi: 3.0.0info: title: Sora-2-characters API description: Apikley Sora-2-characters API Documentation - Character Animation version: 1.0.0 contact: name: Technical Support email: [email protected]servers: - url: https://api.apikley.ru description: API Serversecurity: - BearerAuth: []paths: /api/v1/jobs/createTask: post: summary: Generate character animations using sora-2-characters operationId: sora-2-characters requestBody: required: true content: application/json: schema: type: object required: - model properties: model: type: string enum: - sora-2-characters default: sora-2-characters description: |- The model name to use for generation. Required field. - Must be `sora-2-characters` for this endpoint example: sora-2-characters callBackUrl: type: string format: uri description: >- The URL to receive generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when generation completes - Callback includes generated content URLs and task information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, use the Get Task Details endpoint to poll task status example: https://your-domain.com/api/callback input: type: object description: Input parameters for the generation task properties: character_file_url: description: >- Array of character video URLs to use as input for character animation. Only one video URL is allowed. The video must be between 1-4 seconds in duration. (File URL after upload, not file content; Accepted types: video/mp4, video/webm, video/avi; Max size: 10.0MB per file; Duration: 1-4 seconds) type: array items: type: string format: uri minItems: 1 maxItems: 1 example: - >- https://static.aiquickdraw.com/tools/example/character1.mp4 character_prompt: description: >- Description of the character and desired animation style (Max length: 5000 characters) type: string maxLength: 5000 example: >- A friendly cartoon character with expressive eyes and fluid movements safety_instruction: description: >- Safety guidelines and content restrictions for the animation (Max length: 5000 characters) type: string maxLength: 5000 example: >- Ensure the animation is family-friendly and contains no violent or inappropriate content required: - character_file_url example: model: sora-2-characters callBackUrl: https://your-domain.com/api/callback input: character_file_url: - https://static.aiquickdraw.com/tools/example/character1.mp4 character_prompt: >- A friendly cartoon character with expressive eyes and fluid movements safety_instruction: >- Ensure the animation is family-friendly and contains no violent or inappropriate content responses: '200': description: Request successful content: application/json: schema: allOf: - $ref: '#/components/schemas/ApiResponse' - type: object properties: data: type: object properties: taskId: type: string description: >- Task ID, can be used with Get Task Details endpoint to query task status example: 7118f712c1f35c9b8bf2ad1af68ad482 example: code: 200 msg: success data: taskId: task_sora-2-characters_1765174270120 '500': $ref: '#/components/responses/Error'components: schemas: ApiResponse: type: object properties: code: type: integer enum: - 200 - 401 - 402 - 404 - 422 - 429 - 455 - 500 - 501 - 505 description: >- Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled msg: type: string description: Response message, error description when failed example: success responses: Error: description: Server Error securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: API Key description: >- All APIs require authentication via Bearer Token. Get API Key: 1. Visit [API Key Management Page](https://app.apikley.ru/keys) to get your API Key Usage: Add to request header: Authorization: Bearer APIKLEY_API_KEY Note: - Keep your API Key secure and do not share it with others - If you suspect your API Key has been compromised, reset it immediately in the management page