Picsart Text2Video & Image2Video API
The Text2Video & Image2Video API from Picsart — 3 operation(s) for text2video & image2video.
The Text2Video & Image2Video API from Picsart — 3 operation(s) for text2video & image2video.
openapi: 3.0.0
info:
version: '1.0'
title: Picsart GenAI Ads Text2Video & Image2Video API
description: '[Official technical documentation portal](https://docs.picsart.io/)
[Developer Guidelines](https://picsart.io/terms)
'
servers:
- url: https://genai-api.picsart.io/v1
description: Production
security:
- apiKey: []
tags:
- name: Text2Video & Image2Video
paths:
/text2video:
post:
summary: Text2Video
operationId: genai-text2video
description: 'The *Text2Video* service helps generate a video based on the text introduced as input by the user. Considering the time and cost to generate videos, only one video will be generated per request (unlike the image generation services).
Note, that considering the big number of different models that are supported with this service, some limitations may apply. For example, some models (e.g. Grok Imagine Video / OVI) don''t support the option to disable sound. With these models the result video will always be generated regardless to the provided input params.
Similarly, note that different models do support different resolutions and output video quality parameters. In this case as well, the output video''s resolutions and quality are not guaranteed to be exactly the same as provided input params. The service will provide what''s "closer" to the original request. To make sure there are minimal deviations, we recommend doing test requests and checking the output video as well as doing research on original model''s official documentation.
'
tags:
- Text2Video & Image2Video
requestBody:
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Text2VideoParameters'
- $ref: '#/components/schemas/Text2VideoModels'
responses:
'202':
$ref: '#/components/responses/Text2ImageResponse'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'413':
$ref: '#/components/responses/413'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'431':
$ref: '#/components/responses/431'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/image2video:
post:
summary: Image2Video
operationId: genai-image2video
description: 'The *Image2Video* service helps generate a video based on the text introduced as input by the user. Considering the time and cost to generate videos, only one video will be generated per request (unlike the image generation services).
Note, that considering the big number of different models that are supported with this service, some limitations may apply. For example, some models (e.g. Grok Imagine Video / OVI) don''t support the option to disable sound. With these models the result video will always be generated regardless to the provided input params.
Similarly, note that different models do support different resolutions and output video quality parameters. In this case as well, the output video''s resolutions and quality are not guaranteed to be exactly the same as provided input params. The service will provide what''s "closer" to the original request. To make sure there are minimal deviations, we recommend doing test requests and checking the output video as well as doing research on original model''s official documentation.
'
tags:
- Text2Video & Image2Video
requestBody:
content:
multipart/form-data:
schema:
allOf:
- $ref: '#/components/schemas/ImageParameters'
- $ref: '#/components/schemas/Text2VideoParameters'
- $ref: '#/components/schemas/Image2VideoModels'
responses:
'202':
$ref: '#/components/responses/Text2ImageResponse'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'413':
$ref: '#/components/responses/413'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'431':
$ref: '#/components/responses/431'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
/video/{inference_id}:
get:
summary: Get the Video Generation result
operationId: genai-text2video-getresult
description: 'Use this method, along with inference id, to retrieve the generated video.
'
parameters:
- in: path
name: inference_id
schema:
type: string
required: true
description: The ID returned from the POST method.
example: 1116b57cb-1999-4bfd-8c42-c739a006a111
tags:
- Text2Video & Image2Video
responses:
'200':
$ref: '#/components/responses/Text2VideoStatusResponse'
'202':
$ref: '#/components/responses/Text2ImageResponse'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'402':
$ref: '#/components/responses/402'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'413':
$ref: '#/components/responses/413'
'415':
$ref: '#/components/responses/415'
'429':
$ref: '#/components/responses/429'
'431':
$ref: '#/components/responses/431'
'500':
$ref: '#/components/responses/500'
'503':
$ref: '#/components/responses/503'
components:
schemas:
Text2VideoModels:
type: object
properties:
model:
type: string
enum:
- urn:air:seedance:model:seedance:seedance-1.0-pro-text-to-video@1
- urn:air:seedance:model:seedance:seedance-1.0-pro-fast-text-to-video@1
- urn:air:seedance:model:seedance:seedance-1.5-pro-text-to-video@1
- urn:air:pika:model:pika:pika-text-to-video-v2.2@1
- urn:air:kling:model:kling:kling-v2-master-text-to-video@1
- urn:air:kling:model:kling:kling-v2-1-master-text-to-video@1
- urn:air:kling:model:kling:kling-v2-5-turbo-text-to-video@1
- urn:air:kling:model:kling:kling-v2-6-text-to-video@1
- urn:air:kling:model:kling:kling-v3-text-to-video@1
- urn:air:runway:model:runway:gen4.5-text-to-video@1
- urn:air:minimax:model:minimax:hailuo-02-pro-text-to-video@1
- urn:air:ltxv:model:ltxv:ltxv-2-text-to-video@1
- urn:air:ltxv:model:ltxv:ltxv-2-text-to-video-fast@1
- urn:air:ovi:model:ovi:ovi-text-to-video@1
- urn:air:xai:model:xai:grok-imagine-video-text-to-video@1
- urn:air:google:model:google:veo-2.0-text-to-video@1
- urn:air:google:model:google:veo-2.0-exp-text-to-video@1
- urn:air:google:model:google:veo-3.1-text-to-video@1
- urn:air:google:model:google:veo-3.1-fast-text-to-video@1
- urn:air:google:model:google:veo-3.1-preview-text-to-video@1
- urn:air:google:model:google:veo-3.1-fast-preview-text-to-video@1
- urn:air:wan:model:wan:wan-2.7-text-to-video@1
nullable: true
default: urn:air:wan:model:wan:wan-2.7-text-to-video@1
description: 'Optionally choose a specific AI model to use for this video generation.
If not specified, a default model will be applied. Please note that the default model may change over time as Picsart continues to improve performance and accuracy. Any change to the default will be made only after thorough testing and validation to ensure it delivers better results.
If you require consistent behavior or wish to evaluate different models on your own, we recommend explicitly setting this parameter.
'
Text2VideoParameters:
required:
- prompt
type: object
properties:
prompt:
type: string
description: The prompt.
width:
type: number
description: 'Desired width used to determine the aspect ratio and resolution tier. The actual output width is determined by the AI provider based on the closest matching supported aspect ratio.
Supported ratios vary by model (common: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9).
'
example: 512
default: 1024
maximum: 1024
minimum: 64
height:
type: number
description: 'Desired height used to determine the aspect ratio and resolution tier. The actual output height is determined by the AI provider based on the closest matching supported aspect ratio.
Supported ratios vary by model (common: 1:1, 4:3, 3:4, 16:9, 9:16, 21:9).
'
example: 512
default: 1024
maximum: 1024
minimum: 64
quality:
type: string
description: Video output quality/resolution.
enum:
- 480p
- 720p
- 1080p
default: 480p
audio:
type: boolean
default: false
description: 'Generate the video with audio or not.
Some models (e.g. Grok Imagine Video / OVI) don''t support the option to disable sound. With these models the result video will always be generated regardless to the provided input params.
'
length:
type: number
description: 'Desired video length in seconds. Mapped to the closest supported duration for the selected model.
'
default: 3
maximum: 20
minimum: 1
Image2VideoModels:
type: object
properties:
model:
type: string
enum:
- urn:air:seedance:model:seedance:seedance-1.0-pro-image-to-video@1
- urn:air:seedance:model:seedance:seedance-1.0-pro-fast-image-to-video@1
- urn:air:seedance:model:seedance:seedance-1.5-pro-image-to-video@1
- urn:air:kling:model:kling:kling-v2-master-image-to-video@1
- urn:air:kling:model:kling:kling-v2-1-master-image-to-video@1
- urn:air:kling:model:kling:kling-v2-1-image-to-video@1
- urn:air:kling:model:kling:kling-v2-5-turbo-image-to-video@1
- urn:air:kling:model:kling:kling-v2-6-image-to-video@1
- urn:air:kling:model:kling:kling-v3-image-to-video@1
- urn:air:runway:model:runway:gen4.5-image-to-video@1
- urn:air:luma:model:luma:ray-1-6-image-to-video@1
- urn:air:luma:model:luma:ray-2-image-to-video@1
- urn:air:luma:model:luma:ray-flash-2-image-to-video@1
- urn:air:luma:model:luma:photon-1-image-to-video@1
- urn:air:luma:model:luma:photon-flash-1-image-to-video@1
- urn:air:google:model:google:veo-2.0-image-to-video@1
- urn:air:google:model:google:veo-2.0-exp-image-to-video@1
- urn:air:google:model:google:veo-3.1-image-to-video@1
- urn:air:google:model:google:veo-3.1-fast-image-to-video@1
- urn:air:google:model:google:veo-3.1-preview-image-to-video@1
- urn:air:google:model:google:veo-3.1-fast-preview-image-to-video@1
- urn:air:wan:model:wan:wan-2.5-image-to-video@1
- urn:air:wan:model:wan:wan-2.6-image-to-video@1
- urn:air:wan:model:wan:wan-2.7-image-to-video@1
- urn:air:minimax:model:minimax:hailuo-02-pro-image-to-video@1
- urn:air:ovi:model:ovi:ovi-image-to-video@1
- urn:air:xai:model:xai:grok-imagine-video-image-to-video@1
nullable: true
default: urn:air:wan:model:wan:wan-2.7-image-to-video@1
description: 'Optionally choose a specific AI model to use for this video generation.
If not specified, a default model will be applied. Please note that the default model may change over time as Picsart continues to improve performance and accuracy. Any change to the default will be made only after thorough testing and validation to ensure it delivers better results.
If you require consistent behavior or wish to evaluate different models on your own, we recommend explicitly setting this parameter.
'
Error:
type: object
properties:
code:
type: integer
message:
type: string
detail:
type: string
required:
- detail
ImageParameters:
type: object
properties:
image:
description: Source image file (binary). (If this parameter is present, the other image source parameters must be empty.)
type: string
format: binary
image_url:
type: string
description: Source image URL. (If this parameter is present, the other image source parameters must be empty.)
maxLength: 2083
minLength: 1
format: uri
image_id:
type: string
deprecated: true
description: Deprecated. Source image ID of an image previously uploaded to Picsart or result image ID from a different API. (If this parameter is present, the other image source parameters must be empty.)
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'402':
description: Payment Required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'431':
description: Request Header Fields Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'413':
description: Request Entity Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
Text2ImageResponse:
description: Accepted.
content:
application/json:
schema:
type: object
properties:
status:
type: string
default: processing
enum:
- success
- error
- processing
nullable: false
inference_id:
type: string
nullable: true
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
Text2VideoStatusResponse:
description: Success.
content:
application/json:
schema:
type: object
properties:
status:
type: string
nullable: false
data:
type: object
properties:
id:
type: string
nullable: true
url:
type: string
nullable: false
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
'415':
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
headers:
X-Picsart-Correlation-Id:
schema:
type: string
description: The id which will help for troubleshooting request chain in the system.
X-Picsart-Ratelimit-Available:
schema:
type: integer
description: The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Limit:
schema:
type: integer
description: The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time.
X-Picsart-Ratelimit-Reset-Time:
schema:
type: integer
description: The time when the used request count resets and the number of available calls gets equal to the total number.
X-Picsart-Credit-Available:
schema:
type: integer
description: The remaining number of the credits on the balance.
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-Picsart-API-Key