Immersity Cloud API

Credit-metered REST API for Spatial AI media transformation — estimate a disparity (depth) map from a single 2D image, generate 3D animations from an image plus its disparity map, render stereo side-by-side and top-bottom pairs, encode and decode Leia Image Format (LIF) files, convert 2D video to 3D or Apple Vision spatial video, read product credit prices, and mint presigned Leia Storage upload URLs. Results are written directly to a caller-supplied presigned URL; long-running video jobs notify a callbackUrl.

Documentation

Specifications

Other Resources

OpenAPI Specification

leia-immersity-cloud-api-openapi.yml Raw ↑
openapi: 3.0.0
paths:
  /api/v1/prices:
    get:
      operationId: ProductPricingController_getPrices
      summary: Get prices for all products
      description: This endpoint returns prices for all products
      parameters: []
      responses:
        '200':
          description: The prices have been successfully retrieved.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Prices'
        '401':
          description: Unauthorized
      security:
      - bearer: []
      tags:
      - Product Pricing
  /api/v1/disparity:
    post:
      operationId: TransactionController_estimateMonoDepth
      x-codeSamples:
      - label: Python
        lang: Python
        source: "import uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/disparity',\
          \ \n    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputImageUrl': ORIGINAL_IMAGE_URL,  # this can be any image\
          \ you want to get disparity for\n        'resultPresignedUrl': put_disparity_presigned_url  # acquired in previous\
          \ step\n    },\n    timeout=5 * 60  # expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/disparity',\n    {\n        correlationId,\n        inputImageUrl: ORIGINAL_IMAGE_URL,\
          \ // this can be any image you want to get disparity for\n        resultPresignedUrl: putDisparityPresignedUrl,\
          \ // acquired in previous step\n    },\n    {\n        headers: {\n            Authorization: 'Bearer {accessToken}',\
          \ // acquired in previous step\n        },\n        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: Disparity Map
      description: Historically, a disparity map is a visual representation of the differences in pixel coordinates between
        the corresponding points in a stereo image pair. It is typically generated from a pair of stereo images taken from
        slightly different viewpoints (left and right cameras). Using the power of the Immersity Cloud API, you can now generate
        a disparity map for any standard 2D image.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the disparity map estimation.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTMonoDepthEstimationParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/animation:
    post:
      operationId: TransactionController_generateAnimation
      x-codeSamples:
      - label: Python
        lang: Python
        source: "import uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/animation',\n\
          \    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputDisparityUrl': disparity_presigned_url,  # acquired in\
          \ previous step\n        'resultPresignedUrl': put_animation_presigned_url,  # acquired in previous step\n    },\n\
          \    timeout=5 * 60  # expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/animation',\n    {\n        correlationId,\n        inputDisparityUrl: disparityPresignedUrl,\
          \ // acquired in previous step\n        resultPresignedUrl: putAnimationPresignedUrl, // acquired in previous step\n\
          \    },\n    {\n        headers: {\n            Authorization: 'Bearer {accessToken}', // acquired in previous step\n\
          \        },\n        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: Animation
      description: This API allows you to generate a captivating 3D animation. By utilizing the input disparity map and a
        single image, this generates an immersive 3D animation that adds depth and realism to the image.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the animation generation.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTAnimationGenerationParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/transaction/callback:
    post:
      operationId: TransactionController_transactionCallback
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionCallbackParams'
      responses:
        '201':
          description: ''
      tags:
      - Media Transformation
  /api/v1/sbs:
    post:
      operationId: TransactionController_generateStereoSbs
      x-codeSamples:
      - label: Python
        lang: Python
        source: "\nimport uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/sbs',\
          \ \n    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputImageUrl': ORIGINAL_IMAGE_URL,  # this can be any image\
          \ you want to get disparity for\n        'inputDisparityUrl': disparity_presigned_url,  # acquired in previous step\n\
          \        'resultPresignedUrl': put_sbs_presigned_url  # acquired in previous step\n    },\n    timeout=5 * 60  #\
          \ expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/sbs',\n    {\n        correlationId,\n        inputImageUrl: ORIGINAL_IMAGE_URL,\
          \ // this can be any image you want to get disparity for\n        inputDisparityUrl: disparityPresignedUrl, // acquired\
          \ in previous step\n        resultPresignedUrl: putSbsPresignedUrl, // acquired in previous step\n    },\n    {\n\
          \        headers: {\n            Authorization: 'Bearer {accessToken}', // acquired in previous step\n        },\n\
          \        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: Stereo SBS
      description: ''
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the SBS generation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTStereoSbsGenerationParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/topBottom:
    post:
      operationId: TransactionController_generateStereoTopBottom
      x-codeSamples:
      - label: Python
        lang: Python
        source: "\nimport uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/topBottom',\
          \ \n    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputImageUrl': ORIGINAL_IMAGE_URL,  # this can be any image\
          \ you want to get disparity for\n        'inputDisparityUrl': disparity_presigned_url,  # acquired in previous step\n\
          \        'resultPresignedUrl': put_sbs_presigned_url  # acquired in previous step\n    },\n    timeout=5 * 60  #\
          \ expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/topBottom',\n    {\n        correlationId,\n        inputImageUrl: ORIGINAL_IMAGE_URL,\
          \ // this can be any image you want to get disparity for\n        inputDisparityUrl: disparityPresignedUrl, // acquired\
          \ in previous step\n        resultPresignedUrl: putSbsPresignedUrl, // acquired in previous step\n    },\n    {\n\
          \        headers: {\n            Authorization: 'Bearer {accessToken}', // acquired in previous step\n        },\n\
          \        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: Stereo Top-Bottom
      description: ''
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the topBottom generation
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTStereoTopBottomGenerationParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/decode:
    post:
      operationId: TransactionController_decodeLif
      x-codeSamples:
      - label: Python
        lang: Python
        source: "import uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/decode',\
          \ \n    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputImageUrl': ORIGINAL_IMAGE_URL,  # this can be any image\
          \ you want to get disparity for\n        'resultPresignedUrl': put_disparity_presigned_url  # acquired in previous\
          \ step\n    },\n    timeout=5 * 60  # expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/decode',\n    {\n        correlationId,\n        inputImageUrl: ORIGINAL_IMAGE_URL,\
          \ // this can be any image you want to get disparity for\n        resultPresignedUrl: putDisparityPresignedUrl,\
          \ // acquired in previous step\n    },\n    {\n        headers: {\n            Authorization: 'Bearer {accessToken}',\
          \ // acquired in previous step\n        },\n        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: LIF Decoder
      description: This API allows you to decode a LIF file into a 2D image.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the LIF decoder
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTLifDecoderParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/encode:
    post:
      operationId: TransactionController_encodeLif
      x-codeSamples:
      - label: Python
        lang: Python
        source: "import uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.post(\n    'https://api.immersity.ai/api/v1/encode',\
          \ \n    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    json={\n\
          \        'correlationId': correlation_id,\n        'inputImageUrl': ORIGINAL_IMAGE_URL,  # this can be any image\
          \ you want to get disparity for\n        'resultPresignedUrl': put_disparity_presigned_url  # acquired in previous\
          \ step\n    },\n    timeout=5 * 60  # expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.post(\n\
          \    'https://api.immersity.ai/api/v1/encode',\n    {\n        correlationId,\n        inputImageUrl: ORIGINAL_IMAGE_URL,\
          \ // this can be any image you want to get disparity for\n        resultPresignedUrl: putDisparityPresignedUrl,\
          \ // acquired in previous step\n    },\n    {\n        headers: {\n            Authorization: 'Bearer {accessToken}',\
          \ // acquired in previous step\n        },\n        timeout: 5 * 60 * 1000, // expires in 5 min\n    });\n    "
      summary: LIF Encoder
      description: This API allows you to encode a 2D image into a LIF file.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the LIF encoder
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTLifEncoderParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/video:
    post:
      operationId: TransactionController_generateVideoConversion
      summary: 2D to 3D Video Conversion
      description: This API allows you to convert a 2D video into 3D video. This service is an asynchronous only service,
        so despites it returns a 200 OK with resultPresignedUrl, the video will be available only after the conversion is
        done. The client must provide a custom callback URL to be notified when the conversion is done. Callback payload can
        include error code and error message.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the 2D to 3D Video Conversion.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTVideoConversionParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/spatial:
    post:
      operationId: TransactionController_generateSpatialVideoConversion
      summary: Convert video to Apple Vision Spatial
      description: This API allows you to convert a video into Apple Vision Spatial video. This service is an asynchronous
        only service, so despites it returns a 200 OK with resultPresignedUrl, the video will be available only after the
        conversion is done. The client must provide a custom callback URL to be notified when the conversion is done. Callback
        payload can include error code and error message.
      parameters: []
      requestBody:
        required: true
        description: The input parameters for the animation generation.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RESTSpatialVideoConversionParams'
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTAPICallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
      tags:
      - Media Transformation
      security:
      - bearer: []
  /api/v1/get-upload-url:
    get:
      operationId: StorageController_getStoragePresignedUrl
      x-codeSamples:
      - label: Python
        lang: Python
        source: "import uuid\nimport requests\ncorrelation_id = str(uuid.uuid4())\nrequests.get(\n    'https://api.immersity.ai/api/v1/get-upload-url',\n\
          \    headers={\n        'Authorization': 'Bearer {access_token}'  # acquired in previous step\n    },\n    timeout=5\
          \ * 60  # expires in 5 min\n)"
      - label: Node.js
        lang: javascript
        source: "const uuid = require('uuid');\nconst axios = require('axios');\n\nconst correlationId = uuid.v4();\n\naxios.get(\n\
          \    'https://api.immersity.ai/api/v1/get-upload-url',\n    headers: {\n        Authorization: 'Bearer {accessToken}',\
          \ // acquired in previous step\n    },\n    timeout: 5 * 60 * 1000, // expires in 5 min\n});\n    "
      summary: Get Presigned URL
      description: Get a presigned URL for uploading a file to Leia Storage with 24hrs expiration
      parameters:
      - name: fileName
        required: false
        in: query
        description: File name to upload
        example: myFile.jpg
        schema:
          type: string
      - name: mediaType
        required: false
        in: query
        description: Mime type of the file to upload
        example: image/jpeg
        schema:
          type: string
      - name: correlationId
        required: false
        in: query
        description: Unique query identifier. If not provided, one will be generated
        example: 123e4567-e89b-12d3-a456-426614174000
        schema:
          type: string
      responses:
        '200':
          description: The request has succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RESTStorageApiCallResult'
        '400':
          description: The request has invalid parameters
        '401':
          description: Returned if the user is not authenticated or authentication parameters are invalid
        '402':
          description: Returned it there is not enough credit balance
      tags:
      - Storage
      security:
      - bearer: []
info:
  title: Immersity Cloud API
  description: "Immersity Cloud APIs provide a seamless and efficient way to leverage the power of computer vision and generate\
    \ estimated disparity maps from 2D images. With just a simple API call, you can extract valuable depth information from\
    \ your images, revealing the relative distances of objects in the scene.\n\nOur first API endpoint allows you to submit\
    \ a 2D image and receive an estimated disparity map as the output. This disparity map highlights the variations in pixel\
    \ disparities, enabling you to perceive the scene's depth and spatial layout. It opens up possibilities for applications\
    \ such as 3D reconstruction, depth-based analysis, and more.\n\nBut that's not all! We go a step further by offering a\
    \ second API endpoint that takes estimated disparity map and creates stunning 3D animations. Our API generates smooth\
    \ and realistic 3D animations that bring your static images to life. With fine gain control over how obejcts should move\
    \ within the scene, this unlocks a whole new realm of visual storytelling. \n\nOur REST APIs are designed to be user-friendly,\
    \ scalable, and efficient, ensuring that you can seamlessly integrate them into your existing workflows or develop new\
    \ applications. Experience the power of our APIs and unlock the potential of disparity maps and 3D animations in your\
    \ projects today.\n\nYou will need Client ID & secret to access the APIs. Please refer to [Immersity Cloud Documentation](https://docs-api.immersity.ai/docs/getting-started)\
    \ for more information. \n\nIf you have feedback or encounter any issues with the API, please reach out on [Discord](https://discord.gg/immersityai)"
  version: 3.1.1
  contact:
    name: Discord
    url: https://discord.gg/immersityai
    email: ''
  termsOfService: https://www.immersity.ai/legal/terms-conditions
tags:
- name: Media Transformation
  description: ''
- name: Storage
  description: ''
servers:
- url: https://api.immersity.ai
- url: https://api.leiapix.com
components:
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
  schemas:
    Prices:
      type: object
      properties:
        disparity:
          type: object
          description: The amount of credits for a single image
          example:
            mono: 5
        animation:
          type: object
          description: The amount of credits for a single image
          example:
            gif: 5
            mp4: 5
      required:
      - disparity
      - animation
    RESTMonoDepthEstimationParams:
      type: object
      properties:
        inputImageUrl:
          type: string
          description: Readable input image url
          example: https://...
        resultPresignedUrl:
          type: string
          description: Presigned URL where the service should write the results to. The URL MUST have 'PUT' permission so
            the service can write the result to. For more details about signed URLs, please refer to your respective cloud
            providers.
          example: https://...
        correlationId:
          type: string
          description: UUID to correlate this request. This must be unique for each request. If not provided, the service
            will generate one
          example: 4d4eb584-a5cd-453b-8b67-567c1df26cb4
        dilation:
          type: number
          description: Edge dilation has the effect of widening objects to avoid stretching artifacts. If there is no dilation
            then colors from the foreground may bleed along the edge towards the background and vice versa. To have a cleaner
            edge we can include some of the background color in the foreground object by widening the object. This operation
            is performed directly on the disparity map before rendering the output.
          maximum: 0.01
          minimum: -0.01
          default: 0.0063
        inputType:
          type: string
          description: There are two types of input. Standard 2D images and 360 degree images. 360 degree images are processed
            differently due to the fisheye nature and the need to have these join seamlessly on the left and right edge
          enum:
          - image2d
          - image360
          default: image2d
        outputBitDepth:
          type: string
          description: The disparity map can be created in either 8-bit bit depth or 16-bit depth. 8-bit results in a smaller
            file size whilst 16-bit results in a disparity map with greater depth definition
          enum:
          - uint8
          - uint16
          default: uint8
      required:
      - inputImageUrl
    RESTAPICallResult:
      type: object
      properties:
        correlationId:
          type: string
          description: Unique query identifier
          example: 123e4567-e89b-12d3-a456-426614174000
        resultPresignedUrl:
          type: string
          description: Presigned url where processing result had been uploaded
          example: https://s3.eu-central-1.amazonaws.com/3d-photo-api-dev-output/1.jpg
      required:
      - correlationId
      - resultPresignedUrl
    RESTAnimationGenerationParams:
      type: object
      properties:
        inputImageUrl:
          type: string
          description: Readable input image url
          example: https://...
        resultPresignedUrl:
          type: string
          description: Presigned URL where the service should write the results to. The URL MUST have 'PUT' permission so
            the service can write the result to. For more details about signed URLs, please refer to your respective cloud
            providers.
          example: https://...
        correlationId:
          type: string
          description: UUID to correlate this request. This must be unique for each request. If not provided, the service
            will generate one
          example: 4d4eb584-a5cd-453b-8b67-567c1df26cb4
        inputDisparityUrl:
          type: string
          description: Readable input disparity url
          example: https://...
        animationType:
          type: string
          description: Type of animation
          enum:
          - mp4
          - gif
          default: mp4
        pattern:
          type: string
          description: Pattern for the animation. This controls the position from which the 3D scene is viewed for each frame
            of the resulting video. Specify a comma-separated list of floats. The order of these values is as follows {x1,y1,z1,x2,y2,z2…xn,yn,zn}
            where x1,y1,z1 are the x, y, z coordinates in 3D space for the first frame, x2,y2,z2 for the next frame and so
            forth. Add as many coordinate triplets as there are frames in the video that you want to create. Animation length
            is ignored when using this parameter since length is determined by the number of frames that are placed. Also
            the amplitude and phase parameters are ignored since here you explicitly set the position rather than having it
            calculated
          example: '{0.0, 0.0, 0.0, 0.0, 0.0, 0.0}'
        animationLength:
          type: number
          description: Duration of the animation. This controls how fast or slow the animation should be. For example, a value
            of 1 would create the fastest and 10 would create the slowest animations.
          maximum: 10
          minimum: 1
          default: 4
        outputWidth:
          type: number
          description: Output image width
          example: 600
          default: Equals to input width
        outputHeight:
          type: number
          description: Output image height
          example: 450
          default: Equals to input height
        amplitudeX:
          type: number
          description: Amount of motion in X axis.
          maximum: 10
          minimum: 0
          default: 1
        amplitudeY:
          type: number
          description: Amount of motion in Y axis.
          maximum: 10
          minimum: 0
          default: 1
        amplitudeZ:
          type: number
          description: Amount of motion in Z axis.
          maximum: 10
          minimum: 0
          default: 1
        phaseX:
          type: number
          description: The starting point or offset of the motion in the x-axis. For example, a phase value of 0 indicates
            that the motion starts from the origin.
          maximum: 7
          minimum: 0
          default: 0
        phaseY:
          type: number
          description: The starting point or offset of the motion in the Y-axis. For example, a phase value of 0 indicates
            that the motion starts from the origin.
          maximum: 7
          minimum: 0
          default: 0.25
        phaseZ:
          type: number
          description: The starting point or offset of the motion in the Z-axis. For example, a phase value of 0 indicates
            that the motion starts from the origin.
          maximum: 7
          minimum: 0
          default: 0.25
        gain:
          type: number
          description: Floating point gain value
          maximum: 10
          minimum: 0
          default: Gain is estimated automatically based on input image for best results
        convergence:
          type: number
          description: This sets the pivot point of the animation. At this depth nothing moves and everything else moves around
            this point.
          maximum: 1
          minimum: -1
          default: Convergence is estimated automatically based on input image for best results
        numberOfLoops:
          type: number
          description: Number of times the animation should loop. If not provided, the animation will not loop.
          maximum: 10
          minimum: 0
          default: 0
        outputFps:
          type: number
          description: 'FPS for the output video. Possible values are : 1,5,10,15,24,25,30,60'
          default: auto
      required:
      - inputImageUrl
      - inputDisparityUrl
    TransactionCallbackParams:
      type: object
      properties: {}
    RESTStereoSbsGenerationParams:
      type: object
      properties:
        inputImageUrl:
          type: string
          description: Readable input image url
          example: https://...
        resultPresignedUrl:
          type: string
          description: Presigned URL where the service should write the results to. The URL MUST have 'PUT' permission so
            the service can write the result to. For more details about signed URLs, please refer to your respective cloud
            providers.
          example: https://...
        correlationId:
          type: string
          description: UUID to correlate this request. This must be unique for each request. If not provided, the service
            will generate one
          example: 4d4eb584-a5cd-453b-8b67-567c1df26cb4
        inputDisparityUrl:
          type: string
          description: Readable input disparity url
          example: https://...
        width:
          type: number
          description: Output image width
          example: 600
          default: Preserves original image width
        height:
          type: number
          description: Output image height
          example: 450
          default: Preserves original image height
        gain:
          type: number
          description: Floating point gain value
          maximum: 10
          minimum: 0
          default: Gain is estimated automatically based on input image for best results
        gainMultiplier:
          type: number
          description: A floating point number which is multiplied by gain
          maximum: 10
          minimum: 0
        convergence:
          type: number
          description: This changes the overall de

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/leia/refs/heads/main/openapi/leia-immersity-cloud-api-openapi.yml