---
updatedAt: 2026-07-01T08:06:06.000Z
agentTools:
  projectIndex: https://docs.pixop.com/llms.txt
---

# Copy video data from an S3 input location into the Pixop Platform

Copies video data from a preconfigured S3 input location into the Pixop Platform, creating a new master video record for the selected team. 
This is similar to [POST /v1/videos/in/s3](https://docs.pixop.com/reference/createMasterVideoFromS3Bucket/), but uses the `inputLocationId` for the S3 bucket reference.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Pixop API",
    "description": "\nThe Pixop API provides a comprehensive RESTful interface for interacting with the Pixop Platform.\nIt allows users to manage API keys, projects, videos, and more.\n\nThe Pixop Platform offers video processing features such as upscaling, format conversion, and compression. It uses\nAI-driven algorithms to optimize video quality, reduce file sizes, and improve playback performance.\n\n**Quick Start Guide**\n- Explore the [Pixop API Documentation](https://docs.pixop.com/reference/) to familiarize yourself with the API's capabilities.\n\n**Required Headers**\nInclude the following headers in all API requests:\n- `Accept`: `application/json`\n- `Content-Type`: `application/json`\n- `X-API-Key`: Your API key for authentication (e.g., `X-API-Key: <your-api-key>`).  \n  **Note:** API key management endpoints that use Basic Authentication do not require the `X-API-Key` header.\n\n**Rate Limits**\nAll endpoints, except those related to API key management, enforce rate limits. Response headers provide the following rate limit details:\n- `X-RateLimit-Limit`: The maximum number of requests allowed per minute.\n- `X-RateLimit-Remaining`: The number of requests remaining in the current rate limit window.\n- `X-RateLimit-Reset`: The number of seconds until the current rate limit window resets.\n",
    "termsOfService": "https://docs.pixop.com/reference/terms-of-service",
    "contact": {
      "email": "api@pixop.com"
    },
    "version": "2.1.0"
  },
  "x-proxy-enabled": false,
  "externalDocs": {
    "description": "Learn more about Pixop",
    "url": "https://www.pixop.com"
  },
  "servers": [
    {
      "url": "https://api.pixop.com/api",
      "description": "Production environment"
    },
    {
      "url": "https://staging-api.pixop.com/api",
      "description": "Staging environment"
    }
  ],
  "tags": [
    {
      "name": "video in",
      "description": "Operations for importing and ingesting video data into the Pixop Platform."
    }
  ],
  "security": [
    {
      "api_key": []
    }
  ],
  "paths": {
    "/v1/videos/in/s3/{inputLocationId}": {
      "post": {
        "tags": [
          "video in"
        ],
        "summary": "Copy video data from an S3 input location into the Pixop Platform",
        "description": "Copies video data from a preconfigured S3 input location into the Pixop Platform, creating a new master video record for the selected team. \nThis is similar to [POST /v1/videos/in/s3](https://docs.pixop.com/reference/createMasterVideoFromS3Bucket/), but uses the `inputLocationId` for the S3 bucket reference.\n",
        "operationId": "createMasterVideoFromS3InputLocationId",
        "parameters": [
          {
            "$ref": "#/components/parameters/InputLocationId"
          },
          {
            "$ref": "#/components/parameters/FullIngestion"
          },
          {
            "$ref": "#/components/parameters/SelectTeamId"
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/CreateMasterVideoFromS3Request"
        },
        "responses": {
          "202": {
            "$ref": "#/components/responses/VideoInStatusResponse",
            "description": "The video copy operation has been successfully initiated."
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "UUID": {
        "type": "string",
        "format": "uuid",
        "description": "A universally unique identifier (UUID) compliant with [RFC 4122](https://tools.ietf.org/html/rfc4122). Used as a unique key to identify resources or entities across systems.",
        "examples": [
          "123e4567-e89b-12d3-a456-426614174000"
        ]
      },
      "VideoName": {
        "type": "string",
        "description": "The name of the video. Used to easily identify specific videos within projects.\nThe name must be between 1 and 255 characters long.\n",
        "maxLength": 255,
        "minLength": 1,
        "examples": [
          "Holiday Trip Video",
          "Product Demo 2024"
        ]
      },
      "VideoDescription": {
        "type": "string",
        "description": "Optional description of the video. The description must be between 0 and 511 characters long.",
        "maxLength": 511,
        "minLength": 0,
        "examples": [
          "A video showcasing the highlights of our recent holiday trip.",
          "Product Demo 2024 showcasing the latest features and benefits of our product."
        ]
      },
      "VideoPatch": {
        "type": "object",
        "description": "Represents the fields that can be updated for a video resource.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/VideoName"
          },
          "description": {
            "$ref": "#/components/schemas/VideoDescription"
          }
        }
      },
      "VideoPost": {
        "type": "object",
        "description": "Represents the required fields for creating a new video resource.",
        "required": [
          "name"
        ],
        "allOf": [
          {
            "$ref": "#/components/schemas/VideoPatch"
          },
          {
            "type": "object",
            "properties": {
              "projectId": {
                "$ref": "#/components/schemas/UUID",
                "description": "The ID of the project to which the video belongs. If not specified, the video is added to the default project."
              }
            }
          }
        ]
      },
      "CreateMasterVideoBase": {
        "type": "object",
        "description": "A base schema for creating a master video by importing it from a source. \nAdditional required fields are defined in the specific components that extend this schema.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/VideoPost"
          },
          {
            "type": "object",
            "properties": {
              "fileName": {
                "$ref": "#/components/schemas/FileName",
                "description": "The name of the video file, such as `myvideo.mp4`. \nIf not specified, a normalized version of `name` will be used.\n"
              }
            }
          }
        ]
      },
      "CreateMasterVideoFromS3": {
        "type": "object",
        "description": "Defines the required fields for creating a master video by importing it from an Amazon S3 object. \nThis includes the video's name and the S3 object key.\n",
        "required": [
          "objectKey"
        ],
        "allOf": [
          {
            "$ref": "#/components/schemas/CreateMasterVideoBase"
          },
          {
            "type": "object",
            "properties": {
              "objectKey": {
                "$ref": "#/components/schemas/S3ObjectKey",
                "description": "The key of the object in the S3 bucket from which the video is imported."
              },
              "fileName": {
                "$ref": "#/components/schemas/FileName",
                "description": "The name of the video file, such as `myvideo.mp4`. \nIf not specified, it is derived from the S3 object key.\n"
              }
            }
          }
        ]
      },
      "AspectRatio": {
        "description": "Represents the aspect ratio of a video.",
        "properties": {
          "ratio": {
            "description": "The aspect ratio expressed as a decimal number with two decimal points of precision. For example, 1.78 represents 16:9, and 1.33 represents 4:3.",
            "type": "number",
            "examples": [
              1.78,
              1.33
            ]
          },
          "tag": {
            "description": "The aspect ratio represented as a tag. Common examples include 16:9, 4:3, and 2.35:1.",
            "type": "string",
            "examples": [
              969,
              243,
              "2.35:1"
            ]
          }
        }
      },
      "FrameRate": {
        "description": "Represents the frame rate of a video, expressed in frames per second (FPS).",
        "properties": {
          "frameRate": {
            "description": "The frame rate expressed as a decimal number with three decimal points of precision. Common values include 30, 29.97, 25, and 23.976.",
            "type": "number",
            "examples": [
              29.97,
              30,
              25,
              23.976
            ]
          },
          "rational": {
            "description": "The frame rate expressed as a rational number. For example, 30000:1001 represents 29.97 FPS.",
            "type": "string",
            "examples": [
              "30000:1001",
              "30"
            ]
          }
        }
      },
      "VideoMetadata": {
        "description": "Metadata describing the properties and characteristics of a video file.",
        "properties": {
          "containerName": {
            "description": "The short name of the video container format. Examples include mov, mxf, mp4, and mpegts.",
            "type": "string",
            "examples": [
              "mov",
              "mxf",
              "mp4",
              "mpegts"
            ]
          },
          "longContainerName": {
            "description": "The full name of the video container format. Examples include MPEG-4, QuickTime / MOV, and MPEG-TS (MPEG-2 Transport Stream).",
            "type": "string",
            "examples": [
              "MPEG-4",
              "QuickTime / MOV",
              "MPEG-TS (MPEG-2 Transport Stream)"
            ]
          },
          "codecName": {
            "description": "The short name of the codec used for video encoding. Examples include h264, prores, dnxhd, mpeg2, hevc, xdcam, and ffv1.",
            "type": "string",
            "examples": [
              "h264",
              "prores",
              "dnxhd",
              "mpeg2",
              "hevc",
              "xdcam",
              "ffv1"
            ]
          },
          "longCodecName": {
            "description": "The full name of the codec used for video encoding. Examples include H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10, H.265 / HEVC (High Efficiency Video Coding), and MPEG-2 video.",
            "type": "string",
            "examples": [
              "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
              "H.265 / HEVC (High Efficiency Video Coding)",
              "MPEG-2 video"
            ]
          },
          "pixelFormatName": {
            "description": "The name of the pixel format used in the video. Examples include yuv420p, yuv422p, yuv444p, yuv420p10le, yuv422p10le, and yuv444p10le.",
            "type": "string",
            "examples": [
              "yuv420p",
              "yuv422p",
              "yuv444p",
              "yuv420p10le",
              "yuv422p10le",
              "yuv444p10le"
            ]
          },
          "primaryBitDepth": {
            "description": "The number of bits per pixel used to represent the color information. Examples include 8, 10, and 12.",
            "type": "integer",
            "examples": [
              8,
              10,
              12
            ]
          },
          "frameWidth": {
            "description": "The width of the video frame in pixels. Examples include 1920, 1280, and 720.",
            "type": "integer",
            "format": "int32",
            "examples": [
              1920,
              1280,
              720
            ]
          },
          "frameHeight": {
            "description": "The height of the video frame in pixels. Examples include 1080, 720, and 480.",
            "type": "integer",
            "format": "int32",
            "examples": [
              1080,
              720,
              480
            ]
          },
          "displayAspectRatio": {
            "$ref": "#/components/schemas/AspectRatio",
            "description": "The display aspect ratio of the video."
          },
          "scanning": {
            "$ref": "#/components/schemas/VideoScanning",
            "description": "The scanning type of the video, indicating whether it is progressive or interlaced."
          },
          "averageFrameRate": {
            "$ref": "#/components/schemas/FrameRate",
            "description": "The average frame rate of the video in frames per second."
          },
          "durationInMillis": {
            "description": "The duration of the video in milliseconds. Examples include 30000 for a 30-second video.",
            "type": "integer",
            "format": "int64",
            "examples": [
              30000,
              60000,
              120000
            ]
          },
          "totalFrames": {
            "description": "The total number of frames in the video. Examples include 900 for a 30-second video at 30 fps.",
            "type": "integer",
            "format": "int32",
            "examples": [
              900,
              899,
              750
            ]
          },
          "size": {
            "description": "The total size of the video file in bytes. Examples include 10485760 for a 10 MB video file.",
            "type": "integer",
            "format": "int64",
            "examples": [
              10485760,
              20971520,
              52428800
            ]
          },
          "videoStreamSize": {
            "description": "The size of the video stream in bytes, excluding audio and metadata. Examples include 10485760 for a 10 MB video stream.",
            "type": "integer",
            "format": "int64",
            "examples": [
              10000000,
              10485760,
              20971520
            ]
          },
          "colorRangeName": {
            "description": "The name of the color range used in the video.",
            "type": "string"
          },
          "colorSpaceName": {
            "description": "The name of the color space used in the video.",
            "type": "string"
          },
          "colorTransferName": {
            "description": "The name of the color transfer function used in the video.",
            "type": "string"
          },
          "colorPrimariesName": {
            "description": "The name of the color primaries used in the video.",
            "type": "string"
          },
          "hdrStandardName": {
            "description": "The name of the HDR standard used in the video, if applicable.",
            "type": "string"
          }
        }
      },
      "VideoScanning": {
        "description": "Represents the scanning information of a video, including metadata and heuristic analysis.",
        "properties": {
          "metadata": {
            "description": "The scanning information extracted from the video's metadata.",
            "$ref": "#/components/schemas/Scanning"
          },
          "heuristics": {
            "description": "The scanning information determined through a deep analysis of video segments.",
            "$ref": "#/components/schemas/Scanning"
          }
        }
      },
      "Scanning": {
        "description": "Specifies the scanning type of a video. Examples include:\n - `PROGRESSIVE`: Video frames are displayed sequentially.\n - `INTERLACED_TOP_FIRST`: Interlaced video with the top field displayed first.\n - `INTERLACED_BOTTOM_FIRST`: Interlaced video with the bottom field displayed first.\n",
        "type": "string",
        "enum": [
          "PROGRESSIVE",
          "INTERLACED_TOP_FIRST",
          "INTERLACED_BOTTOM_FIRST"
        ]
      },
      "VideoIngestion": {
        "description": "Details the ingestion process of a video, including its state, metadata, and quality assessment.",
        "required": [
          "ingestionState",
          "metadata",
          "qualityAssessment"
        ],
        "properties": {
          "ingestionState": {
            "$ref": "#/components/schemas/VideoIngestionState",
            "description": "The state of the video ingestion process."
          },
          "metadata": {
            "$ref": "#/components/schemas/VideoMetadata",
            "description": "The metadata extracted during the ingestion process."
          },
          "qualityAssessment": {
            "$ref": "#/components/schemas/VideoQualityAssessment",
            "description": "The quality assessment results of the ingested video."
          }
        }
      },
      "VideoIngestionState": {
        "description": "Represents the state of the video ingestion process, including status and progress indicators.",
        "properties": {
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The date and time of the last update to the ingestion state."
          },
          "etaSeconds": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated time remaining for ingestion completion, in seconds.",
            "examples": [
              0
            ]
          },
          "ingestionStatus": {
            "$ref": "#/components/schemas/OperationStatus",
            "description": "The current status of the ingestion process."
          },
          "webVideoAvailable": {
            "type": "boolean",
            "description": "Indicates if a web-compatible video format is available.",
            "default": false
          },
          "thumbnailsAvailable": {
            "type": "boolean",
            "description": "Indicates if thumbnails have been generated for the video.",
            "default": false
          },
          "fullFramesAvailable": {
            "type": "boolean",
            "description": "Indicates if full-frame images have been generated for the video.",
            "default": false
          },
          "videoMetadataAvailable": {
            "type": "boolean",
            "description": "Indicates if the metadata for the video has been extracted and is available.",
            "default": false
          },
          "progressPercentage": {
            "$ref": "#/components/schemas/Percentage",
            "description": "The progress of the ingestion process, expressed as a percentage."
          }
        }
      },
      "Percentage": {
        "description": "A percentage value represented as an integer. Commonly used to denote progress or completion levels. E.g., 0, 50, 100.",
        "type": "integer",
        "format": "int32",
        "minimum": 0,
        "maximum": 100,
        "examples": [
          0,
          50,
          100
        ]
      },
      "VideoQualityAssessment": {
        "description": "Evaluates the overall quality of the video, including detailed metrics and an overall subjective score.",
        "properties": {
          "metrics": {
            "type": "array",
            "description": "A list of quality metrics evaluated for the video.",
            "items": {
              "$ref": "#/components/schemas/QualityMetric"
            }
          },
          "overallSubjectiveScore": {
            "description": "The overall subjective quality score of the video, on a scale from 0 to 5. Higher scores generally indicate better quality.",
            "type": "number",
            "minimum": 0,
            "maximum": 5,
            "examples": [
              2.68
            ]
          }
        }
      },
      "FileName": {
        "description": "The name of the file, including its extension. E.g., myvideo.mp4.",
        "type": "string",
        "pattern": "^[a-zA-Z0-9_\\-\\.]{1,255}$",
        "minLength": 1,
        "maxLength": 255,
        "examples": [
          "myvideo.mp4"
        ]
      },
      "VideoFile": {
        "description": "Represents metadata about a video file, including its name, size, type, and container details.",
        "type": "object",
        "required": [
          "name",
          "size",
          "type",
          "containerName",
          "lastModified"
        ],
        "properties": {
          "name": {
            "description": "The name of the video file, including its extension. E.g., myvideo.mp4.",
            "readOnly": true,
            "$ref": "#/components/schemas/FileName"
          },
          "size": {
            "description": "The size of the video file in bytes. For example, 10485760 bytes for a 10 MB file.",
            "readOnly": true,
            "type": "integer",
            "format": "int64",
            "examples": [
              10485760
            ]
          },
          "type": {
            "description": "The MIME type of the video file. E.g., video/mp4, video/quicktime, video/mp2t.",
            "readOnly": true,
            "type": "string",
            "examples": [
              "video/mp4",
              "video/quicktime",
              "video/mp2t"
            ]
          },
          "containerName": {
            "description": "The container format of the video file. E.g., MPEG-2 Transport Stream, MPEG-4, QuickTime.",
            "readOnly": true,
            "type": "string",
            "examples": [
              "MPEG-2 Transport Stream",
              "MPEG-4",
              "QuickTime"
            ]
          },
          "lastModified": {
            "description": "The last modified date and time of the video file.",
            "readOnly": true,
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "VideoInStatus": {
        "description": "Information about the upload and ingestion process of a master video.",
        "required": [
          "videoId",
          "upload"
        ],
        "properties": {
          "videoId": {
            "$ref": "#/components/schemas/UUID",
            "description": "The unique identifier of the video being processed."
          },
          "upload": {
            "$ref": "#/components/schemas/VideoUpload"
          },
          "ingestion": {
            "$ref": "#/components/schemas/VideoIngestion"
          }
        }
      },
      "VideoUpload": {
        "description": "Metadata and details about the upload process of a master video.",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/VideoFile"
          },
          "uploadState": {
            "$ref": "#/components/schemas/VideoUploadState"
          }
        }
      },
      "VideoUploadState": {
        "description": "Represents the current state of a master video upload process.",
        "properties": {
          "updatedAt": {
            "description": "The date and time of the most recent update to the upload state.",
            "readOnly": true,
            "type": "string",
            "format": "date-time"
          },
          "uploadStatus": {
            "description": "The current status of the upload operation.",
            "readOnly": true,
            "$ref": "#/components/schemas/OperationStatus"
          },
          "progressPercentage": {
            "description": "The progress of the upload operation as a percentage.",
            "readOnly": true,
            "$ref": "#/components/schemas/Percentage"
          },
          "error": {
            "type": "object",
            "description": "Details about any error encountered during the upload process, applicable when the `uploadStatus` is `FAILED`.",
            "readOnly": true,
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "description": "The error code indicating the specific issue.",
                "readOnly": true,
                "type": "string"
              },
              "message": {
                "description": "A human-readable message explaining the error code.",
                "readOnly": true,
                "type": "string"
              },
              "details": {
                "description": "Additional details about the error, if available.",
                "readOnly": true,
                "additionalProperties": true
              }
            }
          }
        }
      },
      "OperationStatus": {
        "description": "The operational status of an upload, ingestion, processing, or output activity.",
        "type": "string",
        "enum": [
          "INITIAL",
          "IN_PROGRESS",
          "DONE",
          "FAILED"
        ]
      },
      "Error": {
        "description": "Represents an error response returned by the API. Provides details such as the error code, status, and any associated validation errors.\n",
        "type": "object",
        "required": [
          "timestamp",
          "requestId",
          "requestPath",
          "errorCode",
          "message",
          "statusCode"
        ],
        "properties": {
          "timestamp": {
            "description": "The date and time indicating when the error occurred.",
            "readOnly": true,
            "type": "string",
            "format": "date-time"
          },
          "requestId": {
            "description": "The unique identifier for the request that caused the error.",
            "readOnly": true,
            "type": "string",
            "format": "uuid"
          },
          "requestPath": {
            "description": "The API path that was accessed when the error occurred.",
            "readOnly": true,
            "type": "string"
          },
          "errorCode": {
            "description": "A code representing the specific error.",
            "readOnly": true,
            "type": "string"
          },
          "errorCodeEnum": {
            "description": "If present, the `errorCode` corresponds to one of Pixop’s documented error codes.",
            "readOnly": true,
            "$ref": "#/components/schemas/ErrorCodeEnum"
          },
          "message": {
            "description": "A human-readable message explaining the error.",
            "readOnly": true,
            "type": "string",
            "examples": [
              "Invalid input"
            ]
          },
          "statusCode": {
            "description": "The HTTP status code associated with the error.",
            "readOnly": true,
            "type": "integer",
            "examples": [
              400
            ]
          },
          "validationErrors": {
            "description": "A list of validation errors, if any.",
            "readOnly": true,
            "type": "array",
            "x-nullable": true,
            "default": null,
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            }
          },
          "errorDetails": {
            "description": "Additional details about the error, if available.",
            "readOnly": true,
            "additionalProperties": true
          }
        }
      },
      "ErrorField": {
        "description": "The field in the request that caused the error.",
        "readOnly": true,
        "type": "string",
        "examples": [
          "name"
        ]
      },
      "ValidationError": {
        "description": "Represents a validation error for a specific field in the request. Provides details about the field, the invalid value, and the error message.",
        "type": "object",
        "properties": {
          "field": {
            "$ref": "#/components/schemas/ErrorField"
          },
          "value": {
            "description": "The invalid value provided for the field.",
            "readOnly": true,
            "type": "string",
            "examples": [
              48
            ]
          },
          "message": {
            "description": "A human-readable message explaining the validation error.",
            "readOnly": true,
            "type": "string",
            "examples": [
              "size must be between 1 and 47"
            ]
          }
        }
      },
      "ErrorCodeEnum": {
        "type": "string",
        "description": "Enumerates the known error codes returned by the API.\nNot all possible codes are listed here, and additional codes may be introduced in the future.\nWhen present, these values correspond to well-defined application or HTTP errors.\n",
        "enum": [
          "UNKNOWN",
          "TOO_MANY_REQUESTS",
          "INVALID_CREDENTIALS",
          "ACCOUNT_LOCKED",
          "ACCOUNT_DISABLED",
          "ACCOUNT_EXPIRED",
          "MISSING_API_KEY",
          "INVALID_API_KEY",
          "ACCESS_DENIED",
          "RESOURCE_NOT_FOUND",
          "TEAM_NOT_FOUND",
          "DEFAULT_TEAM_NOT_API_ENABLED",
          "INVALID_INPUT",
          "FORBIDDEN",
          "VALIDATION_ERROR",
          "WEBHOOK_NOT_ACTIVE",
          "TOO_MANY_WEBHOOK_TEST_EVENTS",
          "CONTAINER_IS_NOT_SUPPORTED_FOR_SELECTED_CODEC",
          "INSUFFICIENT_PROJECTED_BALANCE_ERROR",
          "PROJECT_WITH_VIDEOS_CANNOT_BE_DELETED",
          "ACTIVE_API_KEY_CANNOT_BE_DELETED",
          "VIDEO_IN_OPERATION_NOT_FAILED",
          "VIDEO_OUT_OPERATION_NOT_FAILED",
          "VIDEO_ALREADY_BEING_COPIED_TO_OUTPUT_LOCATION",
          "ONGOING_COPY_TO_OUTPUT_NEEDS_TO_BE_RESTARTED_OR_ABANDONED",
          "BUCKET_NOT_FOUND",
          "KEY_NOT_FOUND",
          "HEAD_BUCKET_ERROR",
          "HEAD_OBJECT_ERROR",
          "RESOLVE_OBJECT_METADATA_ERROR",
          "CONTENT_RANGE_HEADER_INVALID",
          "CONTENT_NOT_PARTIAL_ERROR",
          "PARSE_CONTENT_TYPE_ERROR",
          "NO_CONTENT",
          "OBJECT_ALREADY_EXISTS",
          "CONFLICTING_DERIVED_VIDEO_IDS",
          "MAXIMUM_AMOUNT_OF_ACTIVE_API_KEYS_REACHED",
          "MAXIMUM_AMOUNT_OF_ACTIVE_WEBHOOKS_REACHED",
          "INVALID_REQUEST_BODY",
          "MISSING_REQUEST_BODY",
          "TARGET_RESOLUTION_OUT_OF_ALLOWED_RANGE",
          "TARGET_RESOLUTION_CANNOT_BE_LOWER_THAN_CALCULATED_ASPECT_RATIO_RESOLUTION",
          "INVALID_START_POSITION",
          "INVALID_END_POSITION",
          "INVALID_DATE_TIME_RANGE",
          "MISSING_CUSTOM_RESOLUTION",
          "INVALID_INPUT_COLOR_CONVERSION",
          "INVALID_OUTPUT_COLOR_CONVERSION",
          "UNSUPPORTED_CONTENT_TYPE",
          "CHECKSUM_MISMATCH",
          "VIDEO_IN_RESTART_CHECKSUM_MISMATCH",
          "INVALID_HTTPS_URL",
          "UNEXPECTED_CONTENT_RANGE",
          "VIDEO_PROCESSING_NOT_DONE",
          "WEBHOOK_RATE_LIMIT_EXCEEDED",
          "VIDEO_NOT_FULLY_INGESTED",
          "VIDEO_COMPARISON_CONFLICT",
          "APPRAISAL_BILLING_OUT_DATED",
          "AWS_MARKETPLACE_ACCESS_NOT_AVAILABLE",
          "TEAM_NOT_BILLED_THROUGH_AWS_MARKETPLACE",
          "BAD_REQUEST",
          "UNAUTHORIZED",
          "NOT_FOUND",
          "CONFLICT",
          "INTERNAL_SERVER_ERROR"
        ],
        "x-enumDescriptions": {
          "UNKNOWN": "Unknown error",
          "TOO_MANY_REQUESTS": "Too many requests",
          "INVALID_CREDENTIALS": "Invalid credentials",
          "ACCOUNT_LOCKED": "Account is locked",
          "ACCOUNT_DISABLED": "Account is disabled or API key is not active",
          "ACCOUNT_EXPIRED": "Account has expired",
          "MISSING_API_KEY": "Missing API key",
          "INVALID_API_KEY": "Invalid API key",
          "ACCESS_DENIED": "Access denied",
          "RESOURCE_NOT_FOUND": "Resource not found",
          "TEAM_NOT_FOUND": "Team not found. Either the team does not exist, is not apiEnabled, or the authenticated ApiUser does not have access to it.",
          "DEFAULT_TEAM_NOT_API_ENABLED": "Default team not API enabled",
          "INVALID_INPUT": "Invalid input",
          "FORBIDDEN": "Unauthorized",
          "VALIDATION_ERROR": "Validation error",
          "WEBHOOK_NOT_ACTIVE": "Webhook not active",
          "TOO_MANY_WEBHOOK_TEST_EVENTS": "Too many webhook test events",
          "CONTAINER_IS_NOT_SUPPORTED_FOR_SELECTED_CODEC": "Container is not supported for selected codec",
          "INSUFFICIENT_PROJECTED_BALANCE_ERROR": "Insufficient projected balance",
          "PROJECT_WITH_VIDEOS_CANNOT_BE_DELETED": "Project with videos cannot be deleted",
          "ACTIVE_API_KEY_CANNOT_BE_DELETED": "Active API key cannot be deleted",
          "VIDEO_IN_OPERATION_NOT_FAILED": "Video-in operation not failed",
          "VIDEO_OUT_OPERATION_NOT_FAILED": "Video-out operation not failed",
          "VIDEO_ALREADY_BEING_COPIED_TO_OUTPUT_LOCATION": "Video is already being copied to an output location",
          "ONGOING_COPY_TO_OUTPUT_NEEDS_TO_BE_RESTARTED_OR_ABANDONED": "Video is already being copied to an output location. Needs to be restarted or abandoned.",
          "BUCKET_NOT_FOUND": "Bucket not found",
          "KEY_NOT_FOUND": "The given key does not exist in the bucket",
          "HEAD_BUCKET_ERROR": "Error in HeadBucket",
          "HEAD_OBJECT_ERROR": "Error in HeadObject",
          "RESOLVE_OBJECT_METADATA_ERROR": "Error resolving object metadata",
          "CONTENT_RANGE_HEADER_INVALID": "Content-Range header invalid or not found",
          "CONTENT_NOT_PARTIAL_ERROR": "Partial content not received",
          "PARSE_CONTENT_TYPE_ERROR": "Error parsing content type",
          "NO_CONTENT": "No content",
          "OBJECT_ALREADY_EXISTS": "Object already exists",
          "CONFLICTING_DERIVED_VIDEO_IDS": "Conflicting derived video IDs",
          "MAXIMUM_AMOUNT_OF_ACTIVE_API_KEYS_REACHED": "Maximum amount of active API keys reached",
          "MAXIMUM_AMOUNT_OF_ACTIVE_WEBHOOKS_REACHED": "Maximum amount of active webhooks reached",
          "INVALID_REQUEST_BODY": "Invalid request body",
          "MISSING_REQUEST_BODY": "Missing request body",
          "TARGET_RESOLUTION_OUT_OF_ALLOWED_RANGE": "Target resolution out of allowed range",
          "TARGET_RESOLUTION_CANNOT_BE_LOWER_THAN_CALCULATED_ASPECT_RATIO_RESOLUTION": "Target resolution cannot be lower than calculated aspect ratio resolution",
          "INVALID_START_POSITION": "Invalid start position",
          "INVALID_END_POSITION": "Invalid end position",
          "INVALID_DATE_TIME_RANGE": "Invalid date time range",
          "MISSING_CUSTOM_RESOLUTION": "Width and height must be provided when tag and aspectRatioTag are not",
          "INVALID_INPUT_COLOR_CONVERSION": "Invalid input color conversion",
          "INVALID_OUTPUT_COLOR_CONVERSION": "Invalid output color conversion",
          "UNSUPPORTED_CONTENT_TYPE": "Unsupported content type",
          "CHECKSUM_MISMATCH": "Checksum mismatch",
          "VIDEO_IN_RESTART_CHECKSUM_MISMATCH": "Cannot restart a VideoInOperation that failed due to checksum mismatch without also setting skipChecksumValidation to true",
          "INVALID_HTTPS_URL": "Invalid HTTPS URL",
          "UNEXPECTED_CONTENT_RANGE": "Unexpected content range",
          "VIDEO_PROCESSING_NOT_DONE": "Video processing not done",
          "WEBHOOK_RATE_LIMIT_EXCEEDED": "Webhook rate limit exceeded",
          "VIDEO_NOT_FULLY_INGESTED": "Video not fully ingested",
          "VIDEO_COMPARISON_CONFLICT": "Video comparison conflict.",
          "APPRAISAL_BILLING_OUT_DATED": "Appraisal billing out of date.",
          "AWS_MARKETPLACE_ACCESS_NOT_AVAILABLE": "AWS Marketplace access not available.",
          "TEAM_NOT_BILLED_THROUGH_AWS_MARKETPLACE": "Team not billed through AWS Marketplace.",
          "BAD_REQUEST": "Standard HTTP 400 Bad Request",
          "UNAUTHORIZED": "Standard HTTP 401 Unauthorized",
          "NOT_FOUND": "Standard HTTP 404 Not Found",
          "CONFLICT": "Standard HTTP 409 Conflict",
          "INTERNAL_SERVER_ERROR": "Standard HTTP 500 Internal Server Error"
        }
      },
      "QualityMetric": {
        "description": "Represents a quality metric for video assessment, including detailed and subjective scoring information.",
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the quality metric, such as noise, details, or colors.",
            "type": "string",
            "examples": [
              "noise",
              "details",
              "colors"
            ]
          },
          "sampleMean": {
            "description": "The sample mean value of the quality metric. For example, 0.377.",
            "type": "number",
            "examples": [
              0.377
            ]
          },
          "subjectiveLabel": {
            "description": "The subjective label of the quality metric, such as poor, good, or untenable.",
            "type": "string",
            "examples": [
              "good",
              "poor",
              "untenable"
            ]
          },
          "subjectiveScore": {
            "description": "The subjective numerical score for the quality metric. For example, 3.726.",
            "type": "number",
            "examples": [
              3.726
            ]
          }
        }
      },
      "S3ObjectKey": {
        "description": "The object key of a video in an S3 bucket. For example, `src/myvideo.mp4`.",
        "type": "string",
        "minLength": 1,
        "maxLength": 1024,
        "examples": [
          "src/myvideo.mp4"
        ]
      }
    },
    "parameters": {
      "InputLocationId": {
        "name": "inputLocationId",
        "in": "path",
        "required": true,
        "description": "The unique identifier for the input location.",
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "SelectTeamId": {
        "name": "selectTeamId",
        "in": "query",
        "description": "Specifies the team ID for the operation. \n- For `POST` requests, assigns the new object to the specified team.\n- For `GET` requests, retrieves data for the specified team.\nIf not provided, defaults to the ID of the default team associated with the API key.\n",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/UUID"
        }
      },
      "FullIngestion": {
        "name": "fullIngestion",
        "in": "query",
        "description": "Determines the ingestion level:\n- `false`: Only metadata is ingested. Thumbnails, web video artifacts, quality assessments, and deep scanning type analysis are not performed. This mode is suitable for third-party integrations that process videos in an ephemeral manner.\n- `true`: Full ingestion is performed, including metadata, thumbnails, web video artifacts, quality assessments, and deep scanning analysis. This mode is used for videos that need to be available on the web application.\n",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "requestBodies": {
      "CreateMasterVideoFromS3Request": {
        "description": "Parameters required for importing a video from an S3 bucket into the Pixop Platform.",
        "required": true,
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CreateMasterVideoFromS3"
            }
          }
        }
      }
    },
    "responses": {
      "VideoInStatusResponse": {
        "description": "Successfully retrieved the status of a master video upload and ingestion.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/VideoInStatus"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "BadRequest": {
        "description": "Invalid request. Inspect the details of the error for more information.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "Unauthorized": {
        "description": "Authentication failed. Missing or invalid `X-API-Key` or basic authentication credentials.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "WWW-Authenticate": {
            "description": "The authentication method that should be used to gain access to the resource.",
            "schema": {
              "type": "string"
            }
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "Forbidden": {
        "description": "Access denied. You do not have the necessary permissions to access this resource.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "NotFound": {
        "description": "The requested resource could not be found.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      },
      "TooManyRequests": {
        "description": "Too Many Requests. The rate limit for this resource has been exceeded.",
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          },
          "X-RateLimit-Retry-After": {
            "$ref": "#/components/headers/X-RateLimit-Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "An unexpected error occurred on the server.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/X-RateLimit-Limit"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/X-RateLimit-Remaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/X-RateLimit-Reset"
          }
        }
      }
    },
    "headers": {
      "X-RateLimit-Limit": {
        "description": "The maximum number of requests allowed per minute.",
        "schema": {
          "type": "integer"
        }
      },
      "X-RateLimit-Remaining": {
        "description": "The number of requests remaining in the current rate limit window.",
        "schema": {
          "type": "integer"
        }
      },
      "X-RateLimit-Reset": {
        "description": "The number of seconds until the current rate limit window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "X-RateLimit-Retry-After": {
        "description": "The number of seconds to wait before retrying a request that failed due to rate limits.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "name": "X-API-Key",
        "in": "header",
        "description": "API key authentication using the `X-API-Key` header. \nProvide the API key as part of the request headers:\n  - `X-API-Key: <your-api-key>`\nExample:\n  - `X-API-Key: gTF1d6iQKyu8gzXO4pNCt10WlTjhKzrWtUm1wwTGuMA`\n"
      }
    }
  }
}
```