Picsart Text2Video & Image2Video API

The Text2Video & Image2Video API from Picsart — 3 operation(s) for text2video & image2video.

OpenAPI Specification

picsart-text2video-image2video-api-openapi.yml Raw ↑
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