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

# Upload a real estate template image

> Upload one image asset and assign it to an image field in the selected intro or outro template. The field must exist in the selected template definition. The image appears during the next final render.



## OpenAPI

````yaml https://backend.tensorpix.ai/api/schema/ post /api/v2/real-estate/projects/{project_id}/template-images/
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}/template-images/:
    post:
      tags:
        - real-estate-templates
      summary: Upload a real estate template image
      description: >-
        Upload one image asset and assign it to an image field in the selected
        intro or outro template. The field must exist in the selected template
        definition. The image appears during the next final render.
      operationId: real_estate_project_template_image_upload_post
      parameters:
        - in: path
          name: project_id
          schema:
            type: string
            format: uuid
          required: true
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ProjectRealEstateTemplateImageUpload'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageAsset'
          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:
    ProjectRealEstateTemplateImageUpload:
      type: object
      description: Validate an image upload for one selected template image field.
      properties:
        kind:
          $ref: '#/components/schemas/KindEnum'
        field_name:
          type: string
          maxLength: 120
        file:
          type: string
          format: uri
      required:
        - field_name
        - file
        - kind
    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
    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
    KindEnum:
      enum:
        - intro
        - outro
      type: string
      description: |-
        * `intro` - intro
        * `outro` - outro
  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.