Uploadcare

File handling and image processing API

uploadcare.com/docs/api_reference ↗
Version
2024-02-12
OpenAPI
3.0.0
Endpoints
9
Schemas
106
Updated
3 days ago
Storage storage files image-processing
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://upload.uploadcare.com

Endpoints

Clear filters

Groups 1 endpoints

GET /group/info

Returns a JSON object with information about a file group (when the group was created, number of the files in the group, etc).

operationId: Groups_getInfo

Parameters

Name In Required Type Description
pub_key query required
group_id query required string Group's unique ID. Group IDs look like `UUID~N`, where the `~N` part reflects the number of the files in the group.

Responses

200
400
403
404
GET /group/info

Upload 2 endpoints

GET /from_url/status

The endpoint notifies about the progress of the task by changing the value of the `status` field: * the field is set to `waiting` initially * once the system starts processing the request, the field is set to `progress` * if the file is fetched and uploaded successfully, the `status` field is set to `success` and the endpoint returns a JSON object holding information about the uploaded file * if the system fails to fetch/upload the file, the `status` field is set to `error` and the `error` field is set to the cause of the error.

operationId: Upload_urlStatusGet

Parameters

Name In Required Type Description
token query required string Token returned by the `/from_url/` endpoint that identifies a request to fetch/upload a file from a URL.

Responses

200
400
GET /from_url/status
GET /info

Returns a JSON object with information about an uploaded file (file size, MIME type, metadata, etc).

operationId: Upload_fileInfo

Parameters

Name In Required Type Description
pub_key query required
file_id query required string File's unique ID.

Responses

200
400
403
404
GET /info

Schemas

object GroupsCreateFileGroup403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/publicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/publicKeyInvalidError"
    },
    {
      "$ref": "#/components/schemas/projectPublicKeyRemovedError"
    },
    {
      "$ref": "#/components/schemas/accountBlockedError"
    },
    {
      "$ref": "#/components/schemas/accountUnpaidError"
    },
    {
      "$ref": "#/components/schemas/uploadFailedError"
    },
    {
      "$ref": "#/components/schemas/accountLimitsExceededError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationError"
    },
    {
      "$ref": "#/components/schemas/signatureInvalidError"
    }
  ]
}
object GroupsCreateFileGroupRequest
{
  "type": "object",
  "required": [
    "files[]",
    "pub_key"
  ],
  "properties": {
    "expire": {
      "$ref": "#/components/schemas/expireType"
    },
    "files[]": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Set of files you want to add to the group.\nEach element can be a file UUID with or without the applied image\nprocessing operations.\n"
    },
    "pub_key": {
      "$ref": "#/components/schemas/projectPublicKeyType"
    },
    "signature": {
      "$ref": "#/components/schemas/signatureType"
    }
  }
}
object GroupsCreateFileGroupResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/requestFiledsNumberLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/postRequestParserFailedError"
    },
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/signatureRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationInvalidError"
    },
    {
      "$ref": "#/components/schemas/groupFilesInvalidError"
    },
    {
      "$ref": "#/components/schemas/groupFileURLParsingFailedError"
    },
    {
      "$ref": "#/components/schemas/groupFilesNotFoundError"
    }
  ]
}
object GroupsGetInfo403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/publicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/publicKeyInvalidError"
    }
  ]
}
object GroupsGetInfoResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/groupIdRequiredError"
    }
  ]
}
object UploadCompleteMultipartUpload403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/uploadcarePublicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/uploadcarePublicKeyInvalidError"
    }
  ]
}
object UploadCompleteMultipartUploadRequest
{
  "type": "object",
  "required": [
    "UPLOADCARE_PUB_KEY",
    "uuid"
  ],
  "properties": {
    "uuid": {
      "type": "string",
      "format": "uuid",
      "example": "67947755-1584-4e3f-902b-d4e2bf76a841",
      "description": "File's UUID from the `/multipart/start/` endpoint."
    },
    "UPLOADCARE_PUB_KEY": {
      "$ref": "#/components/schemas/projectPublicKeyType"
    }
  }
}
object UploadCompleteMultipartUploadResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/requestFiledsNumberLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/postRequestParserFailedError"
    },
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/multipartFileIdRequiredError"
    },
    {
      "$ref": "#/components/schemas/uuidInvalidError"
    },
    {
      "$ref": "#/components/schemas/multipartFileAlreadyUploadedError"
    },
    {
      "$ref": "#/components/schemas/multipartUploadSizeTooLargeError"
    },
    {
      "$ref": "#/components/schemas/multipartUploadSizeTooSmallError"
    },
    {
      "$ref": "#/components/schemas/multipartFileCompletionFailedError"
    },
    {
      "$ref": "#/components/schemas/fileTypeForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileInfectedError"
    }
  ]
}
object UploadDirectUpload400Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/requestFiledsNumberLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/postRequestParserFailedError"
    },
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyDuplicatedError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeysNumberTooBigError"
    },
    {
      "$ref": "#/components/schemas/signatureRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationInvalidError"
    },
    {
      "$ref": "#/components/schemas/filesRequiredError"
    },
    {
      "$ref": "#/components/schemas/fileSizeLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/fileTypeForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileInfectedError"
    }
  ]
}
object UploadDirectUpload403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/uploadcarePublicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/uploadcarePublicKeyInvalidError"
    },
    {
      "$ref": "#/components/schemas/autoStoreDisabledError"
    },
    {
      "$ref": "#/components/schemas/projectPublicKeyRemovedError"
    },
    {
      "$ref": "#/components/schemas/accountBlockedError"
    },
    {
      "$ref": "#/components/schemas/accountUnpaidError"
    },
    {
      "$ref": "#/components/schemas/uploadFailedError"
    },
    {
      "$ref": "#/components/schemas/accountLimitsExceededError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationError"
    },
    {
      "$ref": "#/components/schemas/signatureInvalidError"
    }
  ]
}
string UploadDirectUpload413Response
{
  "type": "string",
  "default": "The size of the request is too large."
}
string UploadDirectUpload429Response
{
  "type": "string",
  "default": "Request was throttled."
}
object UploadDirectUploadRequest
{
  "type": "object",
  "required": [
    "{filename}",
    "UPLOADCARE_PUB_KEY"
  ],
  "properties": {
    "expire": {
      "$ref": "#/components/schemas/expireType"
    },
    "signature": {
      "$ref": "#/components/schemas/signatureType"
    },
    "{filename}": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "binary"
      },
      "description": "File's content"
    },
    "metadata[{key}]": {
      "$ref": "#/components/schemas/metadataValue"
    },
    "UPLOADCARE_STORE": {
      "$ref": "#/components/schemas/storeType"
    },
    "UPLOADCARE_PUB_KEY": {
      "$ref": "#/components/schemas/projectPublicKeyType"
    }
  }
}
object UploadDirectUploadResponse
{
  "type": "object",
  "example": {
    "my_file.jpg": "17be4678-dab7-4bc7-8753-28914a22960a"
  },
  "properties": {
    "filename": {
      "type": "string",
      "format": "uuid"
    }
  },
  "description": "JSON object where the key is the file name of the uploaded file and\nthe value is the unique ID of the file on our systems.\n"
}
object UploadFileInfo403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/publicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/publicKeyInvalidError"
    }
  ]
}
object UploadFileInfoResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileIdRequiredError"
    },
    {
      "$ref": "#/components/schemas/fileIdInvalidError"
    }
  ]
}
object UploadFromUrlFiles400Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/requestFiledsNumberLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/postRequestParserFailedError"
    },
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyDuplicatedError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeysNumberTooBigError"
    },
    {
      "$ref": "#/components/schemas/signatureRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationInvalidError"
    },
    {
      "$ref": "#/components/schemas/sourceURLRequiredError"
    },
    {
      "$ref": "#/components/schemas/urlParsingFailedError"
    },
    {
      "$ref": "#/components/schemas/urlSchemeRequiredError"
    },
    {
      "$ref": "#/components/schemas/urlSchemeInvalidError"
    },
    {
      "$ref": "#/components/schemas/urlHostRequiredError"
    },
    {
      "$ref": "#/components/schemas/urlBlacklistedError"
    },
    {
      "$ref": "#/components/schemas/hostnameNotFoundError"
    },
    {
      "$ref": "#/components/schemas/urlHostMalformedError"
    },
    {
      "$ref": "#/components/schemas/urlHostPrivateIPForbiddenError"
    }
  ]
}
object UploadFromUrlFiles403Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/publicKeyRequiredError"
    },
    {
      "$ref": "#/components/schemas/publicKeyInvalidError"
    },
    {
      "$ref": "#/components/schemas/autoStoreDisabledError"
    },
    {
      "$ref": "#/components/schemas/projectPublicKeyRemovedError"
    },
    {
      "$ref": "#/components/schemas/accountBlockedError"
    },
    {
      "$ref": "#/components/schemas/accountUnpaidError"
    },
    {
      "$ref": "#/components/schemas/uploadFailedError"
    },
    {
      "$ref": "#/components/schemas/accountLimitsExceededError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationError"
    },
    {
      "$ref": "#/components/schemas/signatureInvalidError"
    }
  ]
}
object UploadFromUrlFilesRequest
{
  "type": "object",
  "required": [
    "pub_key",
    "source_url"
  ],
  "properties": {
    "store": {
      "$ref": "#/components/schemas/storeType"
    },
    "expire": {
      "$ref": "#/components/schemas/expireType"
    },
    "pub_key": {
      "$ref": "#/components/schemas/projectPublicKeyType"
    },
    "filename": {
      "type": "string",
      "example": "googlelogo_color_272x92dp.png",
      "description": "Sets the file name of the resource fetched from the source URL.\nIf not defined, the file name is obtained from either HTTP\nresponse headers or the `source_url`'s path.\n\n**Note:** The filename will be sanitized to only contain the following symbols:\n`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._`.\n"
    },
    "signature": {
      "$ref": "#/components/schemas/signatureType"
    },
    "source_url": {
      "type": "string",
      "format": "uri",
      "example": "https://source.unsplash.com/featured",
      "description": "Source URL of the file to fetch and upload.\n\n**Note**: The URL should point to a resource publicly available via HTTP/HTTPS.\n"
    },
    "metadata[{key}]": {
      "$ref": "#/components/schemas/metadataValue"
    },
    "save_URL_duplicates": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "example": "1",
      "description": "Determines if the requested `source_url` should be kept in the history of\nfetched/uploaded URLs. If the value is not defined explicitly, it is set\nto the value of the `check_URL_duplicates` parameter.\n"
    },
    "check_URL_duplicates": {
      "enum": [
        "0",
        "1"
      ],
      "type": "string",
      "default": "0",
      "example": "1",
      "description": "If set to \"1\", enables the `source_url` duplicates prevention.\nSpecifically, if the `source_url` had already been fetched and uploaded previously,\nthis request will return information about the already uploaded file.\n"
    }
  }
}
object UploadFromUrlFilesResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/fromURLUploadResponseSchema"
    },
    {
      "$ref": "#/components/schemas/fileUploadInfoFromURL"
    }
  ]
}
object UploadIndividualFilePartsPutRequest
{
  "type": "object",
  "description": "Part of the uploaded file.\n\nDon't include `https://upload.uploadcare.com/` in this request:\n\n```\ncurl -X PUT \"<presigned-url-x>\" -H \"Content-Type: application/octet-stream\" --data <data-part>\n```\n"
}
object UploadStartMultipart400Response
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/requestFiledsNumberLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/postRequestParserFailedError"
    },
    {
      "$ref": "#/components/schemas/nullCharactersForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyDuplicatedError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeyLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueEmptyError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueForbiddenError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataValueLengthTooBigError"
    },
    {
      "$ref": "#/components/schemas/fileMetadataKeysNumberTooBigError"
    },
    {
      "$ref": "#/components/schemas/signatureRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationRequiredError"
    },
    {
      "$ref": "#/components/schemas/signatureExpirationInvalidError"
    },
    {
      "$ref": "#/components/schemas/requestParamRequiredError"
    },
    {
      "$ref": "#/components/schemas/multipartSizeInvalidError"
    },
    {
      "$ref": "#/components/schemas/multipartFileSizeLimitExceededError"
    },
    {
      "$ref": "#/components/schemas/multipartFileSizeTooSmallError"
    },
    {
      "$ref": "#/components/schemas/multipartPartSizeInvalidError"
    },
    {
      "$ref": "#/components/schemas/multipartPartSizeTooSmallError"
    },
    {
      "$ref": "#/components/schemas/multipartPartSizeTooBigError"
    }
  ]
}
object UploadStartMultipartRequest
{
  "type": "object",
  "required": [
    "filename",
    "content_type",
    "size",
    "UPLOADCARE_PUB_KEY"
  ],
  "properties": {
    "size": {
      "type": "integer",
      "example": 27796904,
      "description": "Precise file size of the uploaded file (in bytes).\n**Note**: The size should not exceed max file size cap for your project.\n"
    },
    "expire": {
      "$ref": "#/components/schemas/expireType"
    },
    "filename": {
      "type": "string",
      "example": "myfile.mp4",
      "description": "Original file name of the uploaded file"
    },
    "part_size": {
      "type": "integer",
      "default": 5242880,
      "example": 10485760,
      "maximum": 5368709120,
      "minimum": 5242880,
      "description": "Multipart Uploads expect that you will split the uploaded file into equally sized\nparts (except for the last part) and then will upload them to AWS S3 (possibly in parallel).\nBy default, we assume that you will upload the files in 5 megabyte chunks,\nso we return a list of presigned AWS S3 URLs accordingly.\nIf you intend to upload large files (for example, larger than a gigabyte),\nwe recommend to bump the part size and to pass the expected chunk size\nto us as a value of the `part_size` parameter (in bytes).\n"
    },
    "signature": {
      "$ref": "#/components/schemas/signatureType"
    },
    "content_type": {
      "type": "string",
      "example": "video/mp4",
      "description": "File's MIME-type."
    },
    "metadata[{key}]": {
      "$ref": "#/components/schemas/metadataValue"
    },
    "UPLOADCARE_STORE": {
      "$ref": "#/components/schemas/storeType"
    },
    "UPLOADCARE_PUB_KEY": {
      "$ref": "#/components/schemas/projectPublicKeyType"
    }
  },
  "description": "Multipart upload parameters to start multipart uploading."
}
object UploadStartMultipartResponse
{
  "type": "object",
  "example": {
    "uuid": "67947755-1584-4e3f-902b-d4e2bf76a841",
    "parts": [
      "<presigned-url-1>",
      "<presigned-url-2>",
      "<presigned-url-3>",
      "<presigned-url-4>",
      "<presigned-url-5>"
    ]
  },
  "required": [
    "uuid",
    "parts"
  ],
  "properties": {
    "uuid": {
      "type": "string",
      "format": "uuid",
      "description": "File's UUID."
    },
    "parts": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri",
        "description": "Upload file parts here."
      }
    }
  }
}
object UploadUrlStatusGetResponse
{
  "anyOf": [
    {
      "$ref": "#/components/schemas/fileUploadInfoWaitingStatus"
    },
    {
      "$ref": "#/components/schemas/fileUploadInfoProgressStatus"
    },
    {
      "$ref": "#/components/schemas/fileUploadInfoSuccessStatus"
    },
    {
      "$ref": "#/components/schemas/fileUploadInfoErrorStatus"
    },
    {
      "$ref": "#/components/schemas/fileUploadInfoUnknownStatus"
    }
  ]
}
string accountBlockedError
{
  "type": "string",
  "default": "Account has been blocked.",
  "example": "#/components/examples/accountBlockedError/value"
}
string accountLimitsExceededError
{
  "type": "string",
  "default": "Account has reached its limits.",
  "example": "#/components/examples/accountLimitsExceededError/value"
}
string accountUnpaidError
{
  "type": "string",
  "default": "Account has been blocked for non payment.",
  "example": "#/components/examples/accountUnpaidError/value"
}
string autoStoreDisabledError
{
  "type": "string",
  "default": "Autostore is disabled.",
  "example": "#/components/examples/autoStoreDisabledError/value"
}
object contentInfo
{
  "type": "object",
  "nullable": true,
  "properties": {
    "mime": {
      "type": "object",
      "required": [
        "mime",
        "type",
        "subtype"
      ],
      "properties": {
        "mime": {
          "type": "string",
          "example": "image/jpeg",
          "description": "Full MIME type."
        },
        "type": {
          "type": "string",
          "example": "image",
          "description": "Type of MIME type."
        },
        "subtype": {
          "type": "string",
          "example": "jpeg",
          "description": "Subtype of MIME type."
        }
      },
      "description": "MIME type."
    },
    "image": {
      "$ref": "#/components/schemas/schemas-imageInfo"
    },
    "video": {
      "$ref": "#/components/schemas/videoInfo"
    }
  },
  "description": "Information about file content."
}
number expireType
{
  "type": "number",
  "example": 1454902434,
  "description": "`expire` must be sent along with your upload request if you would like to use signed uploads.\nThe parameter defines the time during which your signature is valid. It's a UNIX timestamp.\nSee [signed uploads](https://uploadcare.com/docs/security/secure-uploads/) for details.\n"
}
string fileIdInvalidError
{
  "type": "string",
  "default": "file_id is invalid.",
  "example": "#/components/examples/fileIdInvalidError/value"
}
string fileIdRequiredError
{
  "type": "string",
  "default": "file_id is required.",
  "example": "#/components/examples/fileIdRequiredError/value"
}
string fileInfectedError
{
  "type": "string",
  "default": "The file is infected by <VIRUS-NAME> virus.",
  "example": "#/components/examples/fileInfectedError/value"
}
string fileMetadataKeyDuplicatedError
{
  "type": "string",
  "default": "File's metadata key `<KEY>` has a duplicate.",
  "example": "#/components/examples/fileMetadataKeyDuplicatedError/value"
}
string fileMetadataKeyEmptyError
{
  "type": "string",
  "default": "File's metadata key can not be empty.",
  "example": "#/components/examples/fileMetadataKeyEmptyError/value"
}
string fileMetadataKeyForbiddenError
{
  "type": "string",
  "default": "File's metadata key `<KEY>` contains symbols not allowed by the metadata key format.",
  "example": "#/components/examples/fileMetadataKeyForbiddenError/value"
}
string fileMetadataKeyLengthTooBigError
{
  "type": "string",
  "default": "Length of file metadata key `<KEY>` can not be more than <LENGTH> symbols.",
  "example": "#/components/examples/fileMetadataKeyLengthTooBigError/value"
}
string fileMetadataKeysNumberTooBigError
{
  "type": "string",
  "default": "A file can not have more than <NUMBER> metadata keys.",
  "example": "#/components/examples/fileMetadataKeysNumberTooBigError/value"
}
string fileMetadataValueEmptyError
{
  "type": "string",
  "default": "Value of the file metadata key `<KEY>` can not be empty.",
  "example": "#/components/examples/fileMetadataValueEmptyError/value"
}
string fileMetadataValueForbiddenError
{
  "type": "string",
  "default": "Value of file metadata key `<KEY>` contains symbols not allowed by the metadata value format.",
  "example": "#/components/examples/fileMetadataValueForbiddenError/value"
}
string fileMetadataValueLengthTooBigError
{
  "type": "string",
  "default": "Value of file metadata's key `<KEY>` can not be more than <LENGTH> symbols in length.",
  "example": "#/components/examples/fileMetadataValueLengthTooBigError/value"
}
string fileNotFoundError
{
  "type": "string",
  "default": "File is not found.",
  "example": "#/components/examples/fileNotFoundError/value"
}
string fileSizeLimitExceededError
{
  "type": "string",
  "default": "File is too large.",
  "example": "#/components/examples/fileSizeLimitExceededError/value"
}
string fileTypeForbiddenError
{
  "type": "string",
  "default": "Uploading of these file types is not allowed.",
  "example": "#/components/examples/fileTypeForbiddenError/value"
}
object fileUploadInfo
{
  "type": "object",
  "example": {
    "done": 2667636,
    "size": 2667636,
    "uuid": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
    "total": 2667636,
    "file_id": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
    "filename": "IMG0412_123.JPG",
    "is_image": true,
    "is_ready": true,
    "metadata": {
      "pet": "cat",
      "subsystem": "uploader"
    },
    "is_stored": true,
    "mime_type": "image/jpeg",
    "image_info": {
      "dpi": [
        72,
        72
      ],
      "width": 3024,
      "format": "JPEG",
      "height": 4032,
      "sequence": false,
      "color_mode": "RGB",
      "orientation": 6,
      "geo_location": {
        "latitude": 55.62013611111111,
        "longitude": 37.66299166666666
      },
      "datetime_original": "2018-08-20T08:59:50"
    },
    "video_info": null,
    "content_info": {
      "mime": {
        "mime": "image/jpeg",
        "type": "image",
        "subtype": "jpeg"
      },
      "image": {
        "dpi": [
          72,
          72
        ],
        "width": 3024,
        "format": "JPEG",
        "height": 4032,
        "sequence": false,
        "color_mode": "RGB",
        "orientation": 6,
        "geo_location": {
          "latitude": 55.62013611111111,
          "longitude": 37.66299166666666
        },
        "datetime_original": "2018-08-20T08:59:50"
      }
    },
    "original_filename": "IMG-0412_123.JPG"
  },
  "required": [
    "uuid",
    "file_id",
    "size",
    "total",
    "done",
    "original_filename",
    "filename",
    "mime_type",
    "image_info",
    "video_info",
    "content_info",
    "metadata",
    "is_image",
    "is_stored",
    "is_ready"
  ],
  "properties": {
    "done": {
      "type": "integer",
      "example": 145212,
      "description": "Same as `size`."
    },
    "size": {
      "type": "integer",
      "example": 145212,
      "description": "File's size in bytes."
    },
    "uuid": {
      "type": "string",
      "format": "uuid",
      "example": "575ed4e8-f4e8-4c14-a58b-1527b6d9ee46",
      "description": "File's unique ID."
    },
    "total": {
      "type": "integer",
      "example": 145212,
      "description": "Same as `size`."
    },
    "file_id": {
      "type": "string",
      "format": "uuid",
      "example": "575ed4e8-f4e8-4c14-a58b-1527b6d9ee46",
      "description": "Same as `uuid`"
    },
    "filename": {
      "type": "string",
      "example": "testimage_1.jpg",
      "description": "Sanitized `original_filename`."
    },
    "is_image": {
      "type": "boolean",
      "example": true,
      "description": "True if the uploaded file is an image of a supported file format."
    },
    "is_ready": {
      "type": "boolean",
      "example": true,
      "description": "True if the file is ready to be fetched from Uploadcare's CDN."
    },
    "metadata": {
      "$ref": "#/components/schemas/metadata"
    },
    "is_stored": {
      "type": "boolean",
      "example": true,
      "description": "True if the file has been marked as stored."
    },
    "mime_type": {
      "type": "string",
      "example": "image/jpeg",
      "description": "File's MIME-type."
    },
    "s3_bucket": {
      "type": "string",
      "example": "custom-s3-bucket-name",
      "nullable": true,
      "description": "Name of an AWS S3 bucket where the file is stored. Only available if you associate a Foreign Storage Bucket with your project."
    },
    "image_info": {
      "$ref": "#/components/schemas/imageInfo"
    },
    "video_info": {
      "$ref": "#/components/schemas/legacyVideoInfo"
    },
    "content_info": {
      "$ref": "#/components/schemas/contentInfo"
    },
    "original_filename": {
      "type": "string",
      "example": "test-image_1.jpg",
      "description": "Original file of the uploaded file."
    }
  },
  "description": "Information about an uploaded file."
}
object fileUploadInfoErrorStatus
{
  "type": "object",
  "properties": {
    "error": {
      "type": "string",
      "example": "HTTP client error: 404.",
      "description": "Human readable description of the issue with the fetch/upload task.\n"
    },
    "status": {
      "enum": [
        "error"
      ],
      "type": "string",
      "default": "error",
      "description": "The system failed to fetch and/or upload the file.\n"
    },
    "error_code": {
      "type": "string",
      "example": "DownloadFileHTTPClientError",
      "description": "Machine readable error code.\n\nNote: See the [Errors > FromURL upload errors](https://uploadcare.com/api-refs/upload-api/) section of this\npage for a full list of all possible error codes.\n"
    }
  }
}
object fileUploadInfoFromURL
{
  "allOf": [
    {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "file_info"
          ],
          "type": "string",
          "example": "file_info"
        }
      }
    },
    {
      "$ref": "#/components/schemas/fileUploadInfo"
    }
  ]
}
object fileUploadInfoProgressStatus
{
  "type": "object",
  "properties": {
    "done": {
      "type": "number",
      "example": 134427,
      "description": "How many bytes of the file have been fetched so far.\n"
    },
    "total": {
      "type": "number",
      "example": 732434,
      "nullable": true,
      "description": "The expected size of the fetched file (in bytes).\n\n**Note:** the value can be missing if the server we are fetching the file from\ndoes not provide the information or if the server is returning the file in, for\nexample, [compressed form](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding).\n"
    },
    "status": {
      "enum": [
        "progress"
      ],
      "type": "string",
      "default": "progress",
      "description": "The system is fetching/uploading the file.\n"
    }
  }
}
object fileUploadInfoSuccessStatus
{
  "allOf": [
    {
      "type": "object",
      "properties": {
        "status": {
          "enum": [
            "success"
          ],
          "type": "string",
          "default": "success",
          "description": "The file has been fetched/uploaded successfully."
        }
      }
    },
    {
      "$ref": "#/components/schemas/fileUploadInfo"
    }
  ],
  "example": {
    "done": 2667636,
    "size": 2667636,
    "uuid": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
    "total": 2667636,
    "status": "success",
    "file_id": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
    "filename": "IMG0412_123.JPG",
    "is_image": true,
    "is_ready": true,
    "metadata": {
      "pet": "cat",
      "subsystem": "uploader"
    },
    "is_stored": true,
    "mime_type": "image/jpeg",
    "image_info": {
      "dpi": [
        72,
        72
      ],
      "width": 3024,
      "format": "JPEG",
      "height": 4032,
      "sequence": false,
      "color_mode": "RGB",
      "orientation": 6,
      "geo_location": {
        "latitude": 55.62013611111111,
        "longitude": 37.66299166666666
      },
      "datetime_original": "2018-08-20T08:59:50"
    },
    "video_info": null,
    "content_info": {
      "mime": {
        "mime": "image/jpeg",
        "type": "image",
        "subtype": "jpeg"
      },
      "image": {
        "dpi": [
          72,
          72
        ],
        "width": 3024,
        "format": "JPEG",
        "height": 4032,
        "sequence": false,
        "color_mode": "RGB",
        "orientation": 6,
        "geo_location": {
          "latitude": 55.62013611111111,
          "longitude": 37.66299166666666
        },
        "datetime_original": "2018-08-20T08:59:50"
      }
    },
    "original_filename": "IMG-0412_123.JPG"
  }
}
object fileUploadInfoUnknownStatus
{
  "type": "object",
  "properties": {
    "status": {
      "enum": [
        "unknown"
      ],
      "type": "string",
      "default": "unknown",
      "description": "The system does not have information about the task.\n\nNote: Uploadcare stores information about the `/from_url/` tasks for a limited\nperiod of time only. The endpoint can return the status `unknown` for the tasks\nthat are tool old (or that have not been created at all).\n"
    }
  }
}
object fileUploadInfoWaitingStatus
{
  "type": "object",
  "properties": {
    "status": {
      "enum": [
        "waiting"
      ],
      "type": "string",
      "default": "waiting",
      "description": "The system is preparing to handle the request.\n"
    }
  }
}
string filesRequiredError
{
  "type": "string",
  "default": "Request does not contain files.",
  "example": "#/components/examples/filesRequiredError/value"
}
object fromURLUploadResponseSchema
{
  "type": "object",
  "properties": {
    "type": {
      "enum": [
        "token"
      ],
      "type": "string",
      "example": "token"
    },
    "token": {
      "type": "string",
      "format": "uuid",
      "example": "945ebb27-1fd6-46c6-a859-b9893712d650",
      "description": "Token to identify a `/from_url/` request."
    }
  },
  "description": "`/from_url/` upload response."
}
string groupFileURLParsingFailedError
{
  "type": "string",
  "default": "No files[N] parameters found.",
  "example": "#/components/examples/groupFileURLParsingFailedError/value"
}
string groupFilesInvalidError
{
  "type": "string",
  "default": "This is not valid file url: %s.",
  "example": "#/components/examples/groupFilesInvalidError/value"
}
string groupFilesNotFoundError
{
  "type": "string",
  "default": "Some files not found.",
  "example": "#/components/examples/groupFilesNotFoundError/value"
}
string groupIdRequiredError
{
  "type": "string",
  "default": "group_id is required.",
  "example": "#/components/examples/groupIdRequiredError/value"
}
object groupInfo
{
  "type": "object",
  "example": {
    "id": "0d712319-b970-4602-850c-bae1ced521a6~1",
    "url": "https://api.uploadcare.com/groups/0d712319-b970-4602-850c-bae1ced521a6~1/",
    "files": [
      {
        "done": 2667636,
        "size": 2667636,
        "uuid": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
        "total": 2667636,
        "file_id": "be3b4d5e-179d-460e-8a5d-69112ac86cbb",
        "filename": "IMG0412_123.JPG",
        "is_image": true,
        "is_ready": true,
        "metadata": {
          "pet": "cat",
          "subsystem": "uploader"
        },
        "is_stored": true,
        "mime_type": "image/jpeg",
        "image_info": {
          "dpi": [
            72,
            72
          ],
          "width": 3024,
          "format": "JPEG",
          "height": 4032,
          "sequence": false,
          "color_mode": "RGB",
          "orientation": 6,
          "geo_location": {
            "latitude": 55.62013611111111,
            "longitude": 37.66299166666666
          },
          "datetime_original": "2018-08-20T08:59:50"
        },
        "video_info": null,
        "content_info": {
          "mime": {
            "mime": "image/jpeg",
            "type": "image",
            "subtype": "jpeg"
          },
          "image": {
            "dpi": [
              72,
              72
            ],
            "width": 3024,
            "format": "JPEG",
            "height": 4032,
            "sequence": false,
            "color_mode": "RGB",
            "orientation": 6,
            "geo_location": {
              "latitude": 55.62013611111111,
              "longitude": 37.66299166666666
            },
            "datetime_original": "2018-08-20T08:59:50"
          }
        },
        "default_effects": "resize/x800/",
        "original_filename": "IMG-0412_123.JPG"
      }
    ],
    "cdn_url": "https://ucarecdn.com/0d712319-b970-4602-850c-bae1ced521a6~1/",
    "files_count": 1,
    "datetime_stored": null,
    "datetime_created": "2018-09-12T10:03:38.686710Z"
  },
  "properties": {
    "id": {
      "type": "string",
      "example": "d52d7136-a2e5-4338-9f45-affbf83b857d~2",
      "description": "Group's unique ID."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "example": "https://api.uploadcare.com/groups/d52d7136-a2e5-4338-9f45-affbf83b857d~2/",
      "description": "Group's API resource URL. See the [REST API](https://uploadcare.com/api-refs/upload-api/) documentation for details."
    },
    "files": {
      "type": "array",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "default_effects": {
              "type": "string",
              "format": "uri",
              "example": "resize/x800/",
              "description": "The field contains a set of processing operations applied to the file when the group was created. This set is applied by default when the file is reffered via a group CDN URL and `/nth/N/` operator."
            }
          }
        },
        {
          "$ref": "#/components/schemas/fileUploadInfo"
        }
      ],
      "items": {
        "description": "WARNING: Missing items property in array schema. Missing items property has been filled with this AnyType schema."
      },
      "nullable": true,
      "description": "The list of files in the group. An array may contain null values if a file has been removed.\n"
    },
    "cdn_url": {
      "type": "string",
      "format": "uri",
      "example": "http://www.ucarecdn.com/d52d7136-a2e5-4338-9f45-affbf83b857d~2/",
      "description": "Group's CDN URL."
    },
    "files_count": {
      "type": "number",
      "example": 2,
      "description": "Number of the files in the group."
    },
    "datetime_stored": {
      "type": "string",
      "format": "date-time",
      "example": "2015-09-21T12:39:13.953757Z",
      "nullable": true,
      "deprecated": true,
      "description": "ISO-8601 date and time when the group was marked as stored."
    },
    "datetime_created": {
      "type": "string",
      "format": "date-time",
      "example": "2015-09-21T12:39:13.743754Z",
      "description": "ISO-8601 date and time when the group was created."
    }
  },
  "description": "File group information object."
}
string groupNotFoundError
{
  "type": "string",
  "default": "group_id is invalid.",
  "example": "#/components/examples/groupNotFoundError/value"
}
string hostnameNotFoundError
{
  "type": "string",
  "default": "Host does not exist.",
  "example": "#/components/examples/hostnameNotFoundError/value"
}
object imageInfo
{
  "type": "object",
  "nullable": true,
  "required": [
    "color_mode",
    "orientation",
    "format",
    "height",
    "width",
    "geo_location",
    "datetime_original",
    "dpi",
    "sequence"
  ],
  "properties": {
    "dpi": {
      "type": "array",
      "items": {
        "type": "number",
        "example": 72
      },
      "example": [
        72,
        72
      ],
      "nullable": true,
      "description": "Image DPI for two dimensions."
    },
    "width": {
      "type": "integer",
      "example": 2935,
      "description": "Image width in pixels."
    },
    "format": {
      "type": "string",
      "example": "JPEG",
      "description": "Image format."
    },
    "height": {
      "type": "integer",
      "example": 2352,
      "description": "Image height in pixels."
    },
    "sequence": {
      "type": "boolean",
      "example": false,
      "description": "Set to true if a file contains a sequence of images (GIF for example)."
    },
    "color_mode": {
      "enum": [
        "RGB",
        "RGBA",
        "RGBa",
        "RGBX",
        "L",
        "LA",
        "La",
        "P",
        "PA",
        "CMYK",
        "YCbCr",
        "HSV",
        "LAB"
      ],
      "type": "string",
      "example": "RGBA",
      "description": "Image color mode."
    },
    "orientation": {
      "type": "integer",
      "example": 6,
      "maximum": 8,
      "minimum": 0,
      "nullable": true,
      "description": "Image orientation from EXIF."
    },
    "geo_location": {
      "type": "object",
      "nullable": true,
      "required": [
        "latitude",
        "longitude"
      ],
      "properties": {
        "latitude": {
          "type": "number",
          "example": -1.1884555555555556,
          "description": "Location latitude."
        },
        "longitude": {
          "type": "number",
          "example": 52.66996666666667,
          "description": "Location longitude."
        }
      },
      "description": "Geo-location of image from EXIF."
    },
    "datetime_original": {
      "type": "string",
      "format": "date-time",
      "example": "2018-09-13T16:23:40",
      "nullable": true,
      "description": "Image date and time from EXIF. Please be aware that this data is not always formatted and displayed exactly as it appears in the EXIF."
    }
  },
  "description": "Image metadata."
}
object legacyVideoInfo
{
  "type": "object",
  "nullable": true,
  "properties": {
    "audio": {
      "type": "object",
      "nullable": true,
      "properties": {
        "codec": {
          "type": "string",
          "example": "aac",
          "nullable": true,
          "description": "Audio stream's codec."
        },
        "bitrate": {
          "type": "number",
          "example": 78,
          "nullable": true,
          "description": "Audio stream's bitrate."
        },
        "channels": {
          "type": "string",
          "example": "2",
          "nullable": true,
          "description": "Audio stream's number of channels."
        },
        "sample_rate": {
          "type": "number",
          "example": 44100,
          "nullable": true,
          "description": "Audio stream's sample rate."
        }
      },
      "description": "Audio stream's metadata."
    },
    "video": {
      "type": "object",
      "properties": {
        "codec": {
          "type": "string",
          "example": "h264",
          "description": "Video stream codec."
        },
        "width": {
          "type": "number",
          "example": 640,
          "description": "Video stream's image width."
        },
        "height": {
          "type": "number",
          "example": 360,
          "description": "Video stream's image height."
        },
        "bitrate": {
          "type": "number",
          "example": 315,
          "description": "Video stream's bitrate."
        },
        "frame_rate": {
          "type": "number",
          "example": 30,
          "description": "Video stream's frame rate."
        }
      },
      "description": "Video stream's metadata."
    },
    "format": {
      "type": "string",
      "example": "mp4",
      "description": "Video file's format."
    },
    "bitrate": {
      "type": "number",
      "example": 393,
      "description": "Video file's bitrate."
    },
    "duration": {
      "type": "number",
      "example": 261827,
      "description": "Video file's duration in milliseconds."
    }
  },
  "description": "Video metadata."
}
object metadata
{
  "type": "object",
  "nullable": true,
  "description": "Arbitrary metadata associated with a file."
}
string metadataValue
{
  "type": "string",
  "example": "#/components/examples/metadataValue/value",
  "maxLength": 512,
  "minLength": 1,
  "description": "Arbitrary metadata associated with the file.\nSee [docs](https://uploadcare.com/docs/file-metadata/) and [REST API v0.7](https://uploadcare.com/api-refs/upload-api/) for more information.\n"
}
string multipartFileAlreadyUploadedError
{
  "type": "string",
  "default": "File is already uploaded.",
  "example": "#/components/examples/multipartFileAlreadyUploadedError/value"
}
string multipartFileCompletionFailedError
{
  "type": "string",
  "default": "Can not complete upload. Wrong parts size?",
  "example": "#/components/examples/multipartFileCompletionFailedError/value"
}
string multipartFileIdRequiredError
{
  "type": "string",
  "default": "uuid is required.",
  "example": "#/components/examples/multipartFileIdRequiredError/value"
}
string multipartFileSizeLimitExceededError
{
  "type": "string",
  "default": "File size exceeds project limit.",
  "example": "#/components/examples/multipartFileSizeLimitExceededError/value"
}
string multipartFileSizeTooSmallError
{
  "type": "string",
  "default": "File size can not be less than <SIZE> bytes. Please use direct upload instead of multipart.",
  "example": "#/components/examples/multipartFileSizeTooSmallError/value"
}
string multipartPartSizeInvalidError
{
  "type": "string",
  "default": "Multipart Upload Part Size should be an integer.",
  "example": "#/components/examples/multipartPartSizeInvalidError/value"
}
string multipartPartSizeTooBigError
{
  "type": "string",
  "default": "Multipart Upload Part Size can not be more than <SIZE> bytes.",
  "example": "#/components/examples/multipartPartSizeTooBigError/value"
}
string multipartPartSizeTooSmallError
{
  "type": "string",
  "default": "Multipart Upload Part Size can not be less than <SIZE> bytes.",
  "example": "#/components/examples/multipartPartSizeTooSmallError/value"
}
string multipartSizeInvalidError
{
  "type": "string",
  "default": "size should be integer.",
  "example": "#/components/examples/multipartSizeInvalidError/value"
}
string multipartUploadSizeTooLargeError
{
  "type": "string",
  "default": "Uploaded size is more than expected.",
  "example": "#/components/examples/multipartUploadSizeTooLargeError/value"
}
string multipartUploadSizeTooSmallError
{
  "type": "string",
  "default": "File size mismatch. Not all parts uploaded?",
  "example": "#/components/examples/multipartUploadSizeTooSmallError/value"
}
string nullCharactersForbiddenError
{
  "type": "string",
  "default": "Null characters are not allowed.",
  "example": "#/components/examples/nullCharactersForbiddenError/value"
}
string postRequestParserFailedError
{
  "type": "string",
  "default": "HTTP POST request parsing failed.",
  "example": "#/components/examples/postRequestParserFailedError/value"
}
string projectPublicKeyRemovedError
{
  "type": "string",
  "default": "Project <PUB-KEY> is marked as removed.",
  "example": "#/components/examples/projectPublicKeyRemovedError/value"
}
string projectPublicKeyType
{
  "type": "string",
  "example": "caa9d29da887ee88ffe6",
  "description": "Public key identifying an Uploadcare project your uploads will go to."
}
string publicKeyInvalidError
{
  "type": "string",
  "default": "pub_key is invalid.",
  "example": "#/components/examples/publicKeyInvalidError/value"
}
string publicKeyRequiredError
{
  "type": "string",
  "default": "pub_key is required.",
  "example": "#/components/examples/publicKeyRequiredError/value"
}
string requestFiledsNumberLimitExceededError
{
  "type": "string",
  "default": "The request contains too many HTTP POST fields.",
  "example": "#/components/examples/requestFiledsNumberLimitExceededError/value"
}
string requestParamRequiredError
{
  "type": "string",
  "default": "<PARAMETER-NAME> is required.",
  "example": "#/components/examples/requestParamRequiredError/value"
}
object schemas-imageInfo
{
  "type": "object",
  "required": [
    "color_mode",
    "orientation",
    "format",
    "height",
    "width",
    "geo_location",
    "datetime_original",
    "dpi",
    "sequence"
  ],
  "properties": {
    "dpi": {
      "type": "array",
      "items": {
        "type": "number",
        "example": 72
      },
      "example": [
        72,
        72
      ],
      "maxItems": 2,
      "minItems": 2,
      "nullable": true,
      "description": "Image DPI for two dimensions."
    },
    "width": {
      "type": "integer",
      "example": 2935,
      "description": "Image width in pixels."
    },
    "format": {
      "type": "string",
      "example": "JPEG",
      "description": "Image format."
    },
    "height": {
      "type": "integer",
      "example": 2352,
      "description": "Image height in pixels."
    },
    "sequence": {
      "type": "boolean",
      "example": false,
      "description": "Set to true if a file contains a sequence of images (GIF for example)."
    },
    "color_mode": {
      "enum": [
        "RGB",
        "RGBA",
        "RGBa",
        "RGBX",
        "L",
        "LA",
        "La",
        "P",
        "PA",
        "CMYK",
        "YCbCr",
        "HSV",
        "LAB"
      ],
      "type": "string",
      "example": "RGBA",
      "description": "Image color mode."
    },
    "orientation": {
      "type": "integer",
      "example": 6,
      "maximum": 8,
      "minimum": 0,
      "nullable": true,
      "description": "Image orientation from EXIF."
    },
    "geo_location": {
      "type": "object",
      "nullable": true,
      "required": [
        "latitude",
        "longitude"
      ],
      "properties": {
        "latitude": {
          "type": "number",
          "example": -1.1884555555555556,
          "description": "Location latitude."
        },
        "longitude": {
          "type": "number",
          "example": 52.66996666666667,
          "description": "Location longitude."
        }
      },
      "description": "Geo-location of image from EXIF."
    },
    "datetime_original": {
      "type": "string",
      "format": "date-time",
      "example": "2018-09-13T16:23:40",
      "nullable": true,
      "description": "Image date and time from EXIF. Please be aware that this data is not always formatted and displayed exactly as it appears in the EXIF."
    }
  },
  "description": "Image metadata."
}
string signatureExpirationError
{
  "type": "string",
  "default": "Expired signature.",
  "example": "#/components/examples/signatureExpirationError/value"
}
string signatureExpirationInvalidError
{
  "type": "string",
  "default": "`expire` must be a UNIX timestamp.",
  "example": "#/components/examples/signatureExpirationInvalidError/value"
}
string signatureExpirationRequiredError
{
  "type": "string",
  "default": "`expire` is required.",
  "example": "#/components/examples/signatureExpirationRequiredError/value"
}
string signatureInvalidError
{
  "type": "string",
  "default": "Invalid signature.",
  "example": "#/components/examples/signatureInvalidError/value"
}
string signatureRequiredError
{
  "type": "string",
  "default": "`signature` is required.",
  "example": "#/components/examples/signatureRequiredError/value"
}
string signatureType
{
  "type": "string",
  "example": "04b29480233f4def5c875875b6bdc3b1",
  "description": "`signature` must be sent along with your upload request if you would like to use signed uploads.\nThe signature should be generated on your backend.\n**Note**: the process requires knowledge of your Uploadcare Project's Secret key.\nSee [signed uploads](https://uploadcare.com/docs/security/secure-uploads/) for details.\n"
}
string sourceURLRequiredError
{
  "type": "string",
  "default": "source_url is required.",
  "example": "#/components/examples/sourceURLRequiredError/value"
}
string storeType
{
  "enum": [
    "0",
    "1",
    "auto"
  ],
  "type": "string",
  "default": "auto",
  "example": "1",
  "description": "Determines if an uploaded file should be marked as temporary or permanent.\n\nThe parameter can have the following values:\n- `0` - do not mark an uploaded file as stored and remove it after 24 hours\n- `1` - mark the uploaded file as stored\n- `auto` - delegate the choice of the file-storing behavior to a project-wide setting called\n  [auto-store](https://app.uploadcare.com/projects/-/settings/#storage).\n\nThe default value depends on the user registration date.\n\nFor all users registered after February 12, 2024 (UTC 13:30), the default value is `auto`. \nFile-storing behavior depends entirely on what is set in the \n[storage settings](https://app.uploadcare.com/projects/-/settings/#storage) in the Dashboard.\n\nFor users registered before February 12, 2024, the default value is `0`. \nTo ensure that file storage in the project matches the settings in the Dashboard,\nchange the value to `auto`.\n"
}
string tokenRequiredError
{
  "type": "string",
  "default": "token is required.",
  "example": "#/components/examples/tokenRequiredError/value"
}
string uploadFailedError
{
  "type": "string",
  "default": "Upload failed.",
  "example": "#/components/examples/uploadFailedError/value"
}
string uploadcarePublicKeyInvalidError
{
  "type": "string",
  "default": "UPLOADCARE_PUB_KEY is invalid.",
  "example": "#/components/examples/uploadcarePublicKeyInvalidError/value"
}
string uploadcarePublicKeyRequiredError
{
  "type": "string",
  "default": "UPLOADCARE_PUB_KEY is required.",
  "example": "#/components/examples/uploadcarePublicKeyRequiredError/value"
}
string urlBlacklistedError
{
  "type": "string",
  "default": "Source is blacklisted.",
  "example": "#/components/examples/urlBlacklistedError/value"
}
string urlHostMalformedError
{
  "type": "string",
  "default": "URL host is malformed.",
  "example": "#/components/examples/urlHostMalformedError/value"
}
string urlHostPrivateIPForbiddenError
{
  "type": "string",
  "default": "Only public IPs are allowed.",
  "example": "#/components/examples/urlHostPrivateIPForbiddenError/value"
}
string urlHostRequiredError
{
  "type": "string",
  "default": "No URL host supplied.",
  "example": "#/components/examples/urlHostRequiredError/value"
}
string urlParsingFailedError
{
  "type": "string",
  "default": "Failed to parse URL.",
  "example": "#/components/examples/urlParsingFailedError/value"
}
string urlSchemeInvalidError
{
  "type": "string",
  "default": "Invalid URL scheme.",
  "example": "#/components/examples/urlSchemeInvalidError/value"
}
string urlSchemeRequiredError
{
  "type": "string",
  "default": "No URL scheme supplied.",
  "example": "#/components/examples/urlSchemeRequiredError/value"
}
string uuidInvalidError
{
  "type": "string",
  "default": "uuid is invalid.",
  "example": "#/components/examples/uuidInvalidError/value"
}
object videoInfo
{
  "type": "object",
  "required": [
    "duration",
    "format",
    "bitrate",
    "audio",
    "video"
  ],
  "properties": {
    "audio": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "bitrate",
          "codec",
          "sample_rate",
          "channels"
        ],
        "properties": {
          "codec": {
            "type": "string",
            "example": "aac",
            "nullable": true,
            "description": "Audio stream's codec."
          },
          "bitrate": {
            "type": "integer",
            "example": 78,
            "nullable": true,
            "description": "Audio stream's bitrate."
          },
          "channels": {
            "type": "integer",
            "example": 2,
            "nullable": true,
            "description": "Audio stream's number of channels."
          },
          "sample_rate": {
            "type": "integer",
            "example": 44100,
            "nullable": true,
            "description": "Audio stream's sample rate."
          }
        },
        "description": "Audio stream's metadata."
      }
    },
    "video": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "height",
          "width",
          "frame_rate",
          "bitrate",
          "codec"
        ],
        "properties": {
          "codec": {
            "type": "string",
            "example": "h264",
            "nullable": true,
            "description": "Video stream's codec."
          },
          "width": {
            "type": "integer",
            "example": 640,
            "description": "Video stream's image width."
          },
          "height": {
            "type": "integer",
            "example": 360,
            "description": "Video stream's image height."
          },
          "bitrate": {
            "type": "integer",
            "example": 315,
            "nullable": true,
            "description": "Video stream's bitrate."
          },
          "frame_rate": {
            "type": "number",
            "example": 30,
            "description": "Video stream's frame rate."
          }
        },
        "description": "Video stream's metadata."
      }
    },
    "format": {
      "type": "string",
      "example": "mp4",
      "description": "Video file's format."
    },
    "bitrate": {
      "type": "integer",
      "example": 393,
      "nullable": true,
      "description": "Video file's bitrate."
    },
    "duration": {
      "type": "integer",
      "example": 261827,
      "nullable": true,
      "description": "Video file's duration in milliseconds."
    }
  },
  "description": "Video metadata."
}