> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensorpix.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an image to video job

> Create and queue one video job that uses one or more image frames.



## OpenAPI

````yaml https://backend.tensorpix.ai/api/schema/ post /api/v2/tensorshots/projects/{project_pk}/jobs/image-to-video/
openapi: 3.1.0
info:
  title: TensorPix OpenAPI Documentation
  version: 1.1.0
  termsOfService: https://tensorpix.ai/terms-conditions
  contact:
    name: TensorPix Dev Team
    email: devs@tensorpix.ai
servers:
  - url: https://backend.tensorpix.ai
security: []
tags:
  - name: tensorshots-projects
    description: Create, read, update, and delete TensorShots projects.
    x-displayName: Projects
    x-group: TensorShots Projects
  - name: tensorshots-shots
    description: Manage TensorShots project shots and shot voiceovers.
    x-displayName: Shots
    x-group: TensorShots Shots
  - name: tensorshots-assets
    description: Manage TensorShots audio, image, video, and shared assets.
    x-displayName: Assets
    x-group: TensorShots Assets
  - name: tensorshots-jobs
    description: Start, list, read, and delete TensorShots generation and render jobs.
    x-displayName: Jobs
    x-group: TensorShots Jobs
  - name: tensorshots-settings
    description: Manage TensorShots styles, music, voices, and prompt templates.
    x-displayName: Settings
    x-group: TensorShots Settings
  - name: real-estate-projects
    description: Create, read, update, and delete real estate projects.
    x-displayName: Projects
    x-group: Real Estate Projects
  - name: real-estate-shots
    description: Create, read, update, and delete real estate project shots.
    x-displayName: Shots
    x-group: Real Estate Shots
  - name: real-estate-assets
    description: Manage image, video, logo, and music assets for real estate projects.
    x-displayName: Assets
    x-group: Real Estate Assets
  - name: real-estate-voiceover
    description: Manage voiceover text, audio, and text limits for real estate projects.
    x-displayName: Voiceover
    x-group: Real Estate Voiceover
  - name: real-estate-jobs
    description: Start, list, read, and cancel jobs for real estate projects and shots.
    x-displayName: Jobs
    x-group: Real Estate Jobs
  - name: real-estate-branding
    description: Manage reusable agents and brand kits for real estate projects.
    x-displayName: Branding
    x-group: Real Estate Branding
  - name: real-estate-templates
    description: List video templates for real estate projects.
    x-displayName: Templates
    x-group: Real Estate Templates
externalDocs:
  url: https://docs.tensorpix.ai
  description: Check out the full TensorPix documentation.
paths:
  /api/v2/tensorshots/projects/{project_pk}/jobs/image-to-video/:
    post:
      tags:
        - tensorshots-jobs
      summary: Create an image to video job
      description: Create and queue one video job that uses one or more image frames.
      operationId: v2_tensorshots_projects_jobs_image_to_video_create
      parameters:
        - in: path
          name: project_pk
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateImageToVideoJob'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateImageToVideoJob'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateImageToVideoJob'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateImageToVideoJob'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail: {}
                  error_id:
                    type: string
                    format: uuid
                additionalProperties: true
          description: ''
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedError'
          description: ''
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
          description: ''
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
          description: ''
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
          description: ''
      security:
        - tokenAuth: []
        - jwtAuth: []
components:
  schemas:
    CreateImageToVideoJob:
      type: object
      description: Serializer for creating image-to-video jobs.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        error_message:
          type: string
          readOnly: true
          description: Error details if job failed.
        status:
          allOf:
            - $ref: '#/components/schemas/TensorshotsJobStatusEnum'
          readOnly: true
          description: |-
            Current job status.

            * `queued` - Queued
            * `processing` - Processing
            * `expired` - Expired
            * `cancelled` - Cancelled
            * `completed` - Completed
            * `failed` - Failed
        description:
          type: string
          readOnly: true
          description: Human-readable job description.
        started_at:
          type: string
          format: date-time
          readOnly: true
          description: When job processing started.
        finished_at:
          type:
            - string
            - 'null'
          format: date-time
          readOnly: true
          description: When the job processing successfully finished.
        processing_time_seconds:
          type: number
          format: double
          description: |-
            Calculate job processing time in seconds.
            If the job is still processing, calculate time since started.
            If the job was cancelled, deleted, calculate time until that point.
            if the job is completed, calculate time until finished.
          readOnly: true
        cost_credits:
          type: string
          format: decimal
          pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
          readOnly: true
          description: Job cost in 🪙 Credits.
        prompt:
          type: string
          description: Prompt text to generate from.
          maxLength: 80000
        model_name:
          $ref: '#/components/schemas/CreateImageToVideoJobModelNameEnum'
        model_config:
          description: >-
            Model-specific configuration parameters (temperature, style,
            quality, etc.).
        style_settings:
          type: array
          items:
            type: string
            format: uuid
          description: >-
            Style presets applied to this job (camera, lighting, generation,
            etc.)
        start_frame:
          type:
            - string
            - 'null'
          format: uuid
          description: Optional image to use as the starting frame of the video.
        last_frame:
          type:
            - string
            - 'null'
          format: uuid
          description: Optional image to use as the ending frame of the video.
        requested_resolution:
          type: string
          description: Requested video resolution (e.g. 480p).
          maxLength: 20
        requested_video_duration:
          type: number
          format: double
          minimum: 1
          description: Requested video duration in seconds.
      required:
        - cost_credits
        - created_at
        - description
        - error_message
        - finished_at
        - id
        - model_name
        - processing_time_seconds
        - prompt
        - requested_resolution
        - requested_video_duration
        - started_at
        - status
    UnauthenticatedError:
      type: object
      description: Serializer stub used for simple documented error payloads.
      properties:
        detail:
          type: string
        error_id:
          type: string
          format: uuid
      required:
        - detail
        - error_id
    ForbiddenError:
      type: object
      description: Serializer stub used for simple documented error payloads.
      properties:
        detail:
          type: string
        error_id:
          type: string
          format: uuid
      required:
        - detail
        - error_id
    NotFoundError:
      type: object
      description: Serializer stub used for simple documented error payloads.
      properties:
        detail:
          type: string
        error_id:
          type: string
          format: uuid
      required:
        - detail
        - error_id
    RateLimitError:
      type: object
      description: Serializer stub used for simple documented error payloads.
      properties:
        detail:
          type: string
        error_id:
          type: string
          format: uuid
      required:
        - detail
        - error_id
    TensorshotsJobStatusEnum:
      enum:
        - queued
        - processing
        - expired
        - cancelled
        - completed
        - failed
      type: string
      description: |-
        * `queued` - Queued
        * `processing` - Processing
        * `expired` - Expired
        * `cancelled` - Cancelled
        * `completed` - Completed
        * `failed` - Failed
    CreateImageToVideoJobModelNameEnum:
      enum:
        - atlas_ultra_i2v
        - atlas_ultra_nsfw_i2v
        - gemini_omni_flash_1_1_i2v
        - gemini_omni_flash_i2v
        - grok_imagine_video_1_5_i2v
        - grok_imagine_video_i2v
        - happy_horse_1_0_i2v
        - hexal_standard_i2v
        - hexal_standard_nsfw_i2v
        - hexal_ultra_i2v
        - hexal_ultra_nsfw_i2v
        - hexal_fast_i2v
        - kling_2_6_pro_i2v
        - kling_3_0_turbo_standard_i2v
        - kling_3_0_turbo_pro_i2v
        - kling_3_0_i2v
        - kling_3_0_pro_i2v
        - minimax_h3_i2v
        - seedance_2_5_i2v
        - seedance_2_0_i2v
        - seedance_2_0_fast_i2v
        - sora_2_i2v
        - sora_2_pro_i2v
        - veo_3_1_fal_i2v
        - veo_3_1_fal_first_last_frame_i2v
        - veo_3_1_fast_generate_preview_v2
        - veo_3_1_fast_fal_first_last_frame_i2v
        - veo_3_1_generate_preview
        - veo_3_1_fast_generate_preview
        - wan_2_7_i2v
      type: string
      description: >-
        * `atlas_ultra_i2v` - atlas_ultra_i2v

        * `atlas_ultra_nsfw_i2v` - atlas_ultra_nsfw_i2v

        * `gemini_omni_flash_1_1_i2v` - gemini_omni_flash_1_1_i2v

        * `gemini_omni_flash_i2v` - gemini_omni_flash_i2v

        * `grok_imagine_video_1_5_i2v` - grok_imagine_video_1_5_i2v

        * `grok_imagine_video_i2v` - grok_imagine_video_i2v

        * `happy_horse_1_0_i2v` - happy_horse_1_0_i2v

        * `hexal_standard_i2v` - hexal_standard_i2v

        * `hexal_standard_nsfw_i2v` - hexal_standard_nsfw_i2v

        * `hexal_ultra_i2v` - hexal_ultra_i2v

        * `hexal_ultra_nsfw_i2v` - hexal_ultra_nsfw_i2v

        * `hexal_fast_i2v` - hexal_fast_i2v

        * `kling_2_6_pro_i2v` - kling_2_6_pro_i2v

        * `kling_3_0_turbo_standard_i2v` - kling_3_0_turbo_standard_i2v

        * `kling_3_0_turbo_pro_i2v` - kling_3_0_turbo_pro_i2v

        * `kling_3_0_i2v` - kling_3_0_i2v

        * `kling_3_0_pro_i2v` - kling_3_0_pro_i2v

        * `minimax_h3_i2v` - minimax_h3_i2v

        * `seedance_2_5_i2v` - seedance_2_5_i2v

        * `seedance_2_0_i2v` - seedance_2_0_i2v

        * `seedance_2_0_fast_i2v` - seedance_2_0_fast_i2v

        * `sora_2_i2v` - sora_2_i2v

        * `sora_2_pro_i2v` - sora_2_pro_i2v

        * `veo_3_1_fal_i2v` - veo_3_1_fal_i2v

        * `veo_3_1_fal_first_last_frame_i2v` - veo_3_1_fal_first_last_frame_i2v

        * `veo_3_1_fast_generate_preview_v2` - veo_3_1_fast_generate_preview_v2

        * `veo_3_1_fast_fal_first_last_frame_i2v` -
        veo_3_1_fast_fal_first_last_frame_i2v

        * `veo_3_1_generate_preview` - veo_3_1_generate_preview

        * `veo_3_1_fast_generate_preview` - veo_3_1_fast_generate_preview

        * `wan_2_7_i2v` - wan_2_7_i2v
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````