> ## 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.

# Add demo photos to a real estate project

> Populate one empty project with fixed demo image assets and ordered shots. The response contains the new shots. This action does not start image description, shot video generation, voiceover generation, or rendering.



## OpenAPI

````yaml https://backend.tensorpix.ai/api/schema/ post /api/v2/real-estate/projects/{project_id}/use-demo-photos/
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: >-
      Manage real estate projects, property data, render settings, previews, and
      cost estimates.
    x-displayName: Projects
    x-group: Real Estate Projects
  - name: real-estate-shots
    description: >-
      Manage ordered project shots, first frames, generation prompts, crops,
      timing, speed, and transitions.
    x-displayName: Shots
    x-group: Real Estate Shots
  - name: real-estate-assets
    description: >-
      Manage project image assets, video assets, logos, and uploaded background
      music.
    x-displayName: Assets
    x-group: Real Estate Assets
  - name: real-estate-voiceover
    description: >-
      Manage project voiceover text, generated audio, caption timing, and text
      limits.
    x-displayName: Voiceover
    x-group: Real Estate Voiceover
  - name: real-estate-jobs
    description: >-
      Start, list, read, and poll property import, image edit, shot video, full
      video, and render jobs.
    x-displayName: Jobs
    x-group: Real Estate Jobs
  - name: real-estate-branding
    description: >-
      Manage reusable agent profiles and brand kits, then copy them into
      projects.
    x-displayName: Branding
    x-group: Real Estate Branding
  - name: real-estate-templates
    description: List intro and outro templates and manage project template images.
    x-displayName: Templates
    x-group: Real Estate Templates
externalDocs:
  url: https://docs.tensorpix.ai
  description: Check out the full TensorPix documentation.
paths:
  /api/v2/real-estate/projects/{project_id}/use-demo-photos/:
    post:
      tags:
        - real-estate-projects
      summary: Add demo photos to a real estate project
      description: >-
        Populate one empty project with fixed demo image assets and ordered
        shots. The response contains the new shots. This action does not start
        image description, shot video generation, voiceover generation, or
        rendering.
      operationId: real_estate_project_use_demo_photos_post
      parameters:
        - in: path
          name: project_id
          schema:
            type: string
            format: uuid
          required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RealEstateShot'
          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: ''
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
          description: ''
      security:
        - tokenAuth: []
        - jwtAuth: []
components:
  schemas:
    RealEstateShot:
      type: object
      description: Serializer for real-estate shot detail responses.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        project_real_estate:
          type: string
          format: uuid
          readOnly: true
          description: Real-estate project this shot belongs to.
        order:
          type: integer
          readOnly: true
          description: Zero based position in the project timeline.
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        image:
          oneOf:
            - $ref: '#/components/schemas/ImageAsset'
            - type: 'null'
          readOnly: true
          description: >-
            Original shot frame, or the current first frame when no original is
            saved.
        first_frame:
          $ref: '#/components/schemas/ImageAsset'
        original_first_frame:
          $ref: '#/components/schemas/ImageAsset'
        animation_prompt:
          $ref: '#/components/schemas/TextAsset'
        vfx_prompt:
          type: string
          readOnly: true
          description: Original VFX prompt sent by the client for this shot.
        description_job:
          type: string
          format: uuid
          readOnly: true
          description: >-
            Job that stores the current first frame description, when one
            exists.
        camera_movement:
          allOf:
            - $ref: '#/components/schemas/CameraMovementEnum'
          readOnly: true
          description: |-
            Camera motion directive used for real-estate shot video generation.

            * `auto` - Auto
            * `static` - Static
            * `pan_left` - Pan Left
            * `pan_right` - Pan Right
            * `orbit_left_to_right` - Orbit Left To Right
            * `orbit_right_to_left` - Orbit Right To Left
            * `truck_left` - Truck Left
            * `truck_right` - Truck Right
            * `dolly_in` - Dolly In
            * `dolly_out` - Dolly Out
            * `tilt_up` - Tilt Up
            * `tilt_down` - Tilt Down
        transition_in:
          allOf:
            - $ref: '#/components/schemas/TransitionInEnum'
          readOnly: true
          description: |-
            Transition effect used when this shot enters the project timeline.

            * `none` - None
            * `fade` - Fade
        transition_out:
          allOf:
            - $ref: '#/components/schemas/TransitionOutEnum'
          readOnly: true
          description: >-
            Reserved transition effect used when this shot leaves the project
            timeline.


            * `none` - None

            * `fade` - Fade
        playback_speed:
          type: number
          format: double
          readOnly: true
          description: Render-time playback speed for the selected video.
        requested_duration_s:
          type: number
          format: double
          description: Read only source range duration before playback speed.
          readOnly: true
        duration_s:
          type: number
          format: double
          description: Final shot duration after playback speed.
          readOnly: true
        crop_x:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
          description: Saved crop left coordinate in relative image units from 0.0 to 1.0.
        crop_y:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
          description: Saved crop top coordinate in relative image units from 0.0 to 1.0.
        crop_width:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
          description: Saved crop width in relative image units from 0.0 to 1.0.
        crop_height:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
          description: Saved crop height in relative image units from 0.0 to 1.0.
        video_start_time_s:
          type: number
          format: double
          readOnly: true
          description: Start offset in seconds within the selected source video.
        video_end_time_s:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
          description: End offset in seconds within the selected source video.
        selected_video:
          $ref: '#/components/schemas/VideoAsset'
        rendered_video:
          $ref: '#/components/schemas/VideoAsset'
      required:
        - animation_prompt
        - camera_movement
        - created_at
        - crop_height
        - crop_width
        - crop_x
        - crop_y
        - description_job
        - duration_s
        - first_frame
        - id
        - image
        - order
        - original_first_frame
        - playback_speed
        - project_real_estate
        - rendered_video
        - requested_duration_s
        - selected_video
        - transition_in
        - transition_out
        - vfx_prompt
        - video_end_time_s
        - video_start_time_s
    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
    ServerError:
      type: object
      description: Describe errors created by the global exception handler.
      properties:
        error:
          type: string
        error_id:
          type: string
          format: uuid
      required:
        - error
        - error_id
    ImageAsset:
      type: object
      description: Serializer for ImageAsset with basic fields.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Human-readable asset name.
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        file:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: >-
            Image file stored on S3. Pre-signed URL may expire. To generate a
            new URL, call the endpoint again. If the field is `null`, the image
            hasn't been completely uploaded.
        thumbnail:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: Image thumbnail
        external_url:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: External URL if image is hosted elsewhere (not on our S3).
        width:
          type: integer
          readOnly: true
          description: Image width in pixels.
        height:
          type: integer
          readOnly: true
          description: Image height in pixels.
        file_size:
          type: integer
          readOnly: true
          description: File size in bytes. Null for text-based images.
        tags:
          type: array
          items:
            type: string
          readOnly: true
        name_tag:
          type: string
          readOnly: true
          description: >-
            Tag identifier for the asset that's based on asset's name. Used on
            frontend to reference the asset '@Parrot-1')
          pattern: ^[-a-zA-Z0-9_]+$
      required:
        - created_at
        - external_url
        - file
        - file_size
        - height
        - id
        - name
        - name_tag
        - tags
        - thumbnail
        - width
    TextAsset:
      type: object
      description: Serializer for TextAsset with basic fields.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        text:
          type: string
          readOnly: true
          description: Generated text content.
      required:
        - created_at
        - id
        - text
    CameraMovementEnum:
      enum:
        - auto
        - static
        - pan_left
        - pan_right
        - orbit_left_to_right
        - orbit_right_to_left
        - truck_left
        - truck_right
        - dolly_in
        - dolly_out
        - tilt_up
        - tilt_down
      type: string
      description: |-
        * `auto` - Auto
        * `static` - Static
        * `pan_left` - Pan Left
        * `pan_right` - Pan Right
        * `orbit_left_to_right` - Orbit Left To Right
        * `orbit_right_to_left` - Orbit Right To Left
        * `truck_left` - Truck Left
        * `truck_right` - Truck Right
        * `dolly_in` - Dolly In
        * `dolly_out` - Dolly Out
        * `tilt_up` - Tilt Up
        * `tilt_down` - Tilt Down
    TransitionInEnum:
      enum:
        - none
        - fade
      type: string
      description: |-
        * `none` - None
        * `fade` - Fade
    TransitionOutEnum:
      enum:
        - none
        - fade
      type: string
      description: |-
        * `none` - None
        * `fade` - Fade
    VideoAsset:
      type: object
      description: Serializer for VideoAsset with basic fields.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Human-readable asset name.
        name_tag:
          type: string
          readOnly: true
          description: >-
            Tag identifier for the asset that's based on asset's name. Used on
            frontend to reference the asset '@Parrot-1')
          pattern: ^[-a-zA-Z0-9_]+$
        tags:
          type: array
          items:
            type: string
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        file:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: >-
            Video file stored on S3. Pre-signed URL may expire. To generate a
            new URL, call the endpoint again. If the field is `null`, it means
            the video hasn't been completely uploaded.
        external_url:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: External URL if video is hosted elsewhere (not on our S3).
        thumbnail:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: Image thumbnail of the video
        last_frame:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: Last frame of the video as an image.
        width:
          type: integer
          readOnly: true
          description: Video width in pixels.
        height:
          type: integer
          readOnly: true
          description: Video height in pixels.
        file_size:
          type: integer
          readOnly: true
          description: File size in bytes.
        num_frames:
          type: integer
          readOnly: true
          description: Total number of frames in the video.
        framerate:
          type: number
          format: double
          readOnly: true
          description: Framerate in frames per second (fps).
        duration_s:
          type: number
          format: double
          description: Calculate video duration in seconds.
          readOnly: true
        bitrate:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Video bitrate in bits per second.
        codec_id:
          type:
            - string
            - 'null'
          readOnly: true
          description: Video codec identifier (e.g., 'h264', 'vp9').
        bit_depth:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Bit depth of the video.
        chroma_subsampling:
          type:
            - string
            - 'null'
          readOnly: true
          description: Chroma subsampling format (e.g., '4:2:0').
        color_space:
          type:
            - string
            - 'null'
          readOnly: true
          description: Color space (e.g., 'bt709', 'bt2020').
      required:
        - bit_depth
        - bitrate
        - chroma_subsampling
        - codec_id
        - color_space
        - created_at
        - duration_s
        - external_url
        - file
        - file_size
        - framerate
        - height
        - id
        - last_frame
        - name
        - name_tag
        - num_frames
        - tags
        - thumbnail
        - width
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.