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

# Update a real estate project

> Update selected data for one real estate project owned by the current account.



## OpenAPI

````yaml https://backend.tensorpix.ai/api/schema/ patch /api/v2/real-estate/projects/{project_id}/
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/real-estate/projects/{project_id}/:
    patch:
      tags:
        - real-estate-projects
      summary: Update a real estate project
      description: >-
        Update selected data for one real estate project owned by the current
        account.
      operationId: real_estate_project_detail_patch
      parameters:
        - in: path
          name: project_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUpdateProjectRealEstate'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUpdateProjectRealEstate'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUpdateProjectRealEstate'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectRealEstate'
          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:
    PatchedUpdateProjectRealEstate:
      type: object
      description: Serializer for updating a real estate project.
      properties:
        name:
          type: string
          maxLength: 255
        description:
          type: string
          description: Project description
          maxLength: 1200
        background_music:
          type:
            - string
            - 'null'
          format: uuid
        background_music_volume:
          type: number
          format: double
          maximum: 1
          minimum: 0
          description: Background music volume from 0.0 to 1.0.
        speaker_voice:
          type:
            - string
            - 'null'
          format: uuid
          description: Selected voice speaker for project narration.
        is_voiceover_enabled:
          type: boolean
          description: Whether this real-estate project uses project-level voiceover.
        is_captions_enabled:
          type: boolean
          description: Whether this real-estate project renders captions on the video.
        video_style:
          description: |-
            Style of the real estate video.

            * `just_listed` - Just Listed
            * `just_sold` - Just Sold
            * `coming_soon` - Coming Soon
            * `for_rent` - For Rent
            * `price_drop` - Price Drop
          oneOf:
            - $ref: '#/components/schemas/VideoStyleEnum'
            - $ref: '#/components/schemas/BlankEnum'
            - $ref: '#/components/schemas/NullEnum'
        video_format:
          allOf:
            - $ref: '#/components/schemas/VideoFormatEnum'
          description: |-
            Video aspect ratio format.

            * `9:16` - 9:16
            * `4:5` - 4:5
            * `1:1` - 1:1
            * `16:9` - 16:9
        model_code_name:
          allOf:
            - $ref: '#/components/schemas/ModelCodeNameEnum'
          description: |-
            Public model code used for real-estate video generation.

            * `medium` - Medium
            * `high` - High
            * `extra_high` - Extra high
            * `ultra` - Ultra
        street_address:
          type: string
          maxLength: 255
        suburb:
          type: string
          maxLength: 120
        state:
          type: string
          maxLength: 120
        country_name:
          type: string
          maxLength: 120
        city_name:
          type: string
          maxLength: 120
        num_bedrooms:
          type:
            - integer
            - 'null'
          maximum: 32767
          minimum: 0
        num_bathrooms:
          type:
            - integer
            - 'null'
          maximum: 32767
          minimum: 0
        num_car_parking_spots:
          type:
            - integer
            - 'null'
          maximum: 32767
          minimum: 0
        num_floors:
          type:
            - integer
            - 'null'
          maximum: 32767
          minimum: 0
        price_display:
          type: string
          maxLength: 120
        land_size_value:
          type:
            - number
            - 'null'
          format: double
        land_size_unit:
          oneOf:
            - $ref: '#/components/schemas/LandSizeUnitEnum'
            - $ref: '#/components/schemas/BlankEnum'
        real_estate_type:
          oneOf:
            - $ref: '#/components/schemas/RealEstateTypeEnum'
            - $ref: '#/components/schemas/BlankEnum'
        additional_information:
          type: string
        intro_template_key:
          type: string
          maxLength: 120
        outro_template_key:
          type: string
          maxLength: 120
        intro_template_overrides:
          type: object
          additionalProperties: {}
        outro_template_overrides:
          type: object
          additionalProperties: {}
        new_shots_order:
          type: array
          items:
            type: string
            format: uuid
          description: The new order of shot IDs in the project.
    ProjectRealEstate:
      type: object
      description: Serializer for real estate project detail responses.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Project title
        description:
          type: string
          readOnly: true
          description: Project description
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        updated_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was last updated.
        background_music:
          $ref: '#/components/schemas/AudioAsset'
        background_music_volume:
          type: number
          format: double
          readOnly: true
          description: Background music volume from 0.0 to 1.0.
        logo_asset:
          $ref: '#/components/schemas/ImageAsset'
        speaker_voice:
          $ref: '#/components/schemas/SpeakerVoiceSettings'
        is_voiceover_enabled:
          type: boolean
          readOnly: true
          description: Whether this real-estate project uses project-level voiceover.
        is_captions_enabled:
          type: boolean
          readOnly: true
          description: Whether this real-estate project renders captions on the video.
        video_style:
          readOnly: true
          description: |-
            Style of the real estate video.

            * `just_listed` - Just Listed
            * `just_sold` - Just Sold
            * `coming_soon` - Coming Soon
            * `for_rent` - For Rent
            * `price_drop` - Price Drop
          oneOf:
            - $ref: '#/components/schemas/VideoStyleEnum'
            - $ref: '#/components/schemas/NullEnum'
        video_format:
          allOf:
            - $ref: '#/components/schemas/VideoFormatEnum'
          readOnly: true
          description: |-
            Video aspect ratio format.

            * `9:16` - 9:16
            * `4:5` - 4:5
            * `1:1` - 1:1
            * `16:9` - 16:9
        model_code_name:
          allOf:
            - $ref: '#/components/schemas/ModelCodeNameEnum'
          readOnly: true
          description: |-
            Public model code used for real-estate video generation.

            * `medium` - Medium
            * `high` - High
            * `extra_high` - Extra high
            * `ultra` - Ultra
        requested_output_width:
          type: integer
          readOnly: true
        requested_output_height:
          type: integer
          readOnly: true
        requested_video_aspect_ratio:
          type: string
          description: >-
            Run requested video aspect ratio and return the result used by the
            caller.


            Run the main steps in order and keep side effects in this scope.


            Returns:
                Result value returned to the caller.
          readOnly: true
        requested_duration_s:
          type: number
          format: double
          readOnly: true
        street_address:
          type: string
          readOnly: true
        suburb:
          type: string
          readOnly: true
        state:
          type: string
          readOnly: true
        country_name:
          type: string
          readOnly: true
        city_name:
          type: string
          readOnly: true
        num_bedrooms:
          type:
            - integer
            - 'null'
          readOnly: true
        num_bathrooms:
          type:
            - integer
            - 'null'
          readOnly: true
        num_car_parking_spots:
          type:
            - integer
            - 'null'
          readOnly: true
        num_floors:
          type:
            - integer
            - 'null'
          readOnly: true
        price_display:
          type: string
          readOnly: true
        land_size_value:
          type:
            - number
            - 'null'
          format: double
          readOnly: true
        land_size_unit:
          allOf:
            - $ref: '#/components/schemas/LandSizeUnitEnum'
          readOnly: true
        real_estate_type:
          allOf:
            - $ref: '#/components/schemas/RealEstateTypeEnum'
          readOnly: true
        additional_information:
          type: string
          readOnly: true
        intro_template_key:
          type: string
          readOnly: true
        outro_template_key:
          type: string
          readOnly: true
        intro_template_overrides:
          type: object
          additionalProperties: {}
          description: Return intro overrides with declared image UUIDs expanded to assets.
          readOnly: true
        outro_template_overrides:
          type: object
          additionalProperties: {}
          description: Return outro overrides with declared image UUIDs expanded to assets.
          readOnly: true
        shot_count:
          type: integer
          readOnly: true
        num_full_rendered_videos:
          type: integer
          readOnly: true
        ready_for_generation:
          type: boolean
          description: |-
            Return the ready for generation value for the current request flow.

            Run the main steps in order and keep side effects in this scope.

            Args:
                obj: Input value used by this function.

            Returns:
                Result value returned to the caller.
          readOnly: true
        voiceover:
          allOf:
            - $ref: '#/components/schemas/VoiceoverAsset'
          readOnly: true
      required:
        - additional_information
        - background_music
        - background_music_volume
        - city_name
        - country_name
        - created_at
        - description
        - id
        - intro_template_key
        - intro_template_overrides
        - is_captions_enabled
        - is_voiceover_enabled
        - land_size_unit
        - land_size_value
        - logo_asset
        - model_code_name
        - name
        - num_bathrooms
        - num_bedrooms
        - num_car_parking_spots
        - num_floors
        - num_full_rendered_videos
        - outro_template_key
        - outro_template_overrides
        - price_display
        - ready_for_generation
        - real_estate_type
        - requested_duration_s
        - requested_output_height
        - requested_output_width
        - requested_video_aspect_ratio
        - shot_count
        - speaker_voice
        - state
        - street_address
        - suburb
        - updated_at
        - video_format
        - video_style
        - voiceover
    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
    VideoStyleEnum:
      enum:
        - just_listed
        - just_sold
        - coming_soon
        - for_rent
        - price_drop
      type: string
      description: |-
        * `just_listed` - Just Listed
        * `just_sold` - Just Sold
        * `coming_soon` - Coming Soon
        * `for_rent` - For Rent
        * `price_drop` - Price Drop
    BlankEnum:
      enum:
        - ''
    NullEnum:
      type: 'null'
    VideoFormatEnum:
      enum:
        - '9:16'
        - '4:5'
        - '1:1'
        - '16:9'
      type: string
      description: |-
        * `9:16` - 9:16
        * `4:5` - 4:5
        * `1:1` - 1:1
        * `16:9` - 16:9
    ModelCodeNameEnum:
      enum:
        - medium
        - high
        - extra_high
        - ultra
      type: string
      description: |-
        * `medium` - Medium
        * `high` - High
        * `extra_high` - Extra high
        * `ultra` - Ultra
    LandSizeUnitEnum:
      enum:
        - sqm
        - sqft
        - hectares
        - acres
      type: string
      description: |-
        * `sqm` - Square Meters
        * `sqft` - Square Feet
        * `hectares` - Hectares
        * `acres` - Acres
    RealEstateTypeEnum:
      enum:
        - house
        - townhome
        - apartment
        - condo
        - villa
        - land
        - commercial
        - other
      type: string
      description: |-
        * `house` - House
        * `townhome` - Townhome
        * `apartment` - Apartment
        * `condo` - Condo
        * `villa` - Villa
        * `land` - Land
        * `commercial` - Commercial
        * `other` - Other
    AudioAsset:
      type: object
      description: Serializer for AudioAsset 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: >-
            Audio file stored on S3. Pre-signed URL may expire. To generate a
            new URL, call the endpoint again. If the field is `null`, the audio
            hasn't been completely uploaded.
        duration_s:
          type: number
          format: double
          readOnly: true
          description: Audio duration in seconds.
        file_size:
          type: integer
          readOnly: true
          description: File size in bytes.
        bitrate:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Audio bitrate in bits per second.
        sample_rate:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Audio sample rate in Hz (e.g., 44100, 48000).
        channels:
          type:
            - integer
            - 'null'
          readOnly: true
          description: Number of audio channels (1=mono, 2=stereo, etc.).
      required:
        - bitrate
        - channels
        - created_at
        - duration_s
        - file
        - file_size
        - id
        - name
        - sample_rate
    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
    SpeakerVoiceSettings:
      type: object
      description: |-
        Serializer for SpeakerVoiceSettings (read-only for users).

        Users can view and select from available voices.
        Voice management is restricted to admins via Django admin.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        name:
          type: string
          readOnly: true
        language_code:
          type: string
          readOnly: true
          description: DEPRECATED in favor of `language`.
        language:
          type: string
          readOnly: true
          description: Language shorthand for this voice (e.g., 'en' for English).
        accent:
          type: string
          readOnly: true
        gender:
          type: string
          readOnly: true
        use_case:
          type: string
          readOnly: true
          description: >-
            Optional field to indicate the intended use case for this voice
            (e.g., narration, character dialogue).
        descriptive:
          type: string
          readOnly: true
          description: The descriptive of the voice, e.g. calm
        cloned_by_count:
          type: integer
          readOnly: true
          description: >-
            Number of times this voice has been cloned or used as a base for
            derivative voices. Can be used to identify popular voices and
            prioritize them in the UI.
        description:
          type:
            - string
            - 'null'
          readOnly: true
          description: Description of the speaker voice setting
        avatar_image_url:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: URL to an S3-hosted avatar image representing the voice.
        audio_preview_url:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: URL to an S3-hosted audio preview demonstrating the voice.
        supported_languages:
          type: array
          items:
            $ref: '#/components/schemas/SpeakerVoiceLanguage'
          readOnly: true
      required:
        - accent
        - audio_preview_url
        - avatar_image_url
        - cloned_by_count
        - created_at
        - description
        - descriptive
        - gender
        - id
        - language
        - language_code
        - name
        - supported_languages
        - use_case
    VoiceoverAsset:
      type: object
      description: Serializer for VoiceoverAsset with nested audio and text.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        audio_asset:
          allOf:
            - $ref: '#/components/schemas/AudioAsset'
          readOnly: true
        caption_asset:
          allOf:
            - $ref: '#/components/schemas/CaptionAsset'
          readOnly: true
        text_asset:
          allOf:
            - $ref: '#/components/schemas/TextAsset'
          readOnly: true
        metadata:
          readOnly: true
          description: Voiceover - e.g. extra description fields
      required:
        - audio_asset
        - caption_asset
        - created_at
        - id
        - metadata
        - text_asset
    SpeakerVoiceLanguage:
      type: object
      description: Serializer for supported language variants of a voice.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        locale:
          type:
            - string
            - 'null'
          readOnly: true
          description: Unique lowercase BCP-47 language code (e.g., en-US).
        language:
          type: string
          readOnly: true
          description: Display name for this language (e.g., en).
        accent:
          type:
            - string
            - 'null'
          readOnly: true
          description: >-
            Optional accent or dialect information (e.g., Southern US,
            Castilian).
        preview_url:
          type:
            - string
            - 'null'
          format: uri
          readOnly: true
          description: URL to an S3-hosted audio preview demonstrating the language.
      required:
        - accent
        - id
        - language
        - locale
        - preview_url
    CaptionAsset:
      type: object
      description: Serialize one generated caption asset.
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: Datetime when the record was created.
        name:
          type: string
          readOnly: true
          description: Human-readable asset name.
        file:
          type: string
          format: uri
          readOnly: true
      required:
        - created_at
        - file
        - id
        - name
    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
  securitySchemes:
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````