openapi: 3.1.0 info: title: Cloudinary API v1.1 version: 0.7.4 # x-release-please-version license: name: MIT url: https://opensource.org/licenses/MIT contact: name: Cloudinary Support email: support@cloudinary.com url: https://support.cloudinary.com termsOfService: https://cloudinary.com/tou servers: - url: https://{region}.cloudinary.com description: Regional API endpoints for optimal performance. variables: region: default: api description: Regional endpoint selection enum: - api - api-eu - api-ap - url: https://{host} description: Custom domains for enterprise deployments. variables: host: default: api.cloudinary.com description: API host domain. security: - basicAuth: [] - oauth2: - asset_management - upload - media_generation tags: - name: upload description: Uploads files to the active product environment. - name: upload_presets description: Enables you to manage upload presets. - name: metadata_fields description: Enables you to manage structured metadata fields. - name: metadata_rules description: Enables you to set up dependencies and relationships between structured metadata fields and options. - name: upload_mappings description: Enables you to manage upload mappings - name: assets description: Enables you to manage all the resources (assets) stored in your product environment. - name: asset_relations description: Enables you to manage relationships between assets. - name: metadata description: Enables you to manage the custom metadata (tags/context/structured metadata) stored with specific assets. - name: moderations description: Enables you to manage moderation definitions. - name: streaming_profiles description: Enables you to manage streaming profiles - name: video_analytics description: Gets video analytics - name: transformations description: Enables you to manage named and unnamed transformations. - name: triggers description: Enables you to manage event triggers and notifications. - name: explode description: Generates derived images from a multi-frame/page file. - name: tags description: Enables you to manage the tags used in your product environment. - name: backups description: Enables you to manage backup versions. - name: initial_backup description: Enables you to initiate and track an initial backup of existing assets in your product environment. - name: folders description: Enables you to manage the asset folders in your product environment. - name: usage description: Gets usage details - name: search description: APIs for searching resources using text and visual search capabilities - name: people description: APIs for accessing and managing face recognition results. - name: Generation description: Generate images from text prompts using AI models. - name: Tasks description: Query the status of async generation tasks. paths: /v1_1/{cloud_name}/{resource_type}/upload: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/upload_resource_type' post: operationId: upload summary: Uploads media assets (images, videos, raw files) to your Cloudinary product environment description: | Uploads media assets (images, videos, raw files) to your Cloudinary product environment. The file is securely stored in the cloud with backup and revision history. Cloudinary automatically analyzes and saves important data about each asset, such as format, size, resolution, and prominent colors, which is indexed to enable searching on those attributes. Supports uploading from: - Local file paths (SDKs/MCP server only). For MCP server path MUST start with file:// - Remote HTTP/HTTPS URLs - Base64 Data URIs (max ~60 MB) - Private storage buckets (S3 or Google Storage) - FTP addresses The uploaded asset is immediately available for transformation and delivery upon successful upload. Transform media files using transformation syntax in delivery URLs, which creates derived files accessible immediately without re-uploading the original. tags: - upload x-speakeasy-mcp: name: upload-asset scopes: - librarian - builder title: Upload Asset requestBody: $ref: '#/components/requestBodies/upload_request_body' responses: '200': description: Successful upload content: application/json: schema: anyOf: - $ref: '#/components/schemas/upload_response' - $ref: '#/components/schemas/async_upload_response' '302': description: Redirect to callback URL (when 'callback' parameter is provided and request is not XHR). content: text/html: schema: $ref: '#/components/schemas/html_redirect' '400': description: Bad request (e.g., missing parameters, invalid type, target exists without overwrite) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Not allowed (e.g., insufficient permissions) content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found (e.g. when uploading from a remote URL that does not exist) content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/upload: parameters: - $ref: '#/components/parameters/cloud_name' post: operationId: uploadNoResourceType summary: Upload with automatic file type detection description: Uploads a file to Cloudinary. The file type is automatically detected based on its content, so you don't need to specify the type manually. tags: - upload x-speakeasy-mcp: disabled: true requestBody: $ref: '#/components/requestBodies/upload_request_body' responses: '200': description: Successful upload content: application/json: schema: anyOf: - $ref: '#/components/schemas/upload_response' - $ref: '#/components/schemas/async_upload_response' '302': description: Redirect to callback URL (when 'callback' parameter is provided and request is not XHR). content: text/html: schema: $ref: '#/components/schemas/html_redirect' '400': description: Bad request (e.g., missing parameters, invalid type, target exists without overwrite) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Not allowed (e.g., insufficient permissions) content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found (e.g. when uploading from a remote URL that does not exist) content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/upload_chunked: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/upload_resource_type' post: operationId: uploadChunk summary: Upload a single chunk of a large file description: | Uploads a single chunk of a large file as part of a chunked upload process. This enables efficient upload of large files with the ability to resume interrupted uploads. Each request uploads one chunk of the file. It is required for any files that are larger than 100 MB. This is often relevant for video files, as they tend to have larger file sizes. Minimum chunk size is 5 MB. The `file` field accepts either the chunk bytes (multipart) or an HTTP/HTTPS URL. When a URL is supplied, Cloudinary downloads it and validates the response `Content-Length` against the chunk-size contract (exact match in the uniform-size flow; within 5 MB floor and 5 GiB cap in explicit-order mode) before storing any bytes. A mismatch aborts with 400 and persists no state. The remote server must return a `Content-Length` header; chunked transfer-encoded responses are rejected. **Explicit-order totals** (`X-Upload-Part-Number`): `X-Upload-Total-Parts` may be omitted on non-terminal chunks until the session total *N* is established by any earlier chunk that sent the header. After *N* is known, the chunk for part index *N* must include `X-Upload-Total-Parts: N`. Whenever the header appears, its value must be the same integer *N* for that `X-Unique-Upload-Id` (no conflicting totals). tags: - upload x-speakeasy-mcp: disabled: true scopes: - librarian parameters: - name: Content-Range in: header required: false schema: type: string description: | The range of bytes being uploaded in the current chunk, in the format "bytes start-end/total". For example, "bytes 0-999999/3000000" indicates the first 1MB chunk of a 3MB file. Required for the default uniform-size chunked upload flow. In explicit-order mode (`X-Upload-Part-Number`), this header remains optional; clients do not have to send `Content-Range`, `X-Upload-Part-Number`, and `X-Upload-Total-Parts` together on every request—`X-Upload-Total-Parts` may be omitted on some chunks subject to the rules documented on that header. example: bytes 0-999999/3000000 - name: X-Unique-Upload-Id in: header required: true schema: type: string description: A unique identifier for the upload. Must be the same for all chunks of the same file. example: 2fd4e1c67a2d28fce - name: X-Upload-Part-Number in: header required: false schema: type: integer minimum: 1 maximum: 10000 description: | The 1-based part number for this chunk when uploading parts of uneven size with explicit client-supplied order. Requires `X-Unique-Upload-Id`. When present, activates explicit-order mode and `Content-Range` is optional. Parts must use contiguous indices `1`…`N`, where `N` is the session total. If `X-Upload-Total-Parts` is omitted on a chunk, the server still enforces `X-Upload-Part-Number ≤ N` once `N` has been learned from any prior chunk for the same upload that supplied `X-Upload-Total-Parts`. example: 2 - name: X-Upload-Total-Parts in: header required: false schema: type: integer minimum: 1 maximum: 10000 description: | Declared session total `N` (optional on chunks where omission is allowed). When present on a chunk, it must satisfy either `X-Upload-Part-Number < X-Upload-Total-Parts` (non-terminal) or `X-Upload-Part-Number == X-Upload-Total-Parts` (terminal). The same integer `N` must appear whenever this header is sent for a given `X-Unique-Upload-Id` (no conflicting declared totals). Chunks may omit the header entirely until `N` is established; after `N` is known, non-terminal indices may still omit it. Once `N` is known for the session, the request for part index `N` (the final part) must include `X-Upload-Total-Parts: N`. The upload completes when all parts `1`…`N` have been received. example: 3 requestBody: $ref: '#/components/requestBodies/upload_request_body' responses: '200': description: Chunk upload successful. For all but the final chunk, this returns upload status. For the final chunk, it returns the complete upload response. content: application/json: schema: anyOf: - $ref: '#/components/schemas/non_final_chunk_upload_response' - $ref: '#/components/schemas/upload_response' - $ref: '#/components/schemas/async_upload_response' '302': description: Redirect to callback URL (when 'callback' parameter is provided and request is not XHR). content: text/html: schema: $ref: '#/components/schemas/html_redirect' '400': description: | Bad request. Examples: invalid Content-Range format; chunk size below the 5 MB minimum (non-final parts); part_number outside 1..total_parts; when `file` is a URL: Content-Length missing, Content-Length does not match the declared chunk size, Content-Length exceeds the 5 GiB per-chunk cap, or the remote server returned a non-2xx status. Explicit-order mode examples: `X-Upload-Total-Parts` disagrees with an earlier declared total for the same upload; part index `N` reached without `X-Upload-Total-Parts` after `N` was already established; `X-Upload-Part-Number` greater than `X-Upload-Total-Parts`; non-terminal chunk shape where `X-Upload-Part-Number` equals `X-Upload-Total-Parts` but the part is not the terminal index (invalid combination for the declared totals). content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authorization required content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Not allowed (e.g., insufficient permissions) content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/rename: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' post: x-speakeasy-mcp: name: asset-rename scopes: - librarian title: Asset Rename idempotentHint: true summary: Updates an existing asset's identifier (public ID) and optionally other metadata in your Cloudinary account tags: - assets operationId: renameAsset requestBody: description: The rename request parameters. required: true content: application/json: schema: $ref: '#/components/schemas/rename_request' responses: '200': description: Asset renamed successfully content: application/json: schema: $ref: '#/components/schemas/upload_response' '400': description: Bad request (e.g., missing parameters, invalid type, target exists without overwrite) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Source asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/download: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' get: x-speakeasy-mcp: name: download-asset disabled: true scopes: - admin summary: Generates a download link for a specific asset (image) tags: - assets operationId: downloadAsset parameters: - $ref: '#/components/parameters/public_id_query' - name: format in: query required: false schema: type: string description: The format to convert the asset to before downloading. - $ref: '#/components/parameters/delivery_type_query' - name: expires_at in: query required: false schema: type: integer format: int64 description: Unix timestamp indicating when the download URL should expire. - name: attachment in: query required: false schema: type: boolean default: false description: Whether to force download as an attachment. - name: target_filename in: query required: false schema: type: string description: The desired filename for the downloaded file. - name: transformation in: query required: false schema: type: string description: A transformation to apply to the asset before downloading. - $ref: '#/components/parameters/api_key_query' - $ref: '#/components/parameters/signature_query' - $ref: '#/components/parameters/timestamp_query' responses: '200': description: Asset downloaded successfully content: image/*: schema: type: string format: binary video/*: schema: type: string format: binary application/octet-stream: schema: type: string format: binary '400': description: Bad request (e.g., missing parameters, invalid format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden (e.g., insufficient permissions for private assets) content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/destroy: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' post: operationId: destroyAsset summary: Destroys an asset/resource tags: - upload requestBody: description: The asset to destroy and related options. required: true content: application/json: schema: $ref: '#/components/schemas/destroy_request' responses: '200': description: Asset/resource destroyed successfully or not found content: application/json: schema: $ref: '#/components/schemas/destroy_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset/resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/explode: parameters: - $ref: '#/components/parameters/cloud_name' - name: resource_type in: path required: true schema: type: string enum: - image description: The type of resource to explode. Only "image" is supported. post: summary: Create derived images from multi-page file description: Generates derived images for each of the individual pages/frames in a multi-page/frame file (such as a PDF or animated image). tags: - explode operationId: explodeResource requestBody: description: The explode operation parameters. required: true content: application/json: schema: $ref: '#/components/schemas/explode_request' responses: '200': description: Explode operation started successfully content: application/json: schema: $ref: '#/components/schemas/explode_response' '400': description: Bad request (e.g., missing pg_all parameter, invalid transformation) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/explicit: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' post: summary: Apply operations on an existing asset description: | Applies actions such as transformations, tags, or metadata updates to an existing asset without re-uploading it. This is useful for applying new transformations, adding tags, or updating metadata on assets that are already in your cloud. Note: Always prefer delivery URL transformations over this method, unless eager transformations are specifically required. tags: - assets operationId: explicitAsset requestBody: description: The asset and operations to apply. required: true content: application/json: schema: $ref: '#/components/schemas/explicit_request' responses: '200': description: Operations applied successfully content: application/json: schema: $ref: '#/components/schemas/upload_response' '400': description: Bad request (e.g., missing parameters, invalid type) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden (e.g., insufficient permissions for private assets) content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/generate_archive: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/archive_resource_type' post: x-speakeasy-mcp: name: generate-archive scopes: - librarian title: Generate Archive summary: Creates an archive (ZIP or TGZ file) that contains a set of assets from your product environment. description: Creates a downloadable ZIP or other archive format containing the specified resources. tags: - assets operationId: generateArchive requestBody: description: The archive generation parameters. required: true content: application/json: schema: $ref: '#/components/schemas/generate_archive_request' responses: '200': description: Archive successfully generated or downloaded content: application/octet-stream: schema: type: string format: binary application/json: schema: $ref: '#/components/schemas/generate_archive_response' example: asset_id: 3cd9f196fe3ee1882c0f66223bc568f9 public_id: atufggsrkjjefdsy90nr.zip version: 1747234673 version_id: 42f240f70d86aab6e9249fe5b664c237 signature: 689ea4a513604414f44f0d779fc7d049bbdad6d2 resource_type: raw created_at: '2025-05-14T14:57:53Z' tags: [] bytes: 3574651 type: upload etag: 47ac8d2c1b74ac107937d6e9181dd047 placeholder: false url: http://res.cloudinary.com/customerafdb058c4adc/raw/upload/v1747234673/atufggsrkjjefdsy90nr.zip secure_url: https://res.cloudinary.com/customerafdb058c4adc/raw/upload/v1747234673/atufggsrkjjefdsy90nr.zip asset_folder: '' display_name: koetjd3qrme0cfcfnjet.zip resource_count: 6 file_count: 6 '400': description: Bad request (e.g., missing parameters, invalid format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/download_backup: parameters: - $ref: '#/components/parameters/cloud_name' get: x-speakeasy-mcp: name: download-asset-backup scope: - advanced_librarian title: Download Asset Backup readOnlyHint: true idempotentHint: true summary: Download a backup copy of an asset tags: - assets operationId: downloadBackupAsset parameters: - $ref: '#/components/parameters/asset_id_query' - name: version_id in: query required: true schema: type: string pattern: ^[0-9a-f]{32}$ description: The version ID of the backup to download. Must be a 32-character hexadecimal string. example: a3978316b0045e5eaf198f4d6885ca35 - $ref: '#/components/parameters/api_key_query' - $ref: '#/components/parameters/signature_query' - $ref: '#/components/parameters/timestamp_query' responses: '200': description: Asset backup downloaded successfully content: application/octet-stream: schema: type: string format: binary image/*: schema: type: string format: binary video/*: schema: type: string format: binary text/plain: schema: type: string format: binary '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' examples: illegal_id: summary: Invalid or non-existent asset_id/version_id value: error: message: Illegal id missing_version_id: summary: Missing version_id parameter value: error: message: Missing required parameter - version_id missing_asset_id: summary: Missing asset_id parameter value: error: message: Missing required parameter - asset_id stale_request: summary: Request timestamp is too old value: error: message: Stale request - reported time is {timestamp} which is more than 1 hour ago '401': description: Authentication failed content: application/json: schema: $ref: '#/components/schemas/api_error' examples: invalid_signature: summary: Invalid signature with signing string value: error: message: Invalid Signature {signature}. String to sign - '{parameters}'. expired_timestamp: summary: Request has expired value: error: message: Request timestamp expired '404': description: Version not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/asset/destroy: post: x-speakeasy-mcp: name: delete-asset scopes: - admin title: Delete Asset destructiveHint: true idempotentHint: true summary: Delete asset by asset ID description: | Deletes an asset using its immutable asset ID. tags: - assets operationId: destroyByAssetId parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The asset to delete and related options. required: true content: application/json: schema: $ref: '#/components/schemas/destroy_by_asset_id_request' responses: '200': description: Resource successfully deleted content: application/json: schema: $ref: '#/components/schemas/destroy_by_asset_id_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/asset/download: parameters: - $ref: '#/components/parameters/cloud_name' get: x-speakeasy-mcp: name: download-asset-by-asset-id disabled: true scopes: - admin summary: Download an asset by asset ID description: | Generates a download link for a specific asset identified by its immutable asset ID, instead of the resource type, delivery type and public ID. tags: - assets operationId: downloadAssetByAssetId parameters: - $ref: '#/components/parameters/asset_id_query' - name: format in: query required: false schema: type: string description: The format to convert the asset to before downloading. - name: transformation in: query required: false schema: type: string description: A transformation to apply to the asset before downloading. - name: attachment in: query required: false schema: type: boolean default: false description: Whether to force download as an attachment. - name: target_filename in: query required: false schema: type: string description: The desired filename for the downloaded file. - name: streaming_attachment in: query required: false schema: type: boolean description: Whether to stream a video asset as an attachment. - name: expires_at in: query required: false schema: type: integer format: int64 description: Unix timestamp indicating when the download URL should expire. - $ref: '#/components/parameters/api_key_query' - $ref: '#/components/parameters/signature_query' - $ref: '#/components/parameters/timestamp_query' responses: '200': description: Asset downloaded successfully content: image/*: schema: type: string format: binary video/*: schema: type: string format: binary application/octet-stream: schema: type: string format: binary '400': description: Bad request (e.g., missing or invalid asset_id) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden (e.g., insufficient permissions for private assets) content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/{resource_type}/text: parameters: - $ref: '#/components/parameters/cloud_name' - name: resource_type in: path required: true schema: type: string enum: - image description: The type of resource to create. Must be "image" for text generation. post: summary: Create image from text description: Dynamically generates an image from a specified text string. tags: - upload operationId: text requestBody: description: The text content and styling parameters for image generation. required: true content: application/json: schema: $ref: '#/components/schemas/text_request' responses: '200': description: Text image created successfully content: application/json: schema: $ref: '#/components/schemas/text_response' '400': description: Bad request (e.g., missing required parameters) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/video/concat: parameters: - $ref: '#/components/parameters/cloud_name' post: operationId: concat summary: Concatenate ordered video segments into a single MP4 asset description: | Accepts an ordered list of remote HTTP(S) URLs pointing to video segments and concatenates them, remuxing the result into a single MP4 asset that is uploaded to your product environment using the supplied upload parameters. Concatenation and the resulting upload happen asynchronously; supply a `notification_url` to be notified when the upload completes. tags: - upload x-speakeasy-mcp: name: concat scopes: - librarian - builder title: Concatenate Video Segments disabled: true requestBody: description: The concat request parameters. required: true content: application/json: schema: $ref: '#/components/schemas/concat_request' responses: '200': description: concat job accepted; the upload completes asynchronously. content: application/json: schema: $ref: '#/components/schemas/concat_response' '400': description: Bad request (e.g., missing urls, invalid upload parameters). content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/transformations: get: x-speakeasy-mcp: name: list-transformations scopes: - admin title: List Transformations readOnlyHint: true idempotentHint: true summary: Lists all transformation definitions in your account, including named transformations description: | Retrieves a list of all transformations, which can be filtered to show either only named or unnamed transformations. tags: - transformations operationId: listTransformations parameters: - $ref: '#/components/parameters/cloud_name' - name: named in: query required: false schema: type: boolean description: Whether to return only named (`true`) or unnamed (`false`) transformations. If this parameter isn't included, both named and unnamed transformations will be returned. - $ref: '#/components/parameters/max_results_query' - $ref: '#/components/parameters/next_cursor_query' responses: '200': description: Transformations retrieved successfully content: application/json: schema: $ref: '#/components/schemas/transformation_list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/transformations/{transformation}: get: x-speakeasy-mcp: name: get-transformation-details scopes: - admin title: Get Transformation Details readOnlyHint: true idempotentHint: true summary: Retrieves details of a specific transformation description: | Retrieves details for a named or unnamed transformation. tags: - transformations operationId: getTransformation parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/transformation' responses: '200': description: Transformation details content: application/json: schema: $ref: '#/components/schemas/transformation_info' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Transformation not found content: application/json: schema: $ref: '#/components/schemas/api_error' post: x-speakeasy-mcp: name: create-transformation scopes: - admin title: Create Transformation summary: Creates a new named transformation by assigning a custom name to a set of transformation parameters description: | Creates a new named transformation with the given name and transformation string. tags: - transformations operationId: createTransformation parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/transformation_name' requestBody: description: The named transformation definition. required: true content: application/json: schema: $ref: '#/components/schemas/create_request' responses: '200': description: Transformation created content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '409': description: Conflict (transformation already exists) content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: update-transformation scopes: - admin title: Update Transformation idempotentHint: true summary: Updates the definition of an existing transformation description: | Updates a named or unnamed transformation. tags: - transformations operationId: updateTransformation parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/transformation' requestBody: description: The updated transformation definition. required: true content: application/json: schema: $ref: '#/components/schemas/update_request' responses: '200': description: Transformation updated content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-transformation scopes: - admin title: Delete Transformation destructiveHint: true idempotentHint: true summary: Deletes a named transformation from your account description: | Delete a named or unnamed transformation. Optionally invalidate derived resources generated using the named transformation. tags: - transformations operationId: deleteTransformation parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/transformation' - name: invalidate in: query required: false schema: type: boolean description: Invalidate derived resources generated using the deleted transformation from CDN. example: true responses: '200': description: Transformation deleted content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Transformation not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/upload_presets: parameters: - $ref: '#/components/parameters/cloud_name' post: x-speakeasy-mcp: name: create-upload-preset scopes: - builder title: Create Upload Preset operationId: createUploadPreset summary: Creates a new upload preset with specified configuration settings tags: - upload_presets parameters: [] responses: '200': description: upload preset created content: application/json: schema: $ref: '#/components/schemas/upload_preset_create_response' '400': description: request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '409': description: preset exists error content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The upload preset configuration. required: true content: application/json: schema: $ref: '#/components/schemas/upload_preset_input' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/upload_preset_input' get: x-speakeasy-mcp: name: list-upload-presets scopes: - builder title: List Upload Presets readOnlyHint: true idempotentHint: true operationId: listUploadPresets summary: Lists all upload presets configured in the account tags: - upload_presets parameters: - name: order_by in: query required: false description: The field to sort presets by. schema: type: string enum: - name - id - created_at - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/max_results_query' - $ref: '#/components/parameters/next_cursor_query' responses: '200': description: upload presets retrieved content: application/json: schema: $ref: '#/components/schemas/upload_preset_list_response' '400': description: request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/upload_presets/{name}: parameters: - $ref: '#/components/parameters/cloud_name' - name: name in: path required: true description: The name of the upload preset. schema: type: string get: x-speakeasy-mcp: name: get-upload-preset-details scopes: - builder title: Get Upload Preset Details readOnlyHint: true idempotentHint: true operationId: getUploadPreset summary: Retrieves details of a single upload preset tags: - upload_presets responses: '200': description: upload preset retrieved content: application/json: schema: $ref: '#/components/schemas/upload_preset_detail' '400': description: request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: preset not found error content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: update-upload-preset scopes: - builder title: Update Upload Preset idempotentHint: true operationId: updateUploadPreset summary: Updates an existing upload preset's configuration settings tags: - upload_presets parameters: [] responses: '200': description: upload preset updated content: application/json: schema: $ref: '#/components/schemas/upload_preset_mutation_response' '400': description: request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: preset not found error content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The updated upload preset configuration. required: true content: application/json: schema: $ref: '#/components/schemas/upload_preset_input' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/upload_preset_input' delete: x-speakeasy-mcp: name: delete-upload-preset scopes: - builder title: Delete Upload Preset destructiveHint: true idempotentHint: true operationId: deleteUploadPreset summary: Deletes an upload preset from the account tags: - upload_presets responses: '200': description: upload preset deleted content: application/json: schema: $ref: '#/components/schemas/upload_preset_mutation_response' '400': description: request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: preset not found error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields: parameters: - $ref: '#/components/parameters/cloud_name' post: x-speakeasy-mcp: name: create-metadata-field scopes: - admin title: Create Metadata Field operationId: createMetadataField summary: Creates a new structured metadata field in your account description: Creates a new metadata field with the specified properties and configuration. tags: - metadata_fields responses: '200': description: metadata field created content: application/json: schema: $ref: '#/components/schemas/metadata_field' '400': description: validation error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The metadata field definition. required: true content: application/json: schema: allOf: - $ref: '#/components/schemas/metadata_field' - required: - type - label get: x-speakeasy-mcp: name: list-metadata-fields scopes: - builder title: List Metadata Fields readOnlyHint: true idempotentHint: true operationId: listMetadataFields summary: Lists all structured metadata fields defined in your Cloudinary product environment description: Retrieves a list of all metadata fields in the product environment based on the provided filters. tags: - metadata_fields parameters: - name: external_ids in: query required: false schema: type: array items: type: string description: The external IDs of the metadata fields to retrieve. if not provided, all metadata fields will be returned. responses: '200': description: metadata fields retrieved content: application/json: schema: $ref: '#/components/schemas/metadata_fields_list_response' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field. get: x-speakeasy-mcp: name: get-metadata-field scopes: - admin title: Get Metadata Field readOnlyHint: true idempotentHint: true operationId: getMetadataField summary: Retrieves the definition of a specific structured metadata field by its identifier (external_id) description: Retrieves detailed information about the specified metadata field. tags: - metadata_fields responses: '200': description: metadata field retrieved content: application/json: schema: $ref: '#/components/schemas/metadata_field' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: update-metadata-field scopes: - admin title: Update Metadata Field idempotentHint: true operationId: updateMetadataField summary: Updates the configuration of an existing metadata field description: Updates the properties and configuration of the specified metadata field. tags: - metadata_fields requestBody: description: The updated metadata field definition. required: true content: application/json: schema: $ref: '#/components/schemas/metadata_field' responses: '200': description: metadata field updated content: application/json: schema: $ref: '#/components/schemas/metadata_field' '400': description: validation error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-metadata-field scopes: - builder title: Delete Metadata Field destructiveHint: true idempotentHint: true operationId: deleteMetadataField summary: Deletes a structured metadata field definition from your account description: Permanently deletes the specified metadata field and all its associated data. tags: - metadata_fields responses: '200': description: metadata field deleted content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: validation error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/datasource/search: parameters: - $ref: '#/components/parameters/cloud_name' post: operationId: searchMetadataFieldDatasource summary: Search across all metadata field datasources description: Performs a search across all metadata field datasources to find matching values. tags: - metadata_fields requestBody: description: The datasource search query. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_search_request' responses: '200': description: search results content: application/json: schema: type: array items: $ref: '#/components/schemas/datasource_search_result' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/order: parameters: - $ref: '#/components/parameters/cloud_name' put: operationId: reorderMetadataFields summary: Reorder all metadata fields description: Changes the display order of all metadata fields based on specified criteria. tags: - metadata_fields requestBody: description: The new ordering for metadata fields. required: true content: application/json: schema: $ref: '#/components/schemas/reorder_metadata_fields_request' responses: '200': description: metadata fields reordered content: application/json: schema: $ref: '#/components/schemas/metadata_fields_list_response' '400': description: invalid parameters content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}/reorder: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field to reorder. put: operationId: reorderMetadataField summary: Change position of metadata field description: Changes the display position of a specific metadata field within the list. tags: - metadata_fields requestBody: description: The new position for the metadata field. required: true content: application/json: schema: $ref: '#/components/schemas/reorder_metadata_field_request' responses: '200': description: metadata fields reordered content: application/json: schema: $ref: '#/components/schemas/metadata_fields_list_response' '400': description: invalid position content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}/datasource: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field to update the datasource for. put: x-speakeasy-mcp: name: update-metadata-datasource-values scopes: - builder title: Update Metadata Datasource Values idempotentHint: true operationId: updateMetadataFieldDatasource summary: Updates the allowed values (the datasource) for a specified metadata field description: Updates the values in a metadata field's datasource, including adding, modifying, or changing the order of values. tags: - metadata_fields requestBody: description: The updated datasource values. required: true content: application/json: schema: $ref: '#/components/schemas/update_datasource_request' responses: '200': description: datasource updated content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '400': description: invalid request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' '420': description: metadata field is already updating content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-metadata-datasource-values scopes: - builder title: Delete Metadata Datasource Values destructiveHint: true idempotentHint: true operationId: deleteMetadataFieldDatasource summary: Removes one or more allowed values from a metadata field's datasource description: Removes specific values from a metadata field's datasource by their external IDs. tags: - metadata_fields requestBody: description: The datasource entry external IDs to delete. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_external_ids_request' responses: '200': description: datasource values deleted content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '400': description: invalid request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}/datasource/search: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field to search the datasource for. post: operationId: searchDatasourceInMDField summary: Search datasource values in a metadata field description: Performs a search within a specific metadata field's datasource to find matching values, with support for exact or partial matches. tags: - metadata_fields parameters: - name: max_results in: query required: false schema: type: integer default: 255 description: The maximum number of results to return. - name: term in: query required: false schema: type: string description: The term to search for. can be any substring of the value. - name: exact_match in: query required: false schema: type: boolean default: false description: Whether to search for an exact match. requestBody: description: The datasource search query for this field. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_search_in_field_request' responses: '200': description: search results content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}/datasource/order: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field whose datasource is reordered. post: x-speakeasy-mcp: name: order-metadata-datasource-post scopes: - builder title: Order Metadata Datasource idempotentHint: true disabled: true operationId: orderMetadataFieldDatasourcePost summary: Order the datasource values of a metadata field description: Reorders the allowed values (the datasource) of a metadata field according to the given field and direction. This is the backward-compatible variant of the order endpoint. tags: - metadata_fields requestBody: description: The ordering criteria for the datasource values. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_order_request' responses: '200': description: datasource reordered content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '400': description: invalid request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: order-metadata-datasource scopes: - builder title: Order Metadata Datasource idempotentHint: true disabled: true operationId: orderMetadataFieldDatasource summary: Order the datasource values of a metadata field description: Reorders the allowed values (the datasource) of a metadata field according to the given field and direction. tags: - metadata_fields requestBody: description: The ordering criteria for the datasource values. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_order_request' responses: '200': description: datasource reordered content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '400': description: invalid request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_fields/{external_id}/datasource_restore: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The external ID of the metadata field to restore the datasource values for. post: operationId: restoreMetadataFieldDatasource summary: Restore datasource values description: Restores datasource values that have been deleted. tags: - metadata_fields requestBody: description: The datasource entry external IDs to restore. required: true content: application/json: schema: $ref: '#/components/schemas/datasource_external_ids_request' responses: '200': description: datasource values restored content: application/json: schema: $ref: '#/components/schemas/metadata_field_datasource_values_array' '400': description: invalid request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata field not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_rules: parameters: - $ref: '#/components/parameters/cloud_name' post: x-speakeasy-mcp: name: create-metadata-rule scopes: - builder title: Create Metadata Rule operationId: createMetadataRule summary: Creates a new conditional metadata rule description: Creates a new metadata rule with the specified properties and configuration. tags: - metadata_rules responses: '200': description: metadata rule created. content: application/json: schema: $ref: '#/components/schemas/metadata_rule_response' '400': description: validation error. content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions. content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The metadata rule to create. required: true content: application/json: schema: $ref: '#/components/schemas/metadata_rule_create' get: x-speakeasy-mcp: name: list-metadata-rules scopes: - builder title: List Metadata Rules readOnlyHint: true idempotentHint: true operationId: listMetadataRules summary: Retrieves a list of all conditional metadata rules defined in your account description: Retrieves a list of all metadata rules in the cloud. tags: - metadata_rules responses: '200': description: metadata rules retrieved. content: application/json: schema: $ref: '#/components/schemas/metadata_rules_list_response' '401': description: authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/metadata_rules/{external_id}: parameters: - $ref: '#/components/parameters/cloud_name' - name: external_id in: path required: true schema: type: string description: The unique identifier of the metadata rule. put: x-speakeasy-mcp: name: update-metadata-rule scopes: - builder title: Update Metadata Rule idempotentHint: true operationId: updateMetadataRule summary: Updates an existing conditional metadata rule's definition description: Updates the properties and configuration of an existing metadata rule. tags: - metadata_rules requestBody: description: The updated metadata rule definition. required: true content: application/json: schema: $ref: '#/components/schemas/metadata_rule_update' responses: '200': description: metadata rule updated. content: application/json: schema: $ref: '#/components/schemas/metadata_rule_response' '400': description: validation error. content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions. content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata rule not found. content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-metadata-rule scopes: - builder title: Delete Metadata Rule destructiveHint: true idempotentHint: true operationId: deleteMetadataRule summary: Deletes a conditional metadata rule by its ID description: Permanently deletes a metadata rule. tags: - metadata_rules responses: '200': description: metadata rule deleted. content: application/json: schema: $ref: '#/components/schemas/success_response' '400': description: validation error. content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: insufficient permissions. content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: metadata rule not found. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/upload_mappings: parameters: - $ref: '#/components/parameters/cloud_name' get: x-speakeasy-mcp: name: list-upload-mappings scopes: - builder title: List Upload Mappings readOnlyHint: true idempotentHint: true operationId: listUploadMappings summary: Retrieves a list of all upload mapping rules configured in your Cloudinary product environment description: | Returns a list of all upload mappings defined for your account. Upload mappings allow you to map an upload preset to a specific folder and URL template. tags: - upload_mappings parameters: - name: folder in: query required: false description: Get details of a specific mapping by folder name schema: type: string - $ref: '#/components/parameters/next_cursor_query' - $ref: '#/components/parameters/max_results_query' responses: '200': description: Upload mappings retrieved successfully content: application/json: schema: oneOf: - $ref: '#/components/schemas/upload_mapping_list_response' - $ref: '#/components/schemas/upload_mapping' '400': description: Validation error (e.g. invalid next_cursor) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error - Invalid API key or secret content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Mapping not found for the specified folder content: application/json: schema: $ref: '#/components/schemas/api_error' post: x-speakeasy-mcp: name: create-upload-mapping scopes: - builder title: Create Upload Mapping operationId: createUploadMapping summary: Creates a new upload mapping description: Creates a new upload mapping for the specified folder tags: - upload_mappings requestBody: description: The upload mapping folder and URL template. required: true content: application/json: schema: $ref: '#/components/schemas/upload_mapping_input' responses: '200': description: Upload mapping created successfully content: application/json: schema: $ref: '#/components/schemas/upload_mapping_create_response' example: message: created folder: my_folder external_id: 1bce826e-ec50-45c6-9f86-c858948c7158 '400': description: Validation error (e.g. invalid template format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error - Invalid API key or secret content: application/json: schema: $ref: '#/components/schemas/api_error' '409': description: A mapping for this folder already exists content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: update-upload-mapping scopes: - builder title: Update Upload Mapping idempotentHint: true operationId: updateUploadMapping summary: Updates an existing upload mapping by changing its remote URL template for a given folder description: Updates the URL template for an existing folder mapping tags: - upload_mappings requestBody: description: The updated upload mapping folder and URL template. required: true content: application/json: schema: $ref: '#/components/schemas/upload_mapping_input' responses: '200': description: Upload mapping updated successfully content: application/json: schema: $ref: '#/components/schemas/upload_mapping_mutation_response' example: message: updated external_id: 1bce826e-ec50-45c6-9f86-c858948c7158 '400': description: Validation error (e.g. invalid template format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error - Invalid API key or secret content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: No mapping found for the specified folder content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-upload-mapping scopes: - builder title: Delete Upload Mapping destructiveHint: true idempotentHint: true operationId: deleteUploadMapping summary: Deletes a folder upload mapping description: Permanently deletes the upload mapping for the specified folder tags: - upload_mappings parameters: - name: folder in: query required: true description: The folder name of the mapping to delete schema: type: string responses: '200': description: Upload mapping deleted successfully content: application/json: schema: $ref: '#/components/schemas/upload_mapping_mutation_response' example: message: deleted external_id: 1bce826e-ec50-45c6-9f86-c858948c7158 '401': description: Authentication error - Invalid API key or secret content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: No mapping found for the specified folder content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/upload_mappings/replace: parameters: - $ref: '#/components/parameters/cloud_name' put: operationId: replaceUploadMappings summary: Replaces all upload mappings tags: - upload_mappings responses: '200': description: upload mappings replaced content: application/json: schema: $ref: '#/components/schemas/message_response' example: message: replaced '400': description: validation error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The complete set of upload mappings to replace existing ones. required: true content: application/json: schema: $ref: '#/components/schemas/replace_upload_mappings_request' /v1_1/{cloud_name}/triggers: parameters: - $ref: '#/components/parameters/cloud_name' get: x-speakeasy-mcp: name: list-triggers scopes: - admin title: List Triggers readOnlyHint: true idempotentHint: true operationId: listTrigger summary: Lists all webhook notification triggers configured for your product environment description: | Retrieves a list of all event triggers and notifications within your product environment. tags: - triggers parameters: - name: event_type in: query required: false description: The type of event that will trigger the notification response. schema: $ref: '#/components/schemas/event_type' responses: '200': description: Triggers retrieved successfully content: application/json: schema: $ref: '#/components/schemas/trigger_list_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid value a for parameter event_type '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials post: x-speakeasy-mcp: name: create-trigger scopes: - admin title: Create Trigger operationId: createTrigger summary: Creates a new notification trigger (webhook) by specifying an event type and a destination description: | Creates a new trigger. Your product environment supports triggers up to a maximum determined by multiplying the number of unique event types by the limit of 30 notification URLs. tags: - triggers requestBody: description: The webhook notification trigger to create. required: true content: application/json: schema: $ref: '#/components/schemas/create_trigger_request' responses: '201': description: Trigger created successfully content: application/json: schema: $ref: '#/components/schemas/trigger_info' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: limit_reached '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '409': description: Validation error - Record already exists content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: record_already_exists /v1_1/{cloud_name}/triggers/{id}: parameters: - $ref: '#/components/parameters/cloud_name' - name: id in: path required: true schema: type: string description: The ID of the trigger. example: c2c822dd1aa41ba6d81299df8b5ae949 put: x-speakeasy-mcp: name: update-trigger scopes: - admin title: Update Trigger idempotentHint: true operationId: updateTrigger summary: Updates the callback URL of an existing webhook trigger in your Cloudinary account description: Updates a notification URL for a trigger. tags: - triggers requestBody: description: The updated trigger configuration. required: true content: application/json: schema: $ref: '#/components/schemas/update_trigger_request' responses: '200': description: Trigger updated successfully content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: missing_attributes '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '404': description: No trigger found with the specified id content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: record_not_found delete: x-speakeasy-mcp: name: delete-trigger scopes: - admin title: Delete Trigger destructiveHint: true idempotentHint: true operationId: deleteTrigger summary: Deletes a notification trigger description: Deletes a trigger. tags: - triggers responses: '200': description: Trigger deleted successfully content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: invalid_or_malformed_attribute '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '404': description: No trigger found with the specified id content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: record_not_found /v1_1/{cloud_name}/triggers/{id}/test: parameters: - $ref: '#/components/parameters/cloud_name' - name: id in: path required: true schema: type: string description: The ID of the trigger to test. example: c2c822dd1aa41ba6d81299df8b5ae949 post: x-speakeasy-mcp: name: test-trigger scopes: - admin title: Test Trigger Filter readOnlyHint: true idempotentHint: true operationId: testTrigger summary: Tests an existing trigger's filter against sample data description: | Evaluates an existing trigger's filter against provided sample data. Use this endpoint to verify that a trigger's filter will match expected events. tags: - triggers requestBody: description: The test data for the trigger. required: false content: application/json: schema: $ref: '#/components/schemas/test_trigger_request' responses: '200': description: Test completed successfully content: application/json: schema: $ref: '#/components/schemas/test_trigger_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' examples: invalid_sample_data: value: error: message: invalid_sample_data_json '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '404': description: No trigger found with the specified id content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: record_not_found /v1_1/{cloud_name}/resources: get: summary: Get resource types description: Returns a list of all resource types that correspond to assets currently in your product environment. tags: - assets operationId: listResourceTypes parameters: - $ref: '#/components/parameters/cloud_name' responses: '200': description: The list of resource types. content: application/json: schema: $ref: '#/components/schemas/resource_types_response' '401': description: Authentication failed. content: application/json: schema: allOf: - $ref: '#/components/schemas/api_error' - example: error: message: Invalid credentials /v1_1/{cloud_name}/resources/image: get: x-speakeasy-mcp: name: list-images scopes: - librarian title: List Images readOnlyHint: true idempotentHint: true summary: Get image assets description: | Retrieves a list of image assets. Results can be filtered by various criteria like tags, prefix, or specific public IDs. tags: - assets operationId: listImages parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/delivery_type_all_query' - $ref: '#/components/parameters/prefix' - $ref: '#/components/parameters/public_ids_query' - $ref: '#/components/parameters/tags_query' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/start_at' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/video: get: x-speakeasy-mcp: name: list-videos scopes: - librarian title: List Videos readOnlyHint: true idempotentHint: true summary: Get video assets description: | Retrieves a list of video assets. Results can be filtered by various criteria like tags, prefix, or specific public IDs. tags: - assets operationId: listVideos parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/delivery_type_all_query' - $ref: '#/components/parameters/prefix' - $ref: '#/components/parameters/public_ids_query' - $ref: '#/components/parameters/tags_query' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/start_at' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/raw: get: x-speakeasy-mcp: name: list-files scopes: - librarian title: List Files readOnlyHint: true idempotentHint: true summary: Get raw assets description: | Retrieves a list of raw assets. Results can be filtered by various criteria like tags, prefix, or specific public IDs. tags: - assets operationId: listRawFiles parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/delivery_type_all_query' - $ref: '#/components/parameters/prefix' - $ref: '#/components/parameters/public_ids_query' - $ref: '#/components/parameters/tags_query' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/start_at' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/by_asset_folder: get: summary: Get resources by asset folder description: Retrieves a list of resources within a specific asset folder. Requires folder decoupling to be enabled. tags: - assets operationId: listResourcesByAssetFolder parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_folder_query' - $ref: '#/components/parameters/resource_type_query' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/by_asset_ids: get: summary: Get resources by asset IDs description: Retrieves details for specific resources using their asset IDs (or external IDs). tags: - assets operationId: listResourcesByAssetIDs parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_ids_query' - $ref: '#/components/parameters/resource_type_query' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: One or more asset IDs not found (partial success possible) content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/{resource_type}/context: get: summary: Get resources by context description: Retrieves resources matching specific context key/value pairs. tags: - assets operationId: listResourcesByContext parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/context_key' - $ref: '#/components/parameters/context_value' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/fields' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/{resource_type}/moderations/{moderation_kind}/{moderation_status}: get: summary: Get resources by moderation kind and status description: Retrieves resources matching specific moderation kind and status. tags: - assets - moderations operationId: listResourcesByModerationKindAndStatus parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/moderation_kind' - $ref: '#/components/parameters/moderation_status' - $ref: '#/components/parameters/fields' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' - $ref: '#/components/parameters/direction' responses: '200': description: List of resources retrieved content: application/json: schema: $ref: '#/components/schemas/list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/restore: post: summary: Restore assets by asset ID description: Restores one or more resources from backup using their asset IDs. Can optionally specify versions to restore. tags: - assets operationId: restoreResourcesByAssetIDs parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The asset IDs to restore and optional version parameters. required: true content: application/json: schema: $ref: '#/components/schemas/restore_request' responses: '200': description: Resources restored successfully content: application/json: schema: $ref: '#/components/schemas/restore_response' examples: restoreResponseFullRestoreExample: $ref: '#/components/examples/RestoreResourcesFullRestoreExample' restoreResponsePartialRestoreExample: $ref: '#/components/examples/RestoreResourcesPartialRestoreExample' restoreResponseFailedRestoreExample: $ref: '#/components/examples/RestoreResourcesFailedRestoreExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' examples: invalid_asset_id: summary: Invalid asset ID format value: error: message: 'Invalid asset_id: abc123' missing_parameter: summary: Missing required parameter value: error: message: asset_ids parameter is required version_count_mismatch: summary: Version count doesn't match asset_ids count value: error: message: versions count must match ids count '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' examples: unauthorized: summary: Invalid API credentials value: error: message: Invalid signature '403': description: Forbidden - insufficient permissions content: application/json: schema: $ref: '#/components/schemas/api_error' examples: insufficient_permissions: summary: No permission to restore assets value: error: message: Update operation not authorized for account /v1_1/{cloud_name}/resources/by_external_ids: get: summary: Get resources by external IDs description: Retrieves details for specific resources using their external IDs (or asset IDs). tags: - assets operationId: listResourcesByExternalIDs x-speakeasy-ignore: true parameters: - $ref: '#/components/parameters/cloud_name' - name: external_ids in: query required: true explode: false schema: type: array items: type: string description: List of external IDs for identifying the assets to retrieve. Either external_ids or asset_ids must be provided. - $ref: '#/components/parameters/resource_type_query' - $ref: '#/components/parameters/fields' - $ref: '#/components/parameters/tags_query' - $ref: '#/components/parameters/context_query' - $ref: '#/components/parameters/metadata_query' - $ref: '#/components/parameters/moderations_query' responses: '200': description: Successfully retrieved resources content: application/json: schema: $ref: '#/components/schemas/list_response' examples: listResourcesExample: $ref: '#/components/examples/ListResourcesResponseExample' '400': description: Bad request - missing required parameters content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: One or more external IDs not found (partial success possible) content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/{resource_type}/{type}: delete: summary: Delete resources by public ID description: Deletes assets uploaded to your product environment, identified by their public IDs. tags: - assets operationId: deleteResourcesByPublicId parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/delivery_type_all' requestBody: description: The public IDs and options for the resources to delete. required: true content: application/json: schema: $ref: '#/components/schemas/DeleteResourceByPublicIdsRequest' responses: '200': description: Resource successfully deleted content: application/json: schema: type: object examples: deleteResourceResponseExample: $ref: '#/components/examples/DeleteResourcesResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resources not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/{resource_type}/{type}/{public_id}: get: summary: Get resource by public ID description: Returns the details of a single resource specified by its public ID. tags: - assets operationId: getResourceByPublicId parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/delivery_type_all' - $ref: '#/components/parameters/public_id' - $ref: '#/components/parameters/colors' - $ref: '#/components/parameters/media_metadata' - $ref: '#/components/parameters/faces' - $ref: '#/components/parameters/quality_analysis' - $ref: '#/components/parameters/accessibility_analysis' - $ref: '#/components/parameters/pages' - $ref: '#/components/parameters/phash' - $ref: '#/components/parameters/coordinates' - $ref: '#/components/parameters/versions' - $ref: '#/components/parameters/max_derived_results' - $ref: '#/components/parameters/derived_next_cursor' responses: '200': description: Resource details retrieved content: application/json: schema: $ref: '#/components/schemas/info' examples: getResourceResponseExample: $ref: '#/components/examples/GetResourceResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' post: summary: Update asset by public ID description: | Updates one or more attributes of a specified resource (asset) identified by its public ID. Note that you can also update many attributes of an existing asset using the explicit method, which is not rate limited. tags: - assets operationId: updateResourceByPublicId parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/delivery_type_all' - $ref: '#/components/parameters/public_id' requestBody: description: The asset attributes to update. required: true content: application/json: schema: $ref: '#/components/schemas/ResourceUpdateRequest' responses: '200': description: Asset successfully updated. content: application/json: schema: $ref: '#/components/schemas/info' examples: updateResourceResponseExample: $ref: '#/components/examples/UpdateResourceResponseExample' '400': description: Bad request - Invalid parameters or values. content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized - Invalid API key or secret. content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/{asset_id}: get: x-speakeasy-mcp: name: get-asset-details scopes: - librarian title: Get Asset Details readOnlyHint: true idempotentHint: true summary: Get resource by asset ID description: Returns the details of a single resource specified by its asset ID. tags: - assets operationId: getResourceByAssetId parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_id' - $ref: '#/components/parameters/colors' - $ref: '#/components/parameters/media_metadata' - $ref: '#/components/parameters/faces' - $ref: '#/components/parameters/quality_analysis' - $ref: '#/components/parameters/accessibility_analysis' - $ref: '#/components/parameters/pages' - $ref: '#/components/parameters/phash' - $ref: '#/components/parameters/coordinates' - $ref: '#/components/parameters/versions' - $ref: '#/components/parameters/max_derived_results' - $ref: '#/components/parameters/derived_next_cursor' responses: '200': description: Resource details retrieved content: application/json: schema: $ref: '#/components/schemas/info' examples: getResourceResponseExample: $ref: '#/components/examples/GetResourceResponseExample' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: asset-update scopes: - librarian title: Asset Update idempotentHint: true summary: Updates an existing asset's metadata, tags, and other attributes using its asset ID description: | Updates one or more attributes of a specified resource (asset) by its asset ID. This enables you to update details of an asset by its unique and immutable identifier, regardless of public ID, display name, asset folder, resource type or delivery type. Note that you can also update attributes of an existing asset using the explicit API endpoint. tags: - assets operationId: updateResourceByAssetId parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_id' requestBody: description: The asset attributes to update. required: true content: application/json: schema: $ref: '#/components/schemas/ResourceUpdateRequest' responses: '200': description: Resource successfully updated. content: application/json: schema: $ref: '#/components/schemas/info' examples: updateResourceResponseExample: $ref: '#/components/examples/UpdateResourceResponseExample' '400': description: Bad request - Invalid parameters or values. content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized - Invalid API key or secret. content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/tags/{resource_type}: get: x-speakeasy-mcp: name: list-tags scopes: - librarian title: List Tags readOnlyHint: true idempotentHint: true summary: Retrieves a list of tags currently applied to assets in your Cloudinary account description: | Retrieves a comprehensive list of all tags that exist in your product environment for assets of the specified type. [Cloudinary Admin API documentation](https://cloudinary.com/documentation/admin_api) tags: - assets - tags operationId: listResourceTags parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/prefix_tags' - $ref: '#/components/parameters/next_cursor' - $ref: '#/components/parameters/max_results' responses: '200': description: List of tags retrieved content: application/json: schema: $ref: '#/components/schemas/tags_list_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/backup/{asset_id}: delete: summary: Delete backed up versions description: | Deletes specific backed up versions of an asset identified by asset ID. This operation is irreversible and deleted versions cannot be recovered. tags: - assets - backups operationId: deleteBackupVersions parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_id' requestBody: description: The asset IDs and version IDs to delete. required: true content: application/json: schema: $ref: '#/components/schemas/delete_backup_versions_request' responses: '200': description: Backup versions successfully deleted content: application/json: schema: $ref: '#/components/schemas/delete_backup_versions_response' '207': description: Multi-status - some versions deleted successfully, others failed content: application/json: schema: $ref: '#/components/schemas/delete_backup_versions_partial_response' '400': description: Bad request - Invalid parameters or values content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized - Invalid API key or secret content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/usage: get: x-speakeasy-mcp: name: get-usage-details scopes: - admin title: Get Usage Details readOnlyHint: true idempotentHint: true summary: Retrieves comprehensive usage metrics and account statistics description: A report on the status of product environment usage, including storage, credits, bandwidth, requests, number of resources, and add-on usage. No date parameter needed to get current usage statistics. tags: - usage operationId: getUsage parameters: - $ref: '#/components/parameters/cloud_name' - name: date in: query required: false description: The date for which to retrieve usage details (YYYY-MM-DD). If not specified, returns the current usage. schema: type: string format: date pattern: ^\d{4}-\d{2}-\d{2}$ responses: '200': description: Usage details retrieved successfully content: application/json: schema: $ref: '#/components/schemas/usage_response' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/video/analytics/views: get: summary: Get video views description: | Retrieves analytics data for video views. Results can be filtered using expressions based on various criteria such as video public ID, view duration, viewer information, and more. tags: - video_analytics operationId: getVideoViews parameters: - $ref: '#/components/parameters/cloud_name' - name: expression in: query required: false schema: type: string description: 'A set of conditions used to limit the results to rows that match those conditions. For example: `?expression=video_public_id=skate`' - $ref: '#/components/parameters/max_results_query' - name: sort_by in: query required: false schema: type: string enum: - view_ended_at - video_duration - view_watch_time - '-view_ended_at' - '-video_duration' - '-view_watch_time' default: '-view_ended_at' description: Specifies the expression field by which to sort the results. Prepend values with a '-' to reverse the order. - $ref: '#/components/parameters/next_cursor_query' responses: '200': description: List of video views retrieved content: application/json: schema: $ref: '#/components/schemas/video_views_response' example: request_id: 1d39ccc69109b1cefac697957bda7952 next_cursor: 2a54714067686dc630b44e3b863163dc data: - video_public_id: dog video_duration: 100 video_transformation: w_100,h_100 video_extension: mp4 viewer_application_name: Chrome viewer_location_country_code: US viewer_os_identifier: Linux view_watch_time: 313 view_ended_at: '2025-05-13T09:59:21.000Z' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/related_assets/{asset_id}: post: x-speakeasy-mcp: name: create-asset-relations scopes: - librarian title: Create Asset Relations operationId: createAssetRelationsByAssetId summary: Add related assets by asset ID description: Relates an asset to other assets by their asset IDs, an immutable identifier, regardless of public ID, display name, asset folder, resource type or delivery type. This is a bidirectional process, meaning that the asset will also be added as a related_asset to all the other assets specified. The relation is also a one to many relationship, where the asset is related to all the assets specified, but those assets aren't also related to each other. tags: - asset_relations parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_id' requestBody: description: The asset IDs to relate. required: true content: application/json: schema: $ref: '#/components/schemas/relate_assets_by_asset_id_request' responses: '200': description: Successfully created all asset relations content: application/json: schema: $ref: '#/components/schemas/asset_relations_response' '207': description: Partially successful - some relations were created, some failed content: application/json: schema: $ref: '#/components/schemas/asset_relations_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-asset-relations scopes: - librarian title: Delete Asset Relations destructiveHint: true idempotentHint: true operationId: deleteAssetRelationsByAssetId summary: Delete asset relations by asset ID description: Unrelates the asset from other assets, specified by their asset IDs, an immutable identifier, regardless of public ID, display name, asset folder, resource type or delivery type. This is a bidirectional process, meaning that the asset will also be removed as a related_asset from all the other assets specified. tags: - asset_relations parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/asset_id' requestBody: description: The asset IDs to unrelate. required: true content: application/json: schema: $ref: '#/components/schemas/unrelate_assets_by_asset_id_request' responses: '200': description: Successfully deleted all asset relations content: application/json: schema: $ref: '#/components/schemas/asset_relations_delete_response' '207': description: Partially successful - some relations were deleted, some failed content: application/json: schema: $ref: '#/components/schemas/asset_relations_delete_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/related_assets/{resource_type}/{type}/{public_id}: post: operationId: createAssetRelationsByPublicId summary: Create asset relations by public ID description: Relates an asset to other assets by public IDs. This allows you to indicate that the asset is logically related to other assets in some way (e.g., similar content, or a peripheral asset like video/transcript, etc). This is a bidirectional process, meaning that the asset is also added as a related_asset to all the other assets specified. The relation is also a one to many relationship, where the asset is related to all the assets specified, but those assets aren't also related to each other. tags: - asset_relations parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/delivery_type' - $ref: '#/components/parameters/public_id' requestBody: description: The assets to relate by public ID. required: true content: application/json: schema: $ref: '#/components/schemas/relate_assets_by_public_id_request' responses: '200': description: Successfully created all asset relations content: application/json: schema: $ref: '#/components/schemas/asset_relations_response' '207': description: Partially successful - some relations were created, some failed content: application/json: schema: $ref: '#/components/schemas/asset_relations_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' delete: operationId: deleteAssetRelationsByPublicId summary: Delete asset relations by public ID description: Unrelates the asset from other assets, specified by public IDs. This is a bidirectional process, meaning that the asset will also be removed as a related_asset from all the other assets specified. tags: - asset_relations parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/resource_type' - $ref: '#/components/parameters/delivery_type' - $ref: '#/components/parameters/public_id' requestBody: description: The assets to unrelate by public ID. required: true content: application/json: schema: $ref: '#/components/schemas/unrelate_assets_by_public_id_request' responses: '200': description: Successfully deleted all asset relations content: application/json: schema: $ref: '#/components/schemas/asset_relations_delete_response' '207': description: Partially successful - some relations were deleted, some failed content: application/json: schema: $ref: '#/components/schemas/asset_relations_delete_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Resource not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/streaming_profiles: parameters: - $ref: '#/components/parameters/cloud_name' post: x-speakeasy-mcp: name: create-streaming-profile scopes: - builder title: Create Streaming Profile operationId: createStreamingProfile summary: Creates a new adaptive streaming profile in your Cloudinary account tags: - streaming_profiles parameters: [] responses: '200': description: Streaming profile created content: application/json: schema: $ref: '#/components/schemas/streaming_profile_data_response' '400': description: Invalid request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '409': description: Profile name already exists content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The streaming profile configuration. required: true content: application/json: schema: $ref: '#/components/schemas/streaming_profile_create' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/streaming_profile_create' get: x-speakeasy-mcp: name: list-streaming-profiles scopes: - builder title: List Streaming Profiles readOnlyHint: true idempotentHint: true operationId: getStreamingProfiles summary: Lists all adaptive streaming profiles (both built-in and custom) defined in your Cloudinary account tags: - streaming_profiles parameters: [] responses: '200': description: Streaming profiles retrieved content: application/json: schema: $ref: '#/components/schemas/streaming_profile_list_response' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/streaming_profiles/{name}: parameters: - $ref: '#/components/parameters/cloud_name' - name: name in: path required: true schema: type: string description: The name of the streaming profile. get: x-speakeasy-mcp: name: get-streaming-profile scopes: - builder title: Get Streaming Profile readOnlyHint: true idempotentHint: true operationId: getStreamingProfile summary: Retrieves the details of a single adaptive streaming profile by its name tags: - streaming_profiles responses: '200': description: Streaming profile retrieved content: application/json: schema: $ref: '#/components/schemas/streaming_profile_data_response' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Profile not found content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: update-streaming-profile scopes: - builder title: Update Streaming Profile idempotentHint: true operationId: updateStreamingProfile summary: Modifies an existing adaptive streaming profile's configuration tags: - streaming_profiles parameters: [] responses: '200': description: Streaming profile updated content: application/json: schema: $ref: '#/components/schemas/streaming_profile_update_response' '400': description: Invalid request error content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Profile not found content: application/json: schema: $ref: '#/components/schemas/api_error' requestBody: description: The updated streaming profile configuration. required: true content: application/json: schema: $ref: '#/components/schemas/streaming_profile_update' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/streaming_profile_update' delete: x-speakeasy-mcp: name: delete-streaming-profile scopes: - builder title: Delete Streaming Profile destructiveHint: true idempotentHint: true operationId: deleteStreamingProfile summary: Delete custom streaming profile or revert built-in profile to the original settings tags: - streaming_profiles responses: '200': description: Streaming profile deleted or reverted content: application/json: schema: $ref: '#/components/schemas/message_response' '400': description: Cannot delete predefined profile content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Profile not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders/{folder}: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/folder_path' get: summary: List sub-folders description: Returns a list of sub-folders under the specified folder path. tags: - folders operationId: showFolder responses: '200': description: List of sub-folders retrieved successfully content: application/json: schema: $ref: '#/components/schemas/folders_list_response' '400': description: Bad request (e.g., invalid path format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' put: x-speakeasy-mcp: name: move-folder scopes: - librarian title: Move Folder idempotentHint: true summary: Renames or moves an entire folder (along with all assets it contains) to a new location description: Renames or moves an entire folder (along with all assets it contains) to a new location within your Cloudinary media library. tags: - folders operationId: updateFolder requestBody: description: The new folder path. required: true content: application/json: schema: $ref: '#/components/schemas/move_folder_request' responses: '200': description: Folder renamed successfully content: application/json: schema: $ref: '#/components/schemas/move_folder_response' '400': description: Bad request (e.g., invalid path format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' post: x-speakeasy-mcp: name: create-folder scopes: - librarian title: Create Folder tags: - folders summary: Creates a new empty folder in your Cloudinary media library description: Creates a new folder at the specified path operationId: createFolder parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/folder_path' responses: '200': description: Folder created successfully content: application/json: schema: $ref: '#/components/schemas/create_folder_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/api_error' '409': description: Folder already exists content: application/json: schema: $ref: '#/components/schemas/api_error' delete: x-speakeasy-mcp: name: delete-folder scopes: - librarian title: Delete Folder destructiveHint: true idempotentHint: true summary: Deletes an existing folder from your media library description: Deletes a folder and all assets within it. tags: - folders operationId: destroyFolder responses: '200': description: Folder deleted successfully content: application/json: schema: $ref: '#/components/schemas/delete_folder_response' '400': description: Bad request (e.g., invalid path format) content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders: get: summary: Get root folders description: | Retrieves an array of all root folders in your Cloudinary product environment. Limited to 2000 results. tags: - folders operationId: listRootFolders parameters: - $ref: '#/components/parameters/cloud_name' responses: '200': description: The root folders were successfully retrieved content: application/json: schema: $ref: '#/components/schemas/folders_list_response' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders/search: get: x-speakeasy-mcp: name: search-folders scopes: - librarian title: Search Folders readOnlyHint: true idempotentHint: true summary: Searches for folders whose attributes match a given expression description: | Lists the folders that match the specified search expression. Limited to 2000 results. If no parameters are passed, returns the 50 most recently created folders in descending order of creation time. operationId: searchFolders tags: - folders parameters: - $ref: '#/components/parameters/cloud_name' - name: expression in: query required: false schema: type: string description: The (Lucene-like) string expression specifying the search query. If not passed, returns all folders (up to max_results). - name: sort_by in: query required: false description: Sort order for the results. Each item maps a field name to a direction. schema: $ref: '#/components/schemas/search_sort_by' example: - name: asc - $ref: '#/components/parameters/max_results_folders_query' - $ref: '#/components/parameters/next_cursor_query' responses: '200': description: A listing of all folders that match the search expression criteria according to the requested sorting order. content: application/json: schema: $ref: '#/components/schemas/folders_search_response' example: total_count: 14 time: 1136 next_cursor: 0a37f8c9f65e79c1cbe782d47987ed108d9f9e0dad4b0666adbf4eac9a634191996204a0ef84ce7b3e0e folders: - name: 1_folder_param path: my_parent/1_folder_param created_at: '2024-12-16T11:31:00+00:00' external_id: c7c08f8ecf093353d669d2ea3123967c7 - name: a_folder_param path: my_parent/a_folder_param created_at: '2024-12-16T11:08:32+00:00' external_id: c7c08b736592482c1125ba5d689ab8779 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' post: summary: Searches for folders in your product environment description: | Lists the folders that match the specified search expression. Limited to 2000 results. If no parameters are passed, returns the 50 most recently created folders in descending order of creation time. operationId: searchFoldersPost tags: - folders parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The folder search query parameters. required: true content: application/json: schema: $ref: '#/components/schemas/folder_search_request' example: expression: name:folder AND path:my_parent AND created_at=>4w sort_by: - name: asc max_results: 10 responses: '200': description: A listing of all folders that match the search expression criteria according to the requested sorting order. content: application/json: schema: $ref: '#/components/schemas/folders_search_response' example: total_count: 14 time: 1136 next_cursor: 0a37f8c9f65e79c1cbe782d47987ed108d9f9e0dad4b0666adbf4eac9a634191996204a0ef84ce7b3e0e folders: - name: 1_folder_param path: my_parent/1_folder_param created_at: '2024-12-16T11:31:00+00:00' external_id: c7c08f8ecf093353d669d2ea3123967c7 - name: a_folder_param path: my_parent/a_folder_param created_at: '2024-12-16T11:08:32+00:00' external_id: c7c08b736592482c1125ba5d689ab8779 '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folder_operations/invite/{folder_id}: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/folder_id' get: x-speakeasy-mcp: name: get-folder-roles disabled: true scopes: - admin title: Get Folder Roles readOnlyHint: true idempotentHint: true summary: Get folder roles description: | Lists the principals (users, groups, or API keys) and their role assignments on a specific folder, including roles inherited from ancestor folders. tags: - folders operationId: getFolderRoles parameters: - $ref: '#/components/parameters/permitted_roles_query' responses: '200': description: Principals and their roles successfully retrieved content: application/json: schema: $ref: '#/components/schemas/folder_roles_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' post: x-speakeasy-mcp: name: assign-folder-roles disabled: true scopes: - admin title: Assign Folder Roles summary: Assign folder roles description: | Assigns or removes folder roles for a principal (user, group, or API key). Supports all system folder roles (see [System roles reference](https://cloudinary.com/documentation/permissions_system_roles_policies#folder_roles)). Enterprise customers can also assign custom roles by ID. Note: Assigning roles to users or groups via this endpoint requires their user or group IDs, which are available through the Provisioning API (Enterprise only). Free customers can use this endpoint to assign roles only to API keys, but can assign folder roles to users and groups through the UI. tags: - folders operationId: assignFolderRoles requestBody: description: The folder role assignments. required: true content: application/json: schema: $ref: '#/components/schemas/assign_folder_roles_request' responses: '200': description: Roles added or removed successfully content: application/json: schema: $ref: '#/components/schemas/success_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folder_operations/rename: put: x-speakeasy-mcp: name: rename-folder scopes: - librarian title: Rename Folder idempotentHint: true disabled: true summary: Rename or move a folder description: Renames or moves the folder at the specified path, along with all the assets it contains, to a new path. tags: - folders operationId: renameFolderOperation parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The source and destination folder paths. required: true content: application/json: schema: $ref: '#/components/schemas/folder_rename_request' responses: '200': description: The folder was successfully renamed or moved. content: application/json: schema: $ref: '#/components/schemas/folder_rename_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders/by_id: put: x-speakeasy-mcp: name: get-folder-by-id scopes: - librarian title: Get Folder By ID idempotentHint: true disabled: true summary: Get a folder by its identifier description: Returns the details of the folder with the specified identifier, including its ancestors. tags: - folders operationId: getFolderById parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The identifier of the folder to retrieve. required: true content: application/json: schema: $ref: '#/components/schemas/folder_by_id_request' responses: '200': description: The folder was successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/folder_detail_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders/by_path: put: x-speakeasy-mcp: name: get-folder-by-path scopes: - librarian title: Get Folder By Path idempotentHint: true disabled: true summary: Get a folder by its path description: Returns the details of the folder at the specified path, including its ancestors. tags: - folders operationId: getFolderByPath parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The path of the folder to retrieve. required: true content: application/json: schema: $ref: '#/components/schemas/folder_by_path_request' responses: '200': description: The folder was successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/folder_detail_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/folders/descendants: put: x-speakeasy-mcp: name: get-folder-descendants scopes: - librarian title: Get Folder Descendants idempotentHint: true disabled: true summary: Get the descendants of a folder description: Returns the descendant folders of the folder with the specified identifier, optionally filtered to a set of folder identifiers. tags: - folders operationId: getFolderDescendants parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The parent folder identifier and optional filter. required: true content: application/json: schema: $ref: '#/components/schemas/folder_descendants_request' responses: '200': description: The descendant folders were successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/folder_descendants_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Folder not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/derived_resources: delete: x-speakeasy-mcp: name: delete-derived-assets scopes: - librarian title: Delete Derived Assets destructiveHint: true idempotentHint: true summary: Delete derived resources description: Deletes derived resources by derived resource ID tags: - assets operationId: derivedDestroy parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The derived resource IDs to delete. required: true content: application/json: schema: $ref: '#/components/schemas/DerivedDestroyRequest' responses: '200': description: Derived resources successfully deleted content: application/json: schema: $ref: '#/components/schemas/DerivedDestroyResponse' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/derived_resources/invalidate_by_urls: delete: x-speakeasy-mcp: name: invalidate-derived-by-urls scopes: - librarian title: Invalidate Derived Assets By URLs destructiveHint: true idempotentHint: true disabled: true summary: Invalidate derived assets by delivery URLs description: Deletes and invalidates the cached derived assets that back the specified delivery URLs. tags: - assets operationId: invalidateDerivedByUrls parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The delivery URLs whose derived assets should be invalidated. required: true content: application/json: schema: $ref: '#/components/schemas/invalidate_by_urls_request' responses: '200': description: The derived assets were successfully invalidated. content: application/json: schema: $ref: '#/components/schemas/invalidate_by_urls_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/get_resource: post: x-speakeasy-mcp: name: get-resource-by-body scopes: - librarian title: Get Resource By Body Params readOnlyHint: true idempotentHint: true disabled: true summary: Get the details of a single asset by body parameters description: Returns the details of a single asset identified by its public ID, delivery type, and resource type passed in the request body. tags: - assets operationId: getResourceByBody parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The identifying attributes of the asset to retrieve. required: true content: application/json: schema: $ref: '#/components/schemas/resource_get_by_body_request' responses: '200': description: The asset details were successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/resource_internal_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/update: post: x-speakeasy-mcp: name: update-resource-by-body scopes: - librarian title: Update Resource By Body Params disabled: true summary: Update the details of a single asset by body parameters description: Updates the details of an existing asset (such as tags, contextual metadata, structured metadata, and moderation status) identified by its public ID, delivery type, and resource type passed in the request body. tags: - assets operationId: updateResourceByBody parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The asset identifiers plus the attributes to update. required: true content: application/json: schema: $ref: '#/components/schemas/resource_update_by_body_request' responses: '200': description: The asset was successfully updated. content: application/json: schema: $ref: '#/components/schemas/resource_internal_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '404': description: Asset not found content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/by_container_id/{container_id}: get: x-speakeasy-mcp: name: list-resources-by-container-id scopes: - librarian title: List Resources By Container ID readOnlyHint: true idempotentHint: true disabled: true summary: List the assets in a folder by container ID description: Returns the assets contained in the folder identified by the given container ID. tags: - assets operationId: listResourcesByContainerId parameters: - $ref: '#/components/parameters/cloud_name' - name: container_id in: path required: true schema: type: string description: The immutable identifier of the folder container whose assets are listed. example: cd7e9d690a014c68ae8b58f08e090cb03a - $ref: '#/components/parameters/max_results_query' - $ref: '#/components/parameters/next_cursor_query' - name: sort_by in: query required: false schema: type: string description: The field by which the assets are sorted. Default is "uploaded_at". - name: fields in: query required: false schema: type: string description: A comma-separated list of asset fields to include in each returned asset. responses: '200': description: The assets in the folder were successfully retrieved. content: application/json: schema: $ref: '#/components/schemas/resources_by_container_id_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' '403': description: Folder decoupling is not enabled for the product environment. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/eval: post: x-speakeasy-mcp: name: eval-upload-params scopes: - librarian title: Evaluate Upload Parameters disabled: true summary: Evaluate a dynamic upload-parameter expression description: Evaluates a dynamic eval expression against the supplied upload parameters and returns the resulting upload parameters. tags: - upload operationId: evalUploadParams parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The eval expression and the upload parameters to evaluate it against. required: true content: application/json: schema: $ref: '#/components/schemas/eval_request' responses: '200': description: The evaluated upload parameters. content: application/json: schema: $ref: '#/components/schemas/eval_response' '400': description: Bad request (e.g. an invalid eval expression). content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/search: parameters: - $ref: '#/components/parameters/cloud_name' post: operationId: searchAssets summary: Provides a powerful query interface to filter and retrieve assets and their details description: | Returns a list of resources matching the specified search criteria. Uses a Lucene-like query language to filter assets by descriptive attributes (`public_id`, `asset_id`, `filename`, `display_name`, `folder` / `asset_folder`, `tags`, `context.`), file details (`resource_type`, `type`, `format`, `bytes`, `width`, `height`, `duration`, `pages`, `aspect_ratio`, `transparent`, `grayscale`), lifecycle dates (`uploaded_at`, `created_at`, `taken_at`, `updated_at`, `last_updated.`), moderation and lifecycle state (`status`, `moderation_status`, `moderation_kind`), embedded data (`image_metadata.*`), structured metadata (`metadata.`), and analysis fields (`face_count`, `colors`, `quality_score`, `illustration_score`, `accessibility_analysis.*`). Supports sorting, aggregate counts, and complex boolean expressions. Examples: `tags:shirt AND uploaded_at>1d`, `resource_type:image AND bytes>1000000`, `folder:products OR context.category:electronics`. See the [search expressions guide](https://cloudinary.com/documentation/search_expressions.md) for the full syntax and field reference. tags: - search x-speakeasy-mcp: name: search-assets scopes: - librarian title: Search Assets readOnlyHint: true idempotentHint: true requestBody: description: The search query parameters. required: true content: application/json: schema: $ref: '#/components/schemas/search_parameters' responses: '200': description: Successful search response content: application/json: schema: $ref: '#/components/schemas/search_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/resources/visual_search: parameters: - $ref: '#/components/parameters/cloud_name' post: operationId: visualSearchAssets summary: Finds images in your asset library based on visual similarity or content description: | Returns a list of resources that are visually similar to a specified image. You can provide the source image for comparison in one of three ways: - Provide a URL of an image - Specify the asset ID of an existing image - Provide a textual description tags: - search x-speakeasy-mcp: name: visual-search-assets scopes: - librarian title: Visual Search Assets readOnlyHint: true idempotentHint: true requestBody: description: The visual search parameters. required: true content: application/json: schema: $ref: '#/components/schemas/visual_search_parameters' responses: '200': description: Successful visual search response content: application/json: schema: $ref: '#/components/schemas/search_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v1_1/{cloud_name}/operations/initial_backup: parameters: - $ref: '#/components/parameters/cloud_name' post: x-speakeasy-mcp: name: create-initial-backup scopes: - librarian title: Create Initial Backup disabled: true operationId: createInitialBackup summary: Create initial backup description: | Initiates an initial backup of existing assets for the active product environment. Backup for new uploads must be enabled on the product environment, and the requester must be permitted to initiate a backup. tags: - initial_backup requestBody: description: The initial backup configuration. required: false content: application/json: schema: $ref: '#/components/schemas/initial_backup_create_request' responses: '200': description: Initial backup queued successfully. content: application/json: schema: $ref: '#/components/schemas/initial_backup_create_response' example: ok: true '400': description: Invalid request, backup not enabled, or self-service threshold exceeded. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Backup for new uploads isn't enabled. Turn it on before starting an initial backup of existing assets. '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '403': description: Not allowed. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Not allowed get: x-speakeasy-mcp: name: list-initial-backups scopes: - librarian title: List Initial Backups readOnlyHint: true idempotentHint: true disabled: true operationId: listInitialBackups summary: List initial backups description: Lists initial backup operations for the active product environment, ordered from most recent to oldest. tags: - initial_backup parameters: - $ref: '#/components/parameters/max_results_query' - $ref: '#/components/parameters/next_cursor_query' responses: '200': description: Initial backup operations retrieved. content: application/json: schema: $ref: '#/components/schemas/initial_backup_list_response' example: initial_backups: - id: abc123def456 status: completed created_at: '2024-05-07T10:00:00Z' next_cursor: eyJpZCI6MTIzfQ== '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials /v1_1/{cloud_name}/operations/initial_backup/{id}: parameters: - $ref: '#/components/parameters/cloud_name' - $ref: '#/components/parameters/initial_backup_id' get: x-speakeasy-mcp: name: get-initial-backup scopes: - librarian title: Get Initial Backup readOnlyHint: true idempotentHint: true disabled: true operationId: getInitialBackup summary: Get initial backup description: Retrieves the progress and status of a single initial backup operation by its ID. tags: - initial_backup responses: '200': description: Initial backup retrieved. content: application/json: schema: $ref: '#/components/schemas/initial_backup_progress_response' example: status: completed start_time: '2024-05-07T10:00:00Z' completion_time: '2024-05-07T11:00:00Z' processed_assets_count: 42 '401': description: Authentication error. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '403': description: Not allowed. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Not allowed '404': description: Initial backup operation not found. content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Operation does not exist /v1_1/{cloud_name}/people: parameters: - $ref: '#/components/parameters/cloud_name' get: x-speakeasy-mcp: disabled: true name: list-people scopes: - admin title: List People readOnlyHint: true idempotentHint: true operationId: listPeople summary: List recognized people description: | Returns a list of all recognized people in your product environment. People Search must be enabled for this product environment. tags: - people parameters: - name: max_results in: query required: false description: 'The maximum number of people to return. Default: 50.' schema: type: integer minimum: 1 maximum: 100 default: 50 example: 20 - $ref: '#/components/parameters/next_cursor_query' - name: name_status in: query required: false description: 'Filter by whether the person has been named. Default: all.' schema: type: string enum: - all - named - unnamed default: all example: named - name: name_prefix in: query required: false description: Filter people whose names start with the given prefix (case insensitive). schema: type: string example: Alice - name: status in: query required: false description: Filter by person status. schema: $ref: '#/components/schemas/person_status' example: active - name: sort_by in: query required: false description: | The field to sort results by. Default: name (ascending). schema: type: string enum: - name - created_at - updated_at default: name example: created_at - $ref: '#/components/parameters/direction' responses: '200': description: People retrieved successfully content: application/json: schema: $ref: '#/components/schemas/people_list_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid sort_by value '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '403': description: Feature not enabled content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: People Search is not enabled for this customer /v1_1/{cloud_name}/people/{person_id}: parameters: - $ref: '#/components/parameters/cloud_name' - name: person_id in: path required: true description: The unique identifier of the person. schema: type: string example: f10f893da5a1586dca6764b22514aa0d25e6b867baffc4fb43a2318a25d8e5b2 get: x-speakeasy-mcp: disabled: true name: get-person scopes: - admin title: Get Person readOnlyHint: true idempotentHint: true operationId: getPerson summary: Get person details description: | Returns details of a specific recognized person. People Search must be enabled for this product environment. tags: - people responses: '200': description: Person retrieved successfully content: application/json: schema: $ref: '#/components/schemas/person_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Missing person_id '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '403': description: Feature not enabled content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: People Search is not enabled for this customer '404': description: Person not found content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Can't find Person with id nonexistent put: x-speakeasy-mcp: disabled: true name: update-person scopes: - admin title: Update Person idempotentHint: true operationId: updatePerson summary: Update a person description: | Updates a recognized person's name, status, or thumbnail image. At least one of name, status, or thumbnail_asset_id must be provided. People Search must be enabled for this product environment. tags: - people requestBody: description: The updated person attributes. required: true content: application/json: schema: $ref: '#/components/schemas/update_person_request' responses: '200': description: Person updated successfully content: application/json: schema: $ref: '#/components/schemas/update_person_response' '400': description: Validation error content: application/json: schema: $ref: '#/components/schemas/api_error' examples: name_too_long: value: error: message: Name is too long, maximum is 255 invalid_status: value: error: message: Invalid status value, must be one of active, hidden missing_params: value: error: message: Missing required parameter no_face: value: error: message: No faces detected in the provided Asset wrong_person: value: error: message: The provided Asset does not contain a face for this Person '401': description: Authentication error content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Invalid credentials '403': description: Feature not enabled content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: People Search is not enabled for this customer '404': description: Person not found content: application/json: schema: $ref: '#/components/schemas/api_error' example: error: message: Can't find Person with id nonexistent /v1_1/{cloud_name}/people/inspect: post: x-speakeasy-mcp: name: inspect-people-permissions scopes: - admin title: Inspect People Permissions readOnlyHint: true idempotentHint: true disabled: true summary: Inspect the caller's permitted actions on people description: Returns, for each requested person and action, whether the authenticated caller is permitted to perform that action. tags: - people operationId: inspectPeoplePermissions parameters: - $ref: '#/components/parameters/cloud_name' requestBody: description: The people and actions to inspect. required: true content: application/json: schema: $ref: '#/components/schemas/people_inspect_request' responses: '200': description: The permission inspection results were successfully computed. content: application/json: schema: $ref: '#/components/schemas/people_inspect_response' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/api_error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/api_error' /v2/generate/{cloud_name}/text_to_image: parameters: - $ref: "#/components/parameters/cloudName" post: x-speakeasy-mcp: name: generate-image scopes: - builder title: Generate an Image tags: - Generation summary: Generate an image description: > Generate an image from a text prompt using AI models. The model is selected via the optional `model` object: 1. If `model.id` is provided, use that exact model. 2. Else if `model.family` (+ optional `model.tier`) is provided, resolve via the model registry; a missing tier defaults to `standard`. 3. If `model` is omitted, use the global default (nano-banana / premium, i.e. `nano-banana-2`). operationId: generate_image requestBody: required: true description: A JSON object containing the generation request parameters. content: application/json: schema: $ref: "#/components/schemas/GenerateImageRequest" examples: BasicExample: $ref: "#/components/examples/GenerateImageBasicExample" DeclarativeSizeExample: $ref: "#/components/examples/GenerateImageDeclarativeSizeExample" DimensionsSizeExample: $ref: "#/components/examples/GenerateImageDimensionsSizeExample" AsyncExample: $ref: "#/components/examples/GenerateImageAsyncExample" responses: "200": description: Image generated successfully (synchronous). content: application/json: schema: $ref: "#/components/schemas/GenerateImageResult" examples: Success: $ref: "#/components/examples/GenerateImageSuccessExample" SuccessManagedAsset: $ref: "#/components/examples/GenerateImageManagedAssetSuccessExample" "202": $ref: "#/components/responses/GenerationAcceptedResponse" "400": $ref: "#/components/responses/BadRequestResponse" "401": $ref: "#/components/responses/UnauthorizedResponse" "422": $ref: "#/components/responses/UnprocessableEntityResponse" "429": $ref: "#/components/responses/RateLimitedResponse" "500": $ref: "#/components/responses/InternalServerErrorResponse" "502": $ref: "#/components/responses/ModelUnavailableResponse" /v2/generate/{cloud_name}/image_to_image: parameters: - $ref: "#/components/parameters/cloudName" post: x-speakeasy-mcp: name: generate-image-from-images scopes: - builder title: Generate an Image from Reference Images tags: - Generation summary: Generate an image from reference images description: > Generate an image guided by one or more **reference images** — restyle, on-brand variants, character consistency, virtual try-on, edit/extend — steered by `prompt`. Only edit-capable models are selectable here. The model is selected via the optional `model` object, exactly like `text_to_image`, but IDs are restricted to edit models: 1. If `model.id` is provided, use that exact edit model. 2. Else if `model.family` (+ optional `model.tier`) is provided, resolve to that family's edit model (e.g. `nano-banana` / `premium` → `nano-banana-2-edit`). 3. If `model` is omitted, use the default edit model (`nano-banana-2-edit`). Each reference image is either a stored managed asset (by `asset_id`, read-permission checked) or an external HTTPS `url`. operationId: generate_image_from_images requestBody: required: true description: A JSON object containing the image-to-image generation request parameters. content: application/json: schema: $ref: "#/components/schemas/ImageToImageRequest" responses: "200": description: Image generated successfully (synchronous). content: application/json: schema: $ref: "#/components/schemas/GenerateImageResult" "202": $ref: "#/components/responses/GenerationAcceptedResponse" "400": $ref: "#/components/responses/BadRequestResponse" "401": $ref: "#/components/responses/UnauthorizedResponse" "403": $ref: "#/components/responses/ForbiddenResponse" "404": $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/UnprocessableEntityResponse" "429": $ref: "#/components/responses/RateLimitedResponse" "500": $ref: "#/components/responses/InternalServerErrorResponse" "502": $ref: "#/components/responses/ModelUnavailableResponse" /v2/generate/{cloud_name}/tasks/{task_id}: parameters: - $ref: "#/components/parameters/cloudName" - in: path name: task_id description: The ID of the generation task. required: true schema: type: string pattern: ^[a-f0-9]{1,256}$ examples: default: value: 053f4bde4b933c8ecef23724ecde63b667c1ea21816d56c161c7ec1df6297da4b43109625650e9edf0f42152cc4cc32c8ad57824ac75ba8e05020f827c415559ac1248076a2d72c0a73af0479cca77eb get: x-speakeasy-mcp: name: get-generation-task scopes: - builder title: Get a Generation Task readOnlyHint: true idempotentHint: true tags: - Tasks summary: Get a generation task description: Get the status of a generation task. operationId: get_generation_task_status responses: "200": description: Generation task status. content: application/json: schema: $ref: "#/components/schemas/TaskResponse" examples: Completed: $ref: "#/components/examples/GenerateTaskCompletedExample" "400": $ref: "#/components/responses/BadRequestResponse" "401": $ref: "#/components/responses/UnauthorizedResponse" "404": $ref: "#/components/responses/NotFoundResponse" "429": $ref: "#/components/responses/RateLimitedResponse" "500": $ref: "#/components/responses/InternalServerErrorResponse" components: securitySchemes: basicAuth: type: http scheme: basic description: Basic authentication using Cloudinary API Key and API Secret. oauth2: type: oauth2 description: OAuth2 Authorization Code flow for user authentication flows: authorizationCode: authorizationUrl: https://oauth.cloudinary.com/oauth2/auth tokenUrl: https://oauth.cloudinary.com/oauth2/token scopes: asset_management: Allows managing assets, including reading, updating, and deleting. upload: Allows uploading new assets. media_generation: Generate media parameters: cloud_name: name: cloud_name in: path required: true schema: type: string description: The cloud name of your product environment. example: my_cloud upload_resource_type: name: resource_type in: path required: true schema: $ref: '#/components/schemas/upload_resource_type' description: The type of resource (image, video, raw, or auto). resource_type: name: resource_type in: path required: true schema: $ref: '#/components/schemas/resource_type' description: The type of resource (image, video, or raw). public_id_query: name: public_id in: query required: true schema: type: string description: The public ID of the asset. delivery_type_query: name: type in: query required: false schema: $ref: '#/components/schemas/managed_delivery_type' description: The delivery type of the asset. Default is "upload". api_key_query: name: api_key in: query required: false schema: type: string example: '472851639284736' description: The API key to use for the request. This is automatically computed by the Cloudinary's SDKs. signature_query: name: signature in: query required: false schema: type: string example: c08ed49d293e966cbe613a13d8e9476fdb76817bd668feb5b17001b168579fbc description: | (Required for signed REST API calls) Used to authenticate the request and based on the parameters you use in the request. When using the Cloudinary SDKs for signed requests, the signature is automatically generated and added to the request. If you manually generate your own signed POST request, you need to manually generate the signature parameter and add it to the request together with the api_key and timestamp parameters. timestamp_query: name: timestamp in: query required: false schema: type: integer format: int64 example: 1623087658 description: The timestamp to use for the request in unix time. This is automatically computed by the Cloudinary's SDKs. archive_resource_type: name: resource_type in: path required: true schema: $ref: '#/components/schemas/archive_resource_type' description: The type of resource for archive generation (image, video, or raw). asset_id_query: name: asset_id in: query required: true schema: $ref: '#/components/schemas/asset_id' description: The asset ID of the resource. Must be a 32-character hexadecimal string. example: f4e6579cf84dd9cf5683b21f5b30c7d9 max_results_query: name: max_results in: query required: false schema: type: integer minimum: 1 maximum: 500 default: 10 description: The maximum number of results to return. Default is 10. next_cursor_query: name: next_cursor in: query required: false schema: type: string description: The cursor for pagination. Use the next_cursor value from a previous response to get the next page of results. transformation: name: transformation in: path required: true schema: type: string description: | The transformation identifier. Can be either a named transformation (e.g., 'small_profile_thumbnail') or a transformation string (e.g., 'w_100,h_150,c_fill,g_auto'). examples: named: summary: Named transformation value: small_profile_thumbnail string: summary: Transformation string value: w_100,h_150,c_fill,g_auto transformation_name: name: transformation in: path required: true schema: type: string description: The valid transformation name to create. example: small_profile_thumbnail direction: name: direction in: query required: false schema: $ref: '#/components/schemas/direction_enum' description: The sort direction for the results. Default is "desc". delivery_type_all_query: name: type in: query required: false schema: $ref: '#/components/schemas/delivery_type_all' description: The delivery type to filter by. When omitted, returns assets of all delivery types. prefix: name: prefix in: query required: false schema: type: string description: A public_id prefix. When specified, all assets with that prefix are returned. public_ids_query: name: public_ids in: query required: false explode: false schema: type: array items: type: string maxItems: 100 description: An array of public IDs to return. example: - sample - product_image - banner_2023 tags_query: name: tags in: query required: false schema: type: boolean default: false description: Whether to include the list of tag names assigned to each asset. Default is false. next_cursor: name: next_cursor in: query required: false schema: type: string description: Cursor for pagination. max_results: name: max_results in: query required: false schema: type: integer minimum: 1 maximum: 500 description: Maximum number of results to return (1-500). start_at: name: start_at in: query required: false schema: type: string format: date-time description: An ISO-8601 formatted timestamp. When specified, returns resources created since that timestamp. Supported only if neither `prefix` nor `public_ids` were passed. fields: name: fields in: query required: false explode: false schema: anyOf: - type: string description: A comma-separated list of field names. - type: array items: $ref: '#/components/schemas/resource_fields_enum' description: Additional fields to include in the response. The fields public_id and asset_id are always included. asset_folder_query: name: asset_folder in: query required: true schema: type: string description: The full path of the asset folder. resource_type_query: name: resource_type in: query required: false schema: $ref: '#/components/schemas/resource_type' description: Resource type filter. asset_ids_query: name: asset_ids in: query required: true explode: false schema: type: array items: $ref: '#/components/schemas/asset_id' maxItems: 100 description: List of asset IDs to retrieve (max 100). context_key: name: key in: query required: true schema: type: string description: Context key to filter by. context_value: name: value in: query required: false schema: type: string description: Context value to filter by. moderation_kind: name: moderation_kind in: path required: true schema: type: string enum: - manual - webpurify - aws_rek - aws_rek_video - perception_point - google_video_moderation - duplicate description: The type of moderation to filter by. moderation_status: name: moderation_status in: path required: true schema: type: string enum: - approved - rejected - pending - queued - aborted description: The moderation status to filter by. context_query: name: context in: query required: false schema: type: boolean default: false description: Whether to include key-value pairs of contextual metadata associated with each asset. Default is false. metadata_query: name: metadata in: query required: false schema: type: boolean default: false description: Whether to include the structured metadata fields and values assigned to each asset. Default is false. moderations_query: name: moderations in: query required: false schema: type: boolean default: false description: Whether to include image moderation status of each asset. Default is false. delivery_type_all: name: type in: path required: true schema: $ref: '#/components/schemas/delivery_type_all' description: The delivery type of the asset. public_id: name: public_id in: path required: true schema: type: string example: sample description: The public ID of the asset. colors: name: colors in: query schema: type: boolean default: false required: false description: 'Whether to include color information (predominant colors and histogram of 32 leading colors). Default: false.' media_metadata: name: media_metadata in: query schema: type: boolean default: false required: false description: 'Whether to include IPTC, XMP, and detailed Exif metadata in the response. Default: false.' faces: name: faces in: query schema: type: boolean default: false required: false description: 'Whether to include a list of coordinates of detected faces. Default: false.' quality_analysis: name: quality_analysis in: query schema: type: boolean default: false required: false description: 'Whether to return quality analysis scores for the image. Default: false.' accessibility_analysis: name: accessibility_analysis in: query schema: type: boolean default: false required: false description: 'Whether to return accessibility analysis scores for the image. Default: false.' pages: name: pages in: query schema: type: boolean default: false required: false description: 'Whether to report the number of pages in multi-page documents (e.g., PDF). Default: false.' phash: name: phash in: query schema: type: boolean default: false required: false description: 'Whether to include the perceptual hash (pHash) of the uploaded photo for image similarity detection. Default: false.' coordinates: name: coordinates in: query schema: type: boolean default: false required: false description: 'Whether to include previously specified custom cropping coordinates and faces coordinates. Default: false.' versions: name: versions in: query schema: type: boolean default: false required: false description: 'Whether to include details of all the backed up versions of the asset. Default: false.' max_derived_results: name: max_results in: query schema: type: integer default: 10 minimum: 1 maximum: 500 required: false description: 'Maximum number of derived assets to return. Default: 10.' derived_next_cursor: name: derived_next_cursor in: query schema: type: string required: false description: The cursor for the next page of derived assets when there are more derived images than max_results. asset_id: name: asset_id in: path required: true schema: $ref: '#/components/schemas/asset_id' description: The asset ID of the resource. Must be a 32-character hexadecimal string. example: f4e6579cf84dd9cf5683b21f5b30c7d9 prefix_tags: name: prefix in: query required: false schema: type: string description: Limit the returned tags to those that start with the specified prefix. delivery_type: name: type in: path required: true schema: allOf: - $ref: '#/components/schemas/managed_delivery_type' - default: upload description: The delivery type of the asset. folder_path: name: folder in: path required: true schema: type: string pattern: ^(?!.*//)[^/].+(?_[] (e.g. coco_v2) to return a list of detected content using the Cloudinary AI Content Analysis add-on. Can be used together with the auto_tagging parameter to apply tags automatically. - captioning to analyze an image and suggest a caption based on the image's contents. - iqa to analyze the quality of an image. - watermark-detection to detect watermarks in an image. - adv_face to return a list of facial attributes using the Advanced Facial Attribute Detection add-on. - aws_rek_face to return a list of detected celebrities and facial attributes using the Amazon Rekognition Celebrity Detection add-on. Can be used together with the auto_tagging parameter to apply tags automatically. example: coco_v2 discard_original_filename: type: boolean description: Whether to discard the name of the original uploaded file. Relevant when delivering assets as attachments (setting the flag disposition:attachment in delivery URLs). display_name: type: string description: A display name for the asset. eager_async: type: boolean description: Whether to generate the eager transformations asynchronously in the background after the upload request is completed rather than before the upload is completed. eager_notification_url: type: string format: uri description: A URL to notify when eager transformations are completed. eval: type: string description: Allows you to modify upload parameters by specifying custom logic with JavaScript. This can be useful for conditionally adding tags, contextual metadata, structured metadata or eager transformations depending on specific criteria of the uploaded file. faces: type: boolean description: Whether to detect faces in the asset. filename_override: type: string description: Overrides the originally uploaded asset's file name in downloads that use flags like fl_attachment or fl_force_original. folder: type: string deprecated: true x-speakeasy-deprecation-message: | If Dynamic folders mode is enabled on your product environment, this parameter is deprecated, and it's recommended to use the asset_folder parameter to control where the asset will be placed. If you also want your public_id to match the initial asset folder path, include the use_asset_folder_as_public_id_prefixparameter. description: Folder name where the uploaded asset will be stored. This parameter applies when using the Admin API, or when specifying the upload preset for unsigned uploading with the Upload API. format: type: string description: An optional format to convert the uploaded asset to before saving in the cloud. example: jpg invalidate: type: boolean description: | Whether to invalidate CDN cache copies of a previously uploaded asset that shares the same public ID. Default: false. media_metadata: type: boolean description: | Whether to return IPTC, XMP, and detailed Exif metadata of the uploaded asset in the response. Supported for images, video, and audio. - Returned metadata for images includes: PixelsPerUnitX, PixelsPerUnitY, PixelUnits, Colorspace, and DPI. - Returned metadata for audio and video includes: audio_codec, audio_bit_rate, audio_frequency, channels, channel_layout. - Additional metadata for video includes: pix_format, codec, level, profile, video_bit_rate, dar. metadata: $ref: '#/components/schemas/structured_metadata_param' clear_invalid: type: boolean description: 'Whether to clear metadata field values that have become invalid due to a change in metadata rules. If false, the API returns an error if any existing metadata value is no longer valid. Default: false.' default: false moderation: type: string description: | For all asset types, set to: - manual to add the uploaded asset to a list of pending assets that can be moderated using the Admin API or the Cloudinary Console. - perception_point to automatically moderate the uploaded asset using the Perception Point Malware Detection add-on. For images only, set to: - webpurify to automatically moderate the uploaded image using the WebPurify Image Moderation add-on. - aws_rek to automatically moderate the uploaded image using the Amazon Rekognition AI Moderation add-on. - duplicate: to detect if the same or a similar image already exists using the Cloudinary Duplicate Image Detection add-on. Set threshold to a float greater than 0 and less than or equal to 1.0 to specify how similar an image needs to be in order to be considered a duplicate. Set threshold to 0 to add an image to the index of images that are searched when duplicate detection is invoked for another image. For videos only, set to: - aws_rek_video to automatically moderate the uploaded video using the Amazon Rekognition Video Moderation add-on. - google_video_moderation automatically moderate the uploaded video using the Google AI Video Moderation add-on. To request multiple moderations in a single API call: - Send the desired list of moderations as a pipe-separated string with manual moderation, if relevant, being last. Note: Rejected assets are automatically invalidated on the CDN within approximately ten minutes. example: aws_rek|duplicate:0|perception_point|manual notification_url: type: string format: uri description: A URL to notify when the asset is ready. ocr: type: string description: | Set to adv_ocr to extract all text elements in an image as well as the bounding box coordinates of each detected element using the OCR text detection and extraction add-on. Optionally append options (e.g., adv_ocr:document). example: adv_ocr on_success: type: string description: Allows you to update an asset by specifying custom logic with JavaScript that is executed after the upload to Cloudinary is completed successfully. This can be useful for conditionally adding tags, contextual metadata, and structured metadata, depending on the results of using the detection parameter on upload. overwrite: type: boolean description: | Whether to overwrite existing assets with the same public ID. When set to false, return immediately if an asset with the same public ID already exists. Default: true (when using unsigned upload, the default is false and cannot be changed to true). phash: type: boolean description: | Whether to return the perceptual hash (pHash) on the uploaded image for image similarity detection. proxy: type: string description: A proxy to use for fetching remote URLs. The format should be http://hostname:port. public_id: type: string description: The identifier that is used for accessing the uploaded asset. If not specified, a unique ID is generated automatically. public_id_prefix: type: string description: A string or path that's automatically prepended to the public_id with a forward slash. The value can contain the same characters as the public_id including additional forward slashes. This prefix can be useful to provide context and improve the SEO of an asset's filename in the delivery URL, but the value does not impact the location where the asset is stored. quality_analysis: type: boolean description: Whether to return a quality analysis value for the image between 0 and 1, where 0 means the image is blurry and out of focus and 1 means the image is sharp and in focus. Relevant for images only. raw_convert: type: string pattern: ^(aspose|azure_video_indexer(:\D+)*|google_speech(:(vt|sr)t)*(:[a-zA-Z-]+)?|extract_text)$ description: | Generates a related file based on the uploaded file. - Set to aspose to automatically create a PDF or other image format from a raw Office document using the Aspose Document Conversion add-on. (Asynchronous) - Set to google_speech to instruct the Google AI Video Transcription add-on to generate an automatic transcript raw file from an uploaded video. (Asynchronous) - Set to extract_text to extract all the text from a PDF file and store it in a raw JSON file with a public ID in the format: [pdf_public_id].extract_text.json. The full URL of the generated JSON file is included in the API response. Unlike the above raw_convert options, this option doesn't require registering for an add-on.(Synchronous) - Set to azure_video_indexer to generate AI-powered video insights from Microsoft Azure. (Asynchronous) example: google_speech:vtt:en-US regions: anyOf: - type: string - $ref: '#/components/schemas/region_mapping' description: | Named region coordinate groups for cropping with region gravity. Can be a JSON-encoded string or an object. Each region name may contain only letters, numbers, or hyphens, and must have at least two coordinate pairs. example: '{"face": [[100, 200], [300, 400]], "body": [[50, 60], [70, 80], [90, 100]]}' responsive_breakpoints: description: Settings to automatically generate breakpoints for responsive images. anyOf: - type: array items: $ref: '#/components/schemas/responsive_breakpoint' - $ref: '#/components/schemas/responsive_breakpoint' return_delete_token: type: boolean description: Whether to return a deletion token in the upload response. The token can be used to delete the uploaded asset within approximately 10 minutes using an unauthenticated API call. upload_preset: type: string description: Name of an upload preset that you defined for your Cloudinary product environment. An upload preset consists of upload parameters centrally managed using the Admin API or from the Upload Presets page of the Console Settings. use_asset_folder_as_public_id_prefix: type: boolean description: Whether to add the asset_folder value as a prefix to the public_id value (prepended with a forward slash). This ensures that the public ID path will always match the initial asset folder, and can help to retain the behavior that previously existed in fixed folder mode. However, keep in mind that even when this option is used during upload, an asset with a certain public ID path can later be moved to a completely different asset folder hierarchy without impacting the public ID. This option only ensures path matching for the initial upload. Relevant only when public_id_prefix (or folder) has not been separately specified. use_filename: type: boolean description: | Whether to use the original file name of the uploaded asset if available for the public ID. The file name is normalized and random characters are appended to ensure uniqueness if the file name already exists. Default: false. use_filename_as_display_name: type: boolean description: Whether to automatically assign the original filename of the uploaded asset as the asset's display name. Relevant only if the display_name parameter isn't set. unique_display_name: type: boolean description: Whether the display name should be unique. unique_filename: type: boolean description: | When set to false and used together with use_filename, if an asset with the same file name already exists, no random characters are appended to the file name. Instead, the asset is overwritten. Default: true (random characters are added to the file name if needed). visual_search: type: boolean description: Whether to index the image for use with visual searches. Relevant for images only. tags_param: anyOf: - type: string description: A comma-separated list of tag names. - type: array items: type: string description: An array of tag names. description: A comma-separated list of tag names, or an array of tag names. example: animal,dog context_param: type: string description: A pipe-separated list of key-value pairs of general textual context metadata to attach to the asset (e.g., "alt=My image|caption=Nice photo"). The =, ", and | characters can be escaped with a prepending backslash (\). example: alt=My image|caption=Nice photo upload_serializable_input: type: object description: Upload parameters that accept encoded string values, such as comma-separated tags, pipe-separated context metadata, and transformation strings. properties: tags: $ref: '#/components/schemas/tags_param' context: $ref: '#/components/schemas/context_param' eager: type: string description: A list of transformations to eagerly generate for the asset. Accepts either a single transformation or a pipe-separated list of transformations. transformation: type: string description: An incoming transformation to run on the uploaded asset before its storage. In contrast to eager, this parameter is applied before the file is stored. allowed_formats: type: string description: | A comma-separated list of file formats that are allowed for uploading. Files of other types will be rejected. The formats can be any combination of image types, video formats or raw file extensions. Note: You can also add the `format` parameter to convert other file types instead of rejecting them. In this case, only files that would normally be rejected are converted, any file format allowed for upload won't be converted. example: mp4,ogv,jpg,png,pdf headers: type: string description: | An HTTP header or a list of headers lines for adding as response HTTP headers when delivering the asset to your users. Supported headers: Link, Authorization, X-Robots-Tag. example: 'X-Robots-Tag: noindex' face_coordinates: type: string description: Face coordinates as comma-separated values, with multiple faces separated by pipes. pattern: ^(\d+,\d+,\d+,\d+)(\|\d+,\d+,\d+,\d+)*$ example: 10,20,150,130|213,345,82,61 custom_coordinates: type: string description: Custom coordinates as comma-separated values, with multiple coordinates separated by pipes. pattern: ^(\d+,\d+,\d+,\d+)(\|\d+,\d+,\d+,\d+)*$ example: 10,20,150,130 upload_common_parameters: description: Common parameters for configuring an asset, including transformation, tagging, metadata, and moderation options. allOf: - $ref: '#/components/schemas/upload_base_parameters' - $ref: '#/components/schemas/upload_serializable_input' managed_delivery_type: type: string enum: - upload - private - authenticated description: Managed delivery types for assets uploaded and stored by Cloudinary. asset_delivery_type: type: string enum: - asset description: Static asset delivery type. upload_delivery_type: anyOf: - $ref: '#/components/schemas/managed_delivery_type' - $ref: '#/components/schemas/asset_delivery_type' description: Delivery types accepted by upload and rename operations. upload_type_parameter: type: object properties: type: allOf: - $ref: '#/components/schemas/upload_delivery_type' description: The delivery type that defines if and how the uploaded asset is available for public delivery. By default, all uploaded assets are public (upload). upload_parameters: description: Parameters for configuring asset uploads, including transformation, tagging, metadata, and delivery options. allOf: - $ref: '#/components/schemas/upload_common_parameters' - $ref: '#/components/schemas/upload_type_parameter' upload_request_parameters: type: object properties: upload_preset: type: string description: | (Required for unsigned uploading / optional for signed uploading) Name of an upload preset that you defined for your Cloudinary product environment. An upload preset consists of upload parameters centrally managed using the Admin API or from the Upload Presets page of the Console Settings. An upload preset may be marked as unsigned, which allows unsigned uploading directly from the browser and restricts the optional parameters to: public_id, folder, tags, context, face_coordinates, regions and custom_coordinates. binary_upload_request: type: object allOf: - $ref: '#/components/schemas/signature_parameters' - $ref: '#/components/schemas/upload_parameters' - $ref: '#/components/schemas/upload_request_parameters' - type: object properties: file: type: string format: binary description: | The actual data (byte array buffer). required: - file upload_request: type: object allOf: - $ref: '#/components/schemas/signature_parameters' - $ref: '#/components/schemas/upload_parameters' - $ref: '#/components/schemas/upload_request_parameters' - type: object properties: file: type: string pattern: ^https?:\/\/|^s3:\/\/|^gcs:\/\/|^ftp:\/\/|^(data:[^;]*;base64,)|^file:\/\/ description: | One of the following: - The remote HTTP or HTTPS URL address of an existing file. - The Data URI (Base64 encoded), max ~60 MB (62,910,000 chars). - The FTP address of an existing file. - Local file path starting with file://. required: - file version_id: type: string pattern: ^([0-9a-f]{32})+$ description: Hexadecimal version ID; length is a positive multiple of 32 (typically 32 or 64). asset_id: type: string pattern: ^[0-9a-f]{32}$ description: A 32-character hexadecimal asset ID. tags_response: type: - array - 'null' items: type: string description: Tag names assigned to the asset. context_full_response: type: - object - 'null' description: Contextual metadata grouped by kind. Custom user context appears under the 'custom' key. Other context kinds may also appear as additional keys. properties: custom: type: object additionalProperties: type: string description: User-defined contextual metadata as key-value pairs. additionalProperties: type: object additionalProperties: type: string faces_response: type: - array - 'null' description: Detected face coordinate rectangles [x, y, width, height]. items: type: array items: type: integer coordinates_response: type: - object - 'null' description: Coordinate data for faces and custom regions. properties: faces: type: array description: Detected face coordinate rectangles [x, y, width, height]. items: type: array items: type: integer custom: type: array description: Custom coordinate rectangles [x, y, width, height]. items: type: array items: type: number upload_response: type: object properties: url: type: string format: uri description: The URL of the uploaded file. secure_url: type: string format: uri description: The secure URL of the uploaded file. public_id: type: string description: The public ID of the uploaded file. version: type: integer description: The version of the uploaded file. version_id: $ref: '#/components/schemas/version_id' signature: type: string description: The signature of the uploaded file. width: type: integer description: The width of the uploaded file. height: type: integer description: The height of the uploaded file. asset_id: $ref: '#/components/schemas/asset_id' format: type: string description: The format of the uploaded file. resource_type: type: string description: The type of resource that was uploaded. created_at: type: string format: date-time description: The date and time the file was uploaded. tags: $ref: '#/components/schemas/tags_response' description: The tags of the uploaded file. context: $ref: '#/components/schemas/context_full_response' metadata: type: object additionalProperties: true description: Structured metadata associated with the uploaded file. pages: type: integer description: The number of pages in the uploaded file. bytes: type: integer description: The size of the uploaded file in bytes. type: type: string description: The type of the uploaded file. etag: type: string description: The ETag of the uploaded file. placeholder: type: boolean description: Whether the uploaded file is a placeholder. original_filename: type: string description: The original filename of the uploaded file. image_metadata: type: object description: The image metadata of the uploaded file. illustration_score: type: number description: The illustration score of the uploaded file. semi_transparent: type: boolean description: Whether the uploaded file is semi-transparent. grayscale: type: boolean description: Whether the uploaded file is grayscale. faces: $ref: '#/components/schemas/faces_response' coordinates: $ref: '#/components/schemas/coordinates_response' eager: type: array items: type: object properties: transformation: type: string width: type: integer height: type: integer bytes: type: integer format: type: string url: type: string secure_url: type: string asset_folder: type: - string - 'null' description: The asset folder where the file is stored. display_name: type: string description: The display name of the uploaded file. api_key: type: string description: The API key used to upload the file. example: asset_id: 3515c6000a548515f1134043f9785c2f public_id: gotjephlnz2jgiu20zni version: 1719307544 version_id: 7d2cc533bee9ff39f7da7414b61fce7e signature: d0b1009e3271a942836c25756ce3e04d205bf754 width: 1920 height: 1441 format: jpg resource_type: image created_at: '2024-06-25T09:25:44Z' tags: [] pages: 1 bytes: 896838 type: upload etag: 2a2df1d2d2c3b675521e866599273083 placeholder: false url: http://res.cloudinary.com/cld-docs/image/upload/v1719307544/gotjephlnz2jgiu20zni.jpg secure_url: https://res.cloudinary.com/cld-docs/image/upload/v1719307544/gotjephlnz2jgiu20zni.jpg asset_folder: '' display_name: gotjephlnz2jgiu20zni image_metadata: JFIFVersion: '1.01' ResolutionUnit: None XResolution: '1' YResolution: '1' Colorspace: RGB DPI: '0' illustration_score: 0 semi_transparent: false grayscale: false original_filename: sample eager: - transformation: c_pad,h_300,w_400 width: 400 height: 300 bytes: 26775 format: jpg url: http://res.cloudinary.com/cld-docs/image/upload/c_pad,h_300,w_400/v1719307544/gotjephlnz2jgiu20zni.jpg secure_url: https://res.cloudinary.com/cld-docs/image/upload/c_pad,h_300,w_400/v1719307544/gotjephlnz2jgiu20zni.jpg api_key: '614335564976464' resource_type: type: string enum: - image - video - raw description: The type of resource. async_upload_response: type: object description: Response returned when an upload is processed asynchronously (async=true) required: - status - batch_id - type properties: status: type: string enum: - pending description: The status of the asynchronous upload. Will be 'pending' for async uploads. resource_type: $ref: '#/components/schemas/resource_type' description: The type of resource being uploaded. This field may be omitted if resource_type is not known at the time of the call. type: $ref: '#/components/schemas/upload_delivery_type' default: upload description: The delivery type of the asset. Defaults to 'upload'. public_id: type: string description: The public ID assigned to the upload. May be omitted if it will be auto-generated. batch_id: type: string description: A unique identifier for the asynchronous upload job. requester_ip: type: string description: The IP address of the requester. This is only included if a product environment has requester_ip tracking enabled. example: status: pending resource_type: image type: upload public_id: sample_image batch_id: 9c2f5a46b3a6c4d9e8f7g0h1i2j3k4l5 html_redirect: type: string description: HTML redirect response example: You are being redirected. api_error: type: object properties: error: type: object properties: message: type: string required: - message required: - error non_final_chunk_upload_response: type: object description: | Status information returned for in-progress chunked uploads. Note that fields that are not yet determined or not known at the time of the call are omitted from the response. required: - done - bytes properties: done: type: boolean description: Whether the upload is complete. Will be false for all but the last chunk. bytes: type: integer description: The total number of bytes uploaded so far. kind: $ref: '#/components/schemas/upload_delivery_type' description: The delivery type of the asset. Defaults to 'upload'. resource_type: type: string description: The type of resource being uploaded (e.g., "image", "video", "raw"). May be omitted in early chunks when using auto detection. public_id: type: string description: The public ID assigned to the upload. May be omitted in early chunks if it will be auto-generated upon completion. example: done: false bytes: 1000000 kind: upload resource_type: image public_id: sample_image rename_request: description: The rename request parameters. allOf: - $ref: '#/components/schemas/signature_parameters' - type: object properties: from_public_id: type: string description: The public ID of the asset to rename. to_public_id: type: string description: The new public ID for the asset. type: description: The current delivery type of the asset. allOf: - $ref: '#/components/schemas/upload_delivery_type' to_type: description: The target delivery type for the renamed asset. If omitted, the delivery type remains unchanged. allOf: - $ref: '#/components/schemas/upload_delivery_type' overwrite: type: boolean description: Whether to overwrite the target asset if it already exists. Default is false. default: false invalidate: type: boolean description: Whether to invalidate CDN cache copies of the renamed asset. Default is false. default: false context: type: boolean description: Whether to include contextual metadata in the response. Default is false. default: false metadata: type: boolean description: Whether to include structured metadata in the response. Default is false. default: false notification_url: type: string format: uri description: URL to notify when the operation is complete. required: - from_public_id - to_public_id fetch_delivery_type: type: string enum: - fetch - url2png description: Fetch-based delivery types for assets retrieved from remote URLs. social_delivery_type: type: string enum: - facebook - twitter - twitter_name - instagram - instagram_name - gravatar - youtube - hulu - vimeo - animoto - dailymotion - worldstarhiphop description: Delivery types for assets fetched from third-party platforms. generated_delivery_type: type: string enum: - multi - sprite - text - list description: Delivery types for assets generated by Cloudinary operations. delivery_type_all: anyOf: - $ref: '#/components/schemas/managed_delivery_type' - $ref: '#/components/schemas/asset_delivery_type' - $ref: '#/components/schemas/fetch_delivery_type' - $ref: '#/components/schemas/social_delivery_type' - $ref: '#/components/schemas/generated_delivery_type' - type: string enum: - media_optimization description: All supported delivery types. destroy_request: allOf: - $ref: '#/components/schemas/signature_parameters' - type: object required: - public_id properties: public_id: type: string description: The public ID of the asset to destroy. type: $ref: '#/components/schemas/delivery_type_all' invalidate: type: boolean default: false description: Whether to invalidate CDN cached copies of the asset. notification_url: type: string format: uri description: URL to receive a notification when the operation is complete. destroy_response: type: object properties: result: type: string enum: - ok - not found description: Result of the deletion operation. explode_request: allOf: - $ref: '#/components/schemas/signature_parameters' - type: object properties: public_id: type: string description: The public ID of the PDF or animated image to generate from. format: type: string description: 'The format for the generated derived images. Default: png' transformation: type: string description: The transformation to apply. Must contain exactly one pg_all transformation parameter. notification_url: type: string format: uri description: The webhook URL to notify when the operation is complete. type: $ref: '#/components/schemas/managed_delivery_type' description: 'The delivery type of the asset. Default: upload' required: - public_id - transformation explode_response: type: object properties: status: type: string enum: - processing description: The status of the explode operation. batch_id: type: string description: The ID of the batch operation. explicit_delivery_type: anyOf: - $ref: '#/components/schemas/managed_delivery_type' - $ref: '#/components/schemas/asset_delivery_type' - $ref: '#/components/schemas/fetch_delivery_type' - $ref: '#/components/schemas/social_delivery_type' description: Delivery types accepted by the explicit operation. explicit_request: allOf: - $ref: '#/components/schemas/signature_parameters' - $ref: '#/components/schemas/upload_common_parameters' - type: object properties: public_id: type: string description: The public ID of the existing asset to apply operations on. type: $ref: '#/components/schemas/explicit_delivery_type' required: - public_id - type: object properties: overwrite: type: boolean description: | When applying eager for already existing video transformations, this setting indicates whether to force the existing derived video resources to be regenerated. Default for videos: false. Note: When specifying existing eager transformations for images, corresponding derived images are always regenerated. quality_override: description: Override the quality setting for this asset. oneOf: - type: string - type: integer archive_resource_type: type: string enum: - image - video - raw - all description: The type of resources to include in the archive. "image" for images, "video" for videos, "raw" for non-media files, or "all" for mixed types. generate_archive_request: description: The archive generation parameters. allOf: - $ref: '#/components/schemas/signature_parameters' - type: object properties: public_ids: type: array items: type: string maxItems: 1000 description: The list of public IDs to include in the archive. tags: type: array items: type: string maxItems: 20 description: Tags to filter which assets to include in the archive. Assets matching any of the specified tags are included. prefixes: type: array items: type: string maxItems: 20 description: Select all assets where the public ID starts with this prefix. type: $ref: '#/components/schemas/delivery_type_all' transformations: type: string description: The transformations to apply to the assets before including them in the archive (separated by "|"). mode: type: string enum: - download - create - create_and_download default: create description: | The method for generating and delivering the archive. Options: download - Generates and delivers the archive file without storing it create - Creates and stores the archive as a raw asset, returning URLs in the response create_and_download - Creates, stores, and delivers the archive file target_format: type: string enum: - zip - tgz default: zip description: The format of the generated archive. target_public_id: type: string description: The public ID to assign to the generated archive, or the filename of the downloaded archive file. target_asset_folder: type: string description: The folder in your product environment where the generated archive should be stored. flatten_folders: type: boolean description: Whether to flatten all files to be in the root of the archive file. default: false flatten_transformations: type: boolean description: Whether to flatten the folder structure of the derived assets. default: false skip_transformation_name: type: boolean description: Whether to skip adding the transformation details to the file names in the archive. default: false allow_missing: type: boolean description: Whether to allow missing assets in the archive. If false, the operation will fail if any asset is not found. default: false expires_at: type: integer format: int64 description: ("download" mode only) Unix timestamp indicating when the generated archive URL should expire. use_original_filename: type: boolean description: Whether to use the original filenames of the assets in the archive instead of public IDs (when available). default: false async: type: boolean description: ("create" mode only), specifies whether to generate the archive asynchronously. default: false notification_url: type: string format: uri description: ("create" mode only), specifies the URL to notify when the archive generation is complete. target_tags: type: array items: type: string description: A list of tag names to assign to the generated archive. example: - animal - dog keep_derived: type: boolean description: Whether to keep the derived assets used for generating the archive. default: false fully_qualified_public_ids: type: array items: type: string description: A list of fully qualified public IDs (resource_type/type/public_id) to include in the archive. search_expression: type: string description: A search expression to select assets to include in the archive. target_filename: type: string description: The filename for the downloaded archive file. Extension must match target_format (zip or tgz). asset_folders: anyOf: - type: array items: type: string maxItems: 20 - type: string description: A list of asset folder paths to include in the archive, or a single folder path string. Only available when asset folders are enabled for your account. generate_archive_response: type: object properties: asset_id: $ref: '#/components/schemas/asset_id' public_id: type: string description: The public ID of the generated archive. version: type: integer description: The version number of the generated archive. version_id: $ref: '#/components/schemas/version_id' signature: type: string description: The API signature for the generated archive. resource_type: type: string description: The type of resource. Always "raw" for generated archives. created_at: type: string format: date-time description: The timestamp when the archive was generated. tags: $ref: '#/components/schemas/tags_response' description: The tags assigned to the generated archive. bytes: type: integer description: The size of the generated archive in bytes. type: type: string description: The resource type of the generated archive. etag: type: string description: The ETag of the generated archive. placeholder: type: boolean description: Whether the generated archive is a placeholder. url: type: string description: The HTTP URL for downloading the generated archive. secure_url: type: string description: The HTTPS URL for downloading the generated archive. folder: type: string description: The folder where the archive is stored (only for product environments with Dynamic Folders disabled). deprecated: true x-speakeasy-deprecation-message: | If Dynamic folders mode is enabled on your product environment, this parameter is deprecated, and it's recommended to use the asset_folder parameter. resource_count: type: integer description: The number of unique resources included in the archive. file_count: type: integer description: The total number of files in the archive. asset_folder: type: string description: The folder in your product environment where the archive is stored. display_name: type: string description: The display name of the generated archive. missing_public_ids: type: array items: type: string description: The list of public IDs that were requested but not found. empty_tags: type: array items: type: string description: The list of tags that were requested but returned no results. empty_prefixes: type: array items: type: string description: The list of prefixes that were requested but returned no results. destroy_by_asset_id_request: type: object allOf: - $ref: '#/components/schemas/signature_parameters' - type: object required: - asset_id properties: asset_id: $ref: '#/components/schemas/asset_id' invalidate: type: boolean description: Whether to invalidate CDN cache. Default is false. notification_url: type: string format: uri description: URL to receive completion notification. callback: type: string format: uri description: URL for redirect after operation completion. destroy_by_asset_id_response: type: object properties: result: type: string enum: - ok - not found description: The result of the deletion operation. required: - result text_request: type: object properties: text: type: string description: The text string to generate an image for. public_id: type: string description: The identifier that is used for accessing the generated image. If not specified, a unique identifier is generated. font_family: type: string description: The name of the font family. font_size: type: integer description: Font size in points. default: 12 font_color: type: string description: Name or RGB representation of the font's color (e.g., red or default: black text_align: type: string description: Text alignment. enum: - left - center - right - justify font_weight: type: string description: Whether to use a normal or bold font. default: normal enum: - normal - bold font_style: type: string description: Whether to use a normal or italic font. default: normal enum: - normal - italic background: type: string description: Name or RGB representation of the background color (e.g., red or default: transparent opacity: type: integer description: Text opacity value between 0 (invisible) and 100. default: 100 minimum: 0 maximum: 100 text_decoration: type: string description: Text decoration style. default: none enum: - none - underline line_spacing: type: integer description: The spacing between lines of text in pixels. required: - text text_response: type: object properties: asset_id: $ref: '#/components/schemas/asset_id' public_id: type: string description: The public identifier of the asset. version: type: integer description: The version number of the asset. version_id: $ref: '#/components/schemas/version_id' signature: type: string description: The signature for the asset. width: type: integer description: The width of the generated image in pixels. height: type: integer description: The height of the generated image in pixels. format: type: string description: The format of the generated image. resource_type: type: string description: The type of resource (image). created_at: type: string format: date-time description: The creation timestamp. tags: $ref: '#/components/schemas/tags_response' description: Array of tags assigned to the asset. pages: type: integer description: Number of pages in the asset. bytes: type: integer description: Size of the asset in bytes. type: type: string description: The storage type of the asset. etag: type: string description: The ETag of the asset. placeholder: type: boolean description: Whether the asset is a placeholder. url: type: string description: The HTTP URL for accessing the asset. secure_url: type: string description: The HTTPS URL for accessing the asset. display_name: type: string description: The display name of the asset. access_control: $ref: '#/components/schemas/access_control' regions: type: array items: type: object description: Region information for the asset. moderation: type: object description: Moderation information for the asset. info: type: object description: Additional information about the asset. concat_request: description: Parameters for concatenating remote video segments into a single MP4 asset. allOf: - $ref: '#/components/schemas/signature_parameters' - $ref: '#/components/schemas/upload_common_parameters' - type: object required: - urls properties: urls: type: array items: type: string format: uri minItems: 1 maxItems: 256 description: Ordered list of HTTP(S) URLs of the video segments to concatenate. concat_response: type: object description: Response returned when a concat job is accepted. required: - status - unique_upload_id properties: status: type: string enum: - processing description: The status of the concat job. Always 'processing'. unique_upload_id: type: string description: Identifier shared by all chunked-upload parts produced for this concat job (sent as the `X-Unique-Upload-Id` header on each `/video/upload_chunked` request). public_id: type: string description: The public ID assigned to the concatenated asset, if one was supplied in the request. resource_type: type: string enum: - video description: Always 'video' — concat produces an MP4. example: status: processing unique_upload_id: 2fd4e1c67a2d28fce public_id: my_combined_video resource_type: video transformation_summary: type: object properties: name: type: string example: t_small_profile_thumbnail allowed_for_strict: type: boolean example: true used: type: boolean example: false named: type: boolean example: true transformation_list_response: type: object properties: transformations: type: array items: $ref: '#/components/schemas/transformation_summary' next_cursor: type: - string - 'null' transformation_info: type: object properties: name: type: string example: small_profile_thumbnail allowed_for_strict: type: boolean description: | Whether to allow this named transformation when [strict transformations](https://cloudinary.com/documentation/control_access_to_media#strict_transformations) are enabled. example: true used: type: boolean example: true named: type: boolean example: true info: type: array description: API transformation parameters items: type: object properties: width: oneOf: - type: integer - type: string description: Width - integer pixels or string variable reference (e.g., "$w") height: oneOf: - type: integer - type: string description: Height - integer pixels or string variable reference (e.g., "$h") crop: type: string gravity: type: string example: - width: 100 height: 150 crop: fill gravity: auto derived: type: array items: type: object properties: public_id: type: string example: sample_image resource_type: type: string example: image type: type: string example: upload format: type: string example: jpg url: type: string example: http://res.cloudinary.com/demo/image/upload/v1620000000/sample_image.jpg secure_url: type: string example: https://res.cloudinary.com/demo/image/upload/v1620000000/sample_image.jpg bytes: type: integer example: 123456 id: type: string example: 1234abcd5678efgh next_cursor: type: string example: eyJvZmZzZXQiOjEwMH0= allowed_for_strict: type: boolean description: | Whether to allow this named transformation when strict transformations are enabled. Strict transformations prevent transformations from being dynamically applied to media assets. example: true update_request: type: object properties: unsafe_update: type: string description: | Required when modifying the transformation parameters of an existing named transformation. The new transformation definition for the named transformation. Because the changed definition can be unsafe for (significantly change) assets in production, the change is applied only to newly generated derived assets that reference this named transformation. To apply the change to existing derived assets using this named transformation, invalidate them so that they'll be regenerated with the new definition when next requested. example: w_200,h_200,c_fill,g_face allowed_for_strict: $ref: '#/components/schemas/allowed_for_strict' message_response: type: object properties: message: type: string description: A human-readable status message. example: updated required: - message create_request: type: object required: - transformation properties: transformation: type: string description: A valid transformation string. example: w_100,h_150,c_fill,g_auto allowed_for_strict: $ref: '#/components/schemas/allowed_for_strict' direction_enum: type: string enum: - asc - desc description: Sort direction. upload_preset_summary: type: object description: An upload preset as returned in list responses. Most settings values are raw strings, but some boolean fields may be returned as native booleans. properties: name: type: string description: The name of the upload preset. example: my_preset unsigned: type: boolean description: Whether the upload preset allows unsigned uploads. settings: type: object description: Preset configuration settings. Most values are strings (e.g., tags are comma-separated, context is pipe-separated key=value pairs), but some boolean fields may be returned as native booleans. additionalProperties: oneOf: - type: string - type: boolean - type: array items: type: string external_id: type: string description: The unique identifier for the upload preset. example: 84fbfd12-d00a-4c5b-8e92-05dbac244d43 required: - name - external_id upload_preset_list_response: type: object properties: presets: type: array items: $ref: '#/components/schemas/upload_preset_summary' next_cursor: type: - string - 'null' description: Cursor for the next page of results. required: - presets upload_preset_input: description: Upload preset configuration for create/update. Settings are sent as top-level string-encoded properties. allOf: - $ref: '#/components/schemas/upload_parameters' - type: object properties: name: type: string description: The name of the upload preset. If not provided on create, a random name is generated. disallow_public_id: type: boolean description: | When using unsigned upload with an upload preset, this parameter prevents specifying a public ID. Relevant only for unsigned upload presets. unsigned: type: boolean description: Whether the upload preset allows unsigned uploads. parameter_whitelist: oneOf: - type: array items: type: string - type: string enum: - none description: | The parameters that are allowed to be used in an upload request utilizing this preset. If not specified or empty array, all parameters are allowed. If "none", no parameters are allowed. upload_preset_create_response: type: object properties: message: type: string description: The result message. example: created name: type: string description: The name of the created upload preset. example: my_preset external_id: type: string description: The unique identifier for the upload preset. example: 1bce826e-ec50-45c6-9f86-c858948c7158 required: - message - name - external_id context_response: type: - object - 'null' additionalProperties: type: string description: Contextual metadata as flat key-value pairs. upload_serializable_parsed: type: object description: Structured versions of upload fields as returned in API responses. Tags and allowed formats are arrays, context is a key-value object, eager and transformation are structured transformation objects, and coordinates are nested number arrays. properties: tags: allOf: - $ref: '#/components/schemas/tags_response' description: Parsed tag names. example: - tag1 - tag2 context: allOf: - $ref: '#/components/schemas/context_response' description: Parsed contextual metadata as key-value pairs. example: alt: My image caption: Nice photo eager: type: array description: Parsed eager transformations. Each item is an array of transformation step objects. items: type: array items: type: object additionalProperties: true example: - - width: 100 height: 100 crop: thumb transformation: type: array description: Parsed incoming transformation steps. items: type: object additionalProperties: true allowed_formats: type: array items: type: string description: Parsed list of allowed file formats. example: - jpg - png - gif headers: type: object additionalProperties: type: string description: Parsed custom HTTP headers as key-value pairs. face_coordinates: type: array description: Parsed face coordinate rectangles. items: type: array items: type: number custom_coordinates: type: array description: Parsed custom coordinate rectangles. items: type: array items: type: number upload_preset_parsed_settings: description: Parsed preset configuration settings. Composed from base parameters (stable types) plus parsed serializable fields (arrays/objects instead of strings). allOf: - $ref: '#/components/schemas/upload_base_parameters' - $ref: '#/components/schemas/upload_serializable_parsed' - $ref: '#/components/schemas/upload_type_parameter' upload_preset_detail: type: object description: An upload preset as returned by the GET endpoint. Settings values are parsed into their proper types (e.g., tags become arrays, context becomes an object, booleans become true booleans). properties: name: type: string description: The name of the upload preset. example: my_preset unsigned: type: boolean description: Whether the upload preset allows unsigned uploads. settings: $ref: '#/components/schemas/upload_preset_parsed_settings' external_id: type: string description: The unique identifier for the upload preset. example: 4d92a1bc-25c8-4f5a-a763-1b7dc169fd5a required: - name - external_id upload_preset_mutation_response: type: object properties: message: type: string description: The result message (e.g., "updated" or "deleted"). example: updated external_id: type: string description: The unique identifier for the upload preset. example: 1bce826e-ec50-45c6-9f86-c858948c7158 required: - message - external_id state_enum: type: string enum: - active - inactive description: The active or inactive state. metadata_field: type: object properties: type: type: string enum: - string - integer - date - enum - set description: The type of the metadata field. external_id: type: string maxLength: 255 description: The external ID of the metadata field. label: type: string maxLength: 255 description: The label of the metadata field. mandatory: type: - boolean - 'null' description: Whether the metadata field is mandatory. default_value: type: - string - integer - 'null' description: The default value of the metadata field. default_disabled: type: - boolean - 'null' description: Whether the field is disabled in the UI by default. validation: type: - object - 'null' description: The validation defined for the metadata field. restrictions: type: - object - 'null' description: | Controls UI visibility and editability of the field. All three keys are always returned; any omitted key on input defaults to false. properties: readonly_ui: type: boolean description: Whether the field is read-only in the UI. When true, the field can only be updated via the API. hidden_ui: type: boolean description: Whether the field is hidden in the UI by default. excluded_from_search: type: boolean description: Whether the field is excluded from UI search by default. group: type: - string - 'null' description: | The group used to organize this metadata field into a collapsible section in the UI. Defaults to "default". Purely presentational — it does not affect rules, search, or value validation. example: address datasource: type: - object - 'null' description: The datasource defined for the metadata field. properties: values: type: array items: type: object properties: external_id: type: string description: The external ID of the option. value: type: string description: The value of the option. position: type: integer description: The position of the option. state: $ref: '#/components/schemas/state_enum' description: The state of the option. allow_dynamic_list_values: type: - boolean - 'null' description: Whether the metadata field allows adding new options to the datasource dynamically. alphabetically_sorted: type: boolean description: Whether datasource values are maintained in case-insensitive alphabetical order. When true, values are automatically sorted on insert and update. Default false. example: true metadata_fields_list_response: type: object properties: metadata_fields: type: array items: $ref: '#/components/schemas/metadata_field' datasource_search_request: type: object properties: term: type: string description: The term to search for. Can be any substring of the value. max_results: type: integer default: 100 description: The maximum number of results to return. datasource_search_result: type: object properties: field_id: type: string description: The external ID of the metadata field. id: type: string description: The external ID of the option. value: type: string description: The value of the option. reorder_metadata_fields_request: type: object properties: order_by: type: string enum: - label - created_at - external_id description: The field to order by. direction: $ref: '#/components/schemas/direction_enum' description: The direction to order by. required: - order_by reorder_metadata_field_request: type: object properties: position: type: integer description: The position of the metadata field. required: - position datasource_value_input: type: object properties: external_id: type: string description: The external ID of the datasource value. value: type: string description: The value of the option. position: type: integer description: The position of the option. state: $ref: '#/components/schemas/state_enum' description: The state of the option. update_datasource_request: type: object properties: values: type: array items: $ref: '#/components/schemas/datasource_value_input' metadata_field_datasource_value: type: object properties: external_id: type: string description: The external ID of the datasource value. value: type: string description: The value of the option. metadata_field_datasource_values_array: type: object properties: values: type: array items: $ref: '#/components/schemas/metadata_field_datasource_value' datasource_external_ids_request: type: object properties: external_ids: type: array items: type: string description: The external IDs of the datasource values. required: - external_ids datasource_search_in_field_request: type: object properties: payload: type: object description: Metadata payload for rule-based inference. datasource_order_request: type: object description: The ordering criteria for a metadata field's datasource values. properties: order_by: type: string description: The datasource value attribute to sort by (for example, "value" or "external_id"). example: value direction: allOf: - $ref: '#/components/schemas/direction_enum' description: The sort direction for the datasource values. Default is "asc". example: asc required: - order_by metadata_rule_apply_value: type: object description: Applies a specific value to the metadata field when the rule condition is met. required: - value properties: value: type: - string - 'null' description: The value to apply to the metadata field. example: my value mode: type: string enum: - default - override - append description: | How to apply the value. `default` sets it only when no value is already inferred; `override` always replaces any inferred value; `append` adds to an existing array value. example: default metadata_rule_activate_values: description: | Restricts which datasource option ids are active. Either the string "all" (activate every option) or an object listing the external ids to activate. oneOf: - type: string enum: - all - type: object required: - external_ids properties: external_ids: type: - array - 'null' items: type: string description: The datasource external ids to activate. mode: type: string enum: - override - append description: Whether to override the current active set or append to it. Defaults to append. metadata_rule_result: type: object description: The result to apply when the rule's condition is met. At least one property must be set. minProperties: 1 properties: apply_value: $ref: '#/components/schemas/metadata_rule_apply_value' disable: type: boolean description: When true, disables the field in the UI (sets default_disabled). Preferred over the legacy enable action. enable: type: boolean deprecated: true description: When true, enables the field in the UI (clears default_disabled). Deprecated — prefer using disable with value false instead. hide: type: boolean description: When true, hides the field in the UI (sets hidden_ui). activate_values: $ref: '#/components/schemas/metadata_rule_activate_values' set_mandatory: type: boolean description: When true, makes the field mandatory; when false, makes it optional. metadata_rule_base: type: object properties: metadata_field_id: type: string description: The ID of the metadata field this rule applies to. name: type: string description: A descriptive name for the metadata rule. condition: type: object description: The condition that triggers this rule. Ensure it adheres to the metadata rule condition schema. result: $ref: '#/components/schemas/metadata_rule_result' state: $ref: '#/components/schemas/state_enum' description: The state of the rule. position: type: integer description: The position/order of this rule relative to other rules. example: metadata_field_id: smd-field-1 name: My Rule condition: metadata_field_id: smd-field-2 populated: true result: apply_value: value: my value mode: default state: active position: 1 metadata_rule_response: allOf: - $ref: '#/components/schemas/metadata_rule_base' - type: object properties: external_id: type: string description: The unique identifier of the metadata rule. condition_signature: type: string description: A signature representing the condition structure. example: external_id: '1234567890' metadata_field_id: smd-field-1 name: Disable field when other field is populated condition: metadata_field_id: smd-field-2 populated: true condition_signature: dGhlIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2c result: disable: true state: active position: 1 metadata_rules_list_response: type: object properties: metadata_rules: type: array items: $ref: '#/components/schemas/metadata_rule_response' metadata_rule_create: allOf: - $ref: '#/components/schemas/metadata_rule_base' required: - metadata_field_id - name - condition - result example: metadata_field_id: smd-field-1 name: Disable field when other field is populated condition: metadata_field_id: smd-field-2 populated: true result: disable: true state: active position: 1 metadata_rule_update: allOf: - $ref: '#/components/schemas/metadata_rule_base' example: metadata_field_id: smd-field-1 name: Disable field when other field is populated condition: metadata_field_id: smd-field-2 populated: true result: disable: true state: active position: 1 success_response: type: object properties: success: type: boolean description: Whether the operation was successful. example: true required: - success upload_mapping: type: object description: Represents an upload mapping properties: folder: type: string description: The folder name example: my_folder template: type: string description: The template URL example: http://example.com/files external_id: type: string description: Unique identifier for the mapping upload_preset_name: type: - string - 'null' description: Name of an upload preset if one is associated required: - folder - template - external_id upload_mapping_list_response: type: object description: List response for upload mappings. properties: mappings: type: array description: Array of upload mapping objects. items: $ref: '#/components/schemas/upload_mapping' total_entries: type: integer description: Total number of mappings. next_cursor: type: string description: Cursor for getting the next page of results. required: - mappings - total_entries upload_mapping_input: type: object properties: folder: type: string description: The folder name for the mapping. example: my_folder template: type: string description: The template URL. example: http://example.com/files required: - folder - template upload_mapping_mutation_response: type: object properties: message: type: string external_id: type: string description: Unique identifier of the mapping. example: 1bce826e-ec50-45c6-9f86-c858948c7158 required: - message - external_id upload_mapping_create_response: type: object properties: message: type: string folder: type: string description: The folder name that was created. external_id: type: string description: Unique identifier for the mapping. example: 1bce826e-ec50-45c6-9f86-c858948c7158 required: - message - folder - external_id replace_upload_mappings_request: type: object properties: mappings: type: array items: $ref: '#/components/schemas/upload_mapping_input' required: - mappings event_type: type: string description: The type of notification event. enum: - all - access_control_changed - bulk_refresh_auto_fetch - create_folder - delete - delete_by_token - delete_folder - eager - error - explode - generate_archive - info - invalidate_custom_cdn - moderation - moderation_summary - move - move_or_rename_asset_folder - multi - publish - rename - report - resource_context_changed - resource_display_name_changed - resource_metadata_changed - resource_tags_changed - restore_asset_version - sprite - upload uri_type: type: string enum: - webhook - flow trigger_info: type: object properties: id: type: string example: c2c822dd1aa41ba6d81299df8b5ae949 product_environment_id: type: string example: 7fabb2ff3d687d05b63134cf8fa006ba16 uri_type: $ref: '#/components/schemas/uri_type' example: webhook uri: type: string format: uri example: http://example.com event_type: $ref: '#/components/schemas/event_type' example: all created_at: type: string format: date-time example: '2025-05-13T09:40:29+00:00' updated_at: type: string format: date-time example: '2025-05-13T09:40:29+00:00' required: - uri - uri_type trigger_list_response: type: object description: List response for triggers. properties: triggers: type: array description: List of trigger objects. items: $ref: '#/components/schemas/trigger_info' total: type: integer description: Total number of triggers. example: 1 required: - triggers - total create_trigger_request: type: object properties: uri: type: string description: The URL that will receive the notification response. format: uri example: https://trigger.site/124 event_type: $ref: '#/components/schemas/event_type' description: The type of event that will trigger the notification response. example: upload required: - uri - event_type update_trigger_request: type: object properties: new_uri: type: string format: uri example: http://example.com description: The updated URL that will receive the notification response. required: - new_uri test_trigger_request: type: object properties: sample_data: type: object description: Sample notification data to evaluate the filter against. example: resource_type: image public_id: sample123 tags: - product test_trigger_response: type: object properties: trigger_id: type: string description: The ID of the trigger that was tested. example: c2c822dd1aa41ba6d81299df8b5ae949 filter_present: type: boolean description: Whether the trigger has a filter configured. example: true filter_result: type: boolean description: Result of evaluating the filter against sample_data (true if no filter). example: true required: - trigger_id - filter_present - filter_result resource_types_response: type: object properties: resource_types: type: array description: The list of available resource types. items: type: string enum: - image - raw - video x-enum-descriptions: - Image files (jpg, png, gif, etc.). - Raw files (documents, text files, etc.). - Video files (mp4, webm, etc.). example: - image - raw - video resource_fields_enum: type: string enum: - public_id - asset_id - asset_folder - folder - display_name - format - version - resource_type - type - created_at - bytes - width - height - backup - access_control - access_mode - url - secure_url - tags - context - metadata - moderation_kind - moderation_status - placeholder - regions - is_audio description: Valid field names for selective resource responses. info: type: object properties: asset_id: $ref: '#/components/schemas/asset_id' public_id: type: string asset_folder: type: string display_name: type: string folder: type: string x-speakeasy-deprecation-message: Use asset_folder instead with folder decoupling. filename: type: string format: type: string version: type: integer resource_type: type: string type: $ref: '#/components/schemas/delivery_type_all' created_at: type: string format: date-time uploaded_at: type: string format: date-time bytes: type: integer backup_bytes: type: integer width: type: - integer - 'null' height: type: - integer - 'null' aspect_ratio: type: - number - 'null' pixels: type: - integer - 'null' tags: allOf: - $ref: '#/components/schemas/tags_response' description: Included if 'tags=true' parameter is used. context: allOf: - $ref: '#/components/schemas/context_full_response' description: Included if 'context=true' parameter is used. metadata: type: object additionalProperties: true moderation_kind: type: string description: The type of moderation applied to the asset. example: manual moderation_status: type: string description: The current status of the moderation process for the asset. example: pending moderation: type: array description: Included if 'moderations=true' parameter is used. items: type: object properties: kind: type: string status: type: string updated_at: type: string format: date-time backup: type: boolean url: type: string format: uri secure_url: type: string format: uri status: type: string access_control: anyOf: - $ref: '#/components/schemas/access_control' - type: 'null' etag: type: string animated: type: - boolean - 'null' description: Whether the asset is animated (e.g., GIF, animated WebP). Null for non-animated assets. duration: type: - number - 'null' description: Duration in seconds for video/audio assets. Null for images. resource_subtype: type: - string - 'null' description: The subtype of the resource (e.g., for video). Null when not applicable. substatus: type: - string - 'null' description: The substatus of the resource. Null when not set. related_assets: type: - array - 'null' description: Related assets linked to this resource. Null when none linked. items: type: object last_updated: type: - object - 'null' properties: access_control_updated_at: type: string format: date-time context_updated_at: type: string format: date-time metadata_updated_at: type: string format: date-time public_id_updated_at: type: string format: date-time tags_updated_at: type: string format: date-time updated_at: type: string format: date-time next_cursor: type: string description: Cursor for paginating derived assets. derived: type: array items: type: object properties: transformation: type: string format: type: string bytes: type: integer id: type: string url: type: string format: uri secure_url: type: string format: uri faces: allOf: - $ref: '#/components/schemas/faces_response' description: Detected face rectangles. Included if 'faces=true' parameter is used. coordinates: allOf: - $ref: '#/components/schemas/coordinates_response' description: Face and custom coordinate data. Included if 'coordinates=true' parameter is used. illustration_score: type: number semi_transparent: type: boolean grayscale: type: boolean colors: type: array items: type: array predominant: type: object additionalProperties: type: array items: type: array versions: type: array items: type: object properties: version_id: $ref: '#/components/schemas/version_id' version: type: string format: type: - string - 'null' size: type: integer time: type: string format: date-time restorable: type: boolean info: type: object description: Additional asset information (visual search, recognized people, etc.) derivatives: type: - array - 'null' description: Included if 'derived=true' parameter is used. Null when no derivatives exist. items: type: object properties: id: type: string description: The unique identifier of the derived resource. example: 5a73fd588cb301206c0a5c5c6ad796b3 transformation: type: string description: The transformation string that was applied. example: w_300,h_100/ transformation_signature: type: string description: The unique signature of the transformation. example: 658a49d8-2944-37db-9825-1ddface10c7b secure_url: type: string format: uri description: The secure URL for accessing the derived resource. example: https://res.cloudinary.com/demo/image/upload/w_300,h_100/sample list_response: type: object properties: resources: type: array items: $ref: '#/components/schemas/info' next_cursor: type: - string - 'null' total_count: type: integer restore_request: type: object required: - asset_ids properties: asset_ids: type: array items: $ref: '#/components/schemas/asset_id' description: The unique and immutable asset IDs of backed up assets to restore. maxItems: 100 example: - 2262b0b5eb88f1fd7724e29b0e57d730 - d23c0526e6feca2c343e40c2fce5231a versions: type: array items: type: string description: If you specify versions, the number of versions in the array must exactly match the number of asset_ids. example: - c3fe4be5921eb89acd9af738c892f654 - d214063097a43d1d1293db61a397f60f notification_url: type: string format: uri description: The URL that will receive notification when restore is complete. example: https://example.com/webhook restore_response: type: object additionalProperties: oneOf: - $ref: '#/components/schemas/info' - type: object properties: error: type: string enum: - no_backup - failed - unauthorized description: The error message if restore failed for a specific asset. DeleteResourceByPublicIdsRequest: description: The delete request specifying which resources to delete. type: object properties: public_ids: type: array items: type: string description: A list of public IDs of the resources to delete. prefix: type: string description: Delete all assets, including derived assets, where the public ID starts with the specified prefix (up to a maximum of 1000 original resources). all: type: boolean description: Delete all assets (of the relevant resource_type and type), including derived assets (up to a maximum of 1000 original resources). resource_type: allOf: - $ref: '#/components/schemas/resource_type' - default: image description: 'The type of asset. Relevant as a parameter only when using the SDKs (the resource_type is included in the endpoint URL when using the REST API). Note: use video for all video and audio assets, such as .mp3. Default: image.' keep_original: type: boolean default: false description: 'Whether to delete only the derived assets. Default: false.' invalidate: type: boolean default: false description: 'Whether to also invalidate the copies of the resource on the CDN. It usually takes between a few seconds and a few minutes for the invalidation to fully propagate through the CDN. Default: false.' next_cursor: type: string description: (Only when deleting by prefix or all) When a deletion request has more than 1000 resources to delete, the response includes the partial boolean parameter set to true, as well as a next_cursor value. You can then specify this returned next_cursor value as a parameter of the following deletion request. transformations: type: string description: Only the derived assets matching this hash of transformation parameters will be deleted. You can include multiple transformations separated by a pipe character (|). oneOf: - required: - public_ids - required: - prefix - required: - all ResourceUpdateRequest: description: The resource properties to update. type: object properties: display_name: type: string description: The display name of the resource. example: My Product Image unique_display_name: type: boolean description: 'Whether to ensure the display name is unique across all resources. If false, the operation will fail if a resource with the same display name exists. Default: false' default: false asset_folder: type: string description: The folder where the asset should be placed. example: products/summer tags: $ref: '#/components/schemas/tags_param' context: $ref: '#/components/schemas/context_param' metadata: $ref: '#/components/schemas/structured_metadata_param' clear_invalid: type: boolean description: 'Whether to clear invalid metadata fields. If false, invalid fields will be preserved. Default: false' default: false face_coordinates: type: string description: Face coordinates as comma-separated values, with multiple faces separated by pipes. pattern: ^(\d+,\d+,\d+,\d+)(\|\d+,\d+,\d+,\d+)*$ example: 10,20,150,130|213,345,82,61 custom_coordinates: type: string description: Custom coordinates as comma-separated values, with multiple coordinates separated by pipes. pattern: ^(\d+,\d+,\d+,\d+)(\|\d+,\d+,\d+,\d+)*$ example: 10,20,150,130|213,345,82,61 regions: type: string description: A JSON-encoded object of named groups of coordinate pairs representing regions. Each region name may contain only letters, numbers, or hyphens, and must have at least two coordinate pairs. example: '{"face": [[100, 200], [300, 400]], "body": [[50, 60], [70, 80], [90, 100]]}' quality_override: type: string description: Quality override value that will override any automatic quality transformations. examples: - '80:420' - auto:best moderation_status: type: string enum: - approved - rejected description: The moderation status of the resource. auto_tagging: type: number minimum: 0 maximum: 1 description: Confidence threshold for auto-tagging. detection: type: string description: The type of detection to perform on the resource. examples: - captioning - coco_v2 - watermark-detection ocr: type: string description: The type of OCR to perform on the resource. Set to adv_ocr, optionally with options (e.g., adv_ocr:document). example: adv_ocr raw_convert: type: string description: The conversion to apply for raw files (e.g., aspose, google_speech, extract_text). example: google_speech categorization: type: string description: The type of categorization to perform on the resource. Optionally append a language code suffix (e.g., google_tagging:fr). example: google_tagging visual_search: type: boolean description: 'Whether to index the resource with visual search. If true, the resource will be indexed for visual search capabilities. Default: false' background_removal: type: string description: The background removal provider to use for the resource. Optionally append a template suffix (e.g., cloudinary_ai:fine_edges). example: cloudinary_ai access_control: $ref: '#/components/schemas/access_control' additionalProperties: false tags_list_response: type: object properties: tags: type: array items: type: string next_cursor: type: - string - 'null' delete_backup_versions_request: type: object properties: version_ids: type: array items: type: string description: The list of version IDs to delete from backup. example: - 5552aa57e67445552a3cdc1110a0115 - 383e22a57167445552a3cdc16f0a0c85 required: - version_ids delete_backup_versions_response: type: object properties: asset_id: $ref: '#/components/schemas/asset_id' deleted_version_ids: type: array items: $ref: '#/components/schemas/version_id' description: The list of version IDs that were successfully deleted. required: - asset_id - deleted_version_ids backup_version_failure: type: object properties: version_id: $ref: '#/components/schemas/version_id' description: The version ID that failed to delete. error: type: string description: The error message explaining the failure. delete_backup_versions_partial_response: type: object properties: asset_id: $ref: '#/components/schemas/asset_id' deleted_version_ids: type: array items: $ref: '#/components/schemas/version_id' description: The list of version IDs that were successfully deleted. failures: type: array items: $ref: '#/components/schemas/backup_version_failure' description: The list of version IDs that failed to delete with error messages. required: - asset_id - deleted_version_ids usage_response: type: object properties: plan: type: string description: The current plan name last_updated: type: string format: date description: When the usage data was last updated date_requested: type: string format: date-time description: The date for which usage was requested transformations: type: object properties: usage: type: integer description: Number of transformations used objects: type: object properties: usage: type: integer description: Number of objects used limit: type: integer description: Object limit for the plan used_percent: type: number format: float description: Percentage of object limit used bandwidth: type: object properties: usage: type: integer description: Bandwidth used in bytes limit: type: integer description: Bandwidth limit for the plan used_percent: type: number format: float description: Percentage of bandwidth limit used storage: type: object properties: usage: type: integer description: Storage used in bytes limit: type: integer description: Storage limit for the plan used_percent: type: number format: float description: Percentage of storage limit used impressions: type: object properties: usage: type: integer description: Number of impressions used seconds_delivered: type: object properties: usage: type: integer description: Number of seconds delivered resources: type: integer description: Number of resources stored derived_resources: type: integer description: Number of derived resources requests: type: integer description: Number of requests made media_limits: type: object description: Upload size and pixel limits properties: image_max_size_bytes: type: integer description: Maximum size for images in bytes video_max_size_bytes: type: integer description: Maximum size for videos in bytes raw_max_size_bytes: type: integer description: Maximum size for raw files in bytes image_max_px: type: integer description: Maximum pixels for images asset_max_total_px: type: integer description: Maximum total pixels for assets video_view: type: object properties: video_public_id: type: string description: The full public ID of the video. video_duration: type: - number - 'null' description: The duration in seconds of the video. video_transformation: type: - string - 'null' description: The transformation applied to the video. video_extension: type: - string - 'null' description: The file extension of the video. viewer_application_name: type: - string - 'null' description: The application used to view the video. viewer_location_country_code: type: - string - 'null' description: The 2-digit ISO country code of the viewer location. viewer_os_identifier: type: - string - 'null' description: The full identifier for the viewer's operating system. view_watch_time: type: - number - 'null' description: The length of time the video was viewed. view_ended_at: type: string format: date-time description: The date when the video view ended. video_views_response: type: object properties: request_id: type: string description: Unique identifier for the request. next_cursor: type: string description: Cursor value for pagination. data: type: array items: $ref: '#/components/schemas/video_view' relate_assets_by_asset_id_request: description: The asset relation request. type: object required: - assets_to_relate properties: assets_to_relate: type: array description: Relates the asset to all the assets specified in this array of up to 10 assets, specified by their asset IDs. items: $ref: '#/components/schemas/asset_id' maxItems: 10 example: - fd19f6964b9d377b7ac39752f03d7596 - b7dcc099f53ea9b2e9eb602634fc0fc7 asset_relation_info: type: object properties: message: type: string example: success description: The message indicating the result of the operation. code: type: string enum: - rejected_ids - invalid_ids - internal_error_ids - non_existing_ids - invalid_relate_to_self_id - already_exists_ids - relation_does_not_exist_ids - success_ids example: success_ids description: The code indicating the result of the operation. asset: type: string example: fd19f6964b9d377b7ac39752f03d7596 description: The identifier of the asset, either asset ID or public ID path. status: type: integer example: 200 description: The HTTP status code indicating the result of the operation. asset_relations_response: type: object properties: failed: type: array items: $ref: '#/components/schemas/asset_relation_info' success: type: array items: $ref: '#/components/schemas/asset_relation_info' example: failed: [] success: - message: success code: success_ids asset: fd19f6964b9d377b7ac39752f03d7596 status: 200 - message: success code: success_ids asset: b7dcc099f53ea9b2e9eb602634fc0fc7 status: 200 unrelate_assets_by_asset_id_request: description: The asset unrelation request. type: object required: - assets_to_unrelate properties: assets_to_unrelate: type: array description: Unrelates the asset from all the assets specified in this array of assets, specified by their asset IDs. items: $ref: '#/components/schemas/asset_id' example: - fd19f6964b9d377b7ac39752f03d7596 - b7dcc099f53ea9b2e9eb602634fc0fc7 asset_relations_delete_response: type: object properties: failed: type: array items: $ref: '#/components/schemas/asset_relation_info' success: type: array items: $ref: '#/components/schemas/asset_relation_info' example: failed: [] success: - message: success code: success_ids asset: fd19f6964b9d377b7ac39752f03d7596 status: 200 - message: success code: success_ids asset: b7dcc099f53ea9b2e9eb602634fc0fc7 status: 200 relate_assets_by_public_id_request: description: The asset relation request. type: object required: - assets_to_relate properties: assets_to_relate: type: array description: Relates the asset to all the other assets specified in this array of up to 10 assets, specified as resource_type/type/public_id. items: type: string maxItems: 10 example: - raw/upload/dog_subtitles.srt - image/authenticated/dog_license unrelate_assets_by_public_id_request: description: The asset unrelation request. type: object required: - assets_to_unrelate properties: assets_to_unrelate: type: array description: Unrelates the asset from all the assets specified in this array of assets, specified as resource_type/type/public_id. items: type: string example: - raw/upload/dog_subtitles.srt - image/authenticated/dog_license streaming_profile: type: object properties: external_id: type: string description: The unique identifier of the streaming profile example: f6360c4d-4f62-48b7-b56b-8c49d1bd6dcf name: type: string description: The name of the streaming profile example: hd_1080p display_name: type: - string - 'null' description: The display name of the streaming profile example: HD 1080p predefined: type: boolean description: Whether this is a predefined streaming profile example: false representations: type: array description: The list of representations in the streaming profile items: type: object properties: transformation: type: array description: The transformation parameters for this representation items: type: object additionalProperties: true example: - transformation: - width: 1920 height: 1080 crop: scale video_codec: h264 bit_rate: 2500k audio_codec: aac audio_bitrate: 128k fps: 30 - transformation: - width: 1280 height: 720 crop: scale video_codec: h264 bit_rate: 1500k audio_codec: aac audio_bitrate: 128k fps: 30 required: - external_id - name - predefined example: external_id: sp_123456789 name: hd_1080p display_name: HD 1080p predefined: false representations: - transformation: - width: 1920 height: 1080 crop: scale video_codec: h264 bit_rate: 2500k audio_codec: aac audio_bitrate: 128k fps: 30 - transformation: - width: 1280 height: 720 crop: scale video_codec: h264 bit_rate: 1500k audio_codec: aac audio_bitrate: 128k fps: 30 streaming_profile_list_response: type: object properties: data: type: array items: $ref: '#/components/schemas/streaming_profile' required: - data streaming_profile_create: type: object properties: name: type: string description: The name of the streaming profile example: hd_1080p display_name: type: - string - 'null' description: The display name of the streaming profile example: HD 1080p representations: type: string description: A JSON string containing the list of representations with transformation parameters as strings example: '[{"transformation":"w_1920,h_1080,c_scale/vc_h264,br_2500k/ac_aac,abr_128k/fps_30"},{"transformation":"w_1280,h_720,c_scale/vc_h264,br_1500k/ac_aac,abr_128k/fps_30"}]' required: - name - representations example: name: hd_1080p display_name: HD 1080p representations: '[{"transformation":"w_1920,h_1080,c_scale/vc_h264,br_2500k/ac_aac,abr_128k/fps_30"},{"transformation":"w_1280,h_720,c_scale/vc_h264,br_1500k/ac_aac,abr_128k/fps_30"}]' streaming_profile_data_response: type: object properties: data: $ref: '#/components/schemas/streaming_profile' required: - data streaming_profile_update: type: object properties: display_name: type: - string - 'null' description: The display name of the streaming profile example: HD 1080p Updated representations: type: string description: A JSON string containing the list of representations with transformation parameters as strings example: '[{"transformation":"w_1920,h_1080,c_scale/vc_h264,br_3000k/ac_aac,abr_192k/fps_30"},{"transformation":"w_1280,h_720,c_scale/vc_h264,br_2000k/ac_aac,abr_192k/fps_30"}]' required: - representations example: display_name: HD 1080p Updated representations: '[{"transformation":"w_1920,h_1080,c_scale/vc_h264,br_3000k/ac_aac,abr_192k/fps_30"},{"transformation":"w_1280,h_720,c_scale/vc_h264,br_2000k/ac_aac,abr_192k/fps_30"}]' streaming_profile_update_response: type: object properties: message: type: string data: $ref: '#/components/schemas/streaming_profile' required: - message - data folder: type: object properties: name: type: string description: The name of the folder. path: type: string description: The full path of the folder. external_id: type: string description: The unique identifier for the folder. created_at: type: string format: date-time description: The timestamp when the folder was created. required: - name - path - external_id example: name: a path: folder/a external_id: abcdefg1234567890 folders_list_response: type: object properties: folders: type: array description: The root folders in the product environment. items: $ref: '#/components/schemas/folder' next_cursor: type: - string - 'null' description: A cursor for pagination. Always null for root folders. total_count: type: integer description: The total number of root folders. required: - folders - next_cursor - total_count example: folders: - name: a path: folder/a external_id: abcdefg1234567890 - name: b path: folder/b external_id: hijklmn0987654321 next_cursor: total_count: 2 move_folder_request: description: The folder move/rename request. type: object properties: to_folder: type: string description: The new path for the folder. example: product1/test1 required: - to_folder folder_name_path: type: object properties: name: type: string description: The name of the folder. path: type: string description: The full path of the folder. required: - name - path move_folder_response: type: object properties: from: $ref: '#/components/schemas/folder_name_path' example: name: test path: product/test to: $ref: '#/components/schemas/folder_name_path' example: name: test1 path: product1/test1 required: - from - to create_folder_response: allOf: - $ref: '#/components/schemas/folder' - type: object properties: success: type: boolean description: Whether the operation was successful. example: true delete_folder_response: type: object properties: deleted: type: array description: List of deleted folder paths. items: type: string example: - product/test required: - deleted search_sort_pair: type: object additionalProperties: $ref: '#/components/schemas/direction_enum' minProperties: 1 maxProperties: 1 description: A single field-to-direction mapping. The object must contain exactly one key with value 'asc' or 'desc'. search_sort_by: type: array items: $ref: '#/components/schemas/search_sort_pair' description: | An array of single-key objects mapping a field to a sort direction. Each object must contain exactly one field name mapped to 'asc' or 'desc'. Default: [{"created_at": "desc"}]. example: - created_at: desc - public_id: asc folders_search_response: type: object properties: total_count: type: integer description: The total number of folders matching the search. time: type: integer description: The time taken to execute the search (ms). next_cursor: type: - string - 'null' description: A cursor for pagination. folders: type: array items: $ref: '#/components/schemas/folder' description: The folders matching the search. required: - total_count - time - folders example: total_count: 14 time: 1136 next_cursor: 0a37f8c9f65e79c1cbe782d47987ed108d9f9e0dad4b0666adbf4eac9a634191996204a0ef84ce7b3e0e folders: - name: 1_folder_param path: my_parent/1_folder_param external_id: c7c08f8ecf093353d669d2ea3123967c7 - name: a_folder_param path: my_parent/a_folder_param external_id: c7c08b736592482c1125ba5d689ab8779 folder_search_request: type: object properties: expression: type: string description: The (Lucene-like) string expression specifying the search query. sort_by: $ref: '#/components/schemas/search_sort_by' max_results: type: integer maximum: 500 default: 50 description: Maximum number of folders to return (max 500, default 50). next_cursor: type: string description: When more results are available, use the next_cursor value from the previous response. principal_type: type: string enum: - user - group - apiKey description: The type of principal. folder_role: type: object properties: id: type: string description: The unique identifier of the role. example: cld::role::folder::viewer name: type: string description: The human-readable name of the role. example: Manager description: type: string description: A summary of the permissions granted by this role. example: Editor permissions, plus delete, share, and full download access. inherited: type: boolean description: Indicates whether this role is inherited from an ancestor folder. If false, it's assigned directly to the requested folder. example: false required: - id - name - description - inherited folder_role_assignment: type: object properties: type: $ref: '#/components/schemas/principal_type' example: user id: type: string description: The unique identifier of the principal. For `apiKey`, provide the API key value. example: cec735fd65b7d541f35d9f661d130f folder_id: type: string description: The ID of the folder where this role assignment was defined, either the requested folder or one of its ancestor folders. example: cd7e9d690a014c68ae8b58f08e090cb03a roles: type: array description: The roles assigned to this principal for this folder. items: $ref: '#/components/schemas/folder_role' required: - type - id - folder_id - roles permitted_role: type: object properties: id: type: string description: The role identifier. example: cld::role::folder::manager name: type: string description: The human-readable name of the role. example: Manager description: type: string description: A description of the role's permissions. example: Editor permissions, plus delete, share, and full download access. required: - id - name - description folder_roles_response: type: object properties: shared_with: type: array description: An array of principals (users, groups, or API keys) with their role assignments on this folder, including roles inherited from ancestor folders. items: $ref: '#/components/schemas/folder_role_assignment' permitted_roles: type: array description: The roles the authenticated user can assign on this folder. Users can assign only roles at or below their own permission level for this folder. Returned only when `include_assignable_roles` is true. items: $ref: '#/components/schemas/permitted_role' example: shared_with: - type: user id: cec735fd65b7d541f35d9f661d130f folder_id: cd7e9d690a014c68ae8b58f08e090cb03a roles: - id: cld::role::folder::viewer description: View and download public assets. name: Viewer inherited: false permitted_roles: - id: cld::role::folder::viewer name: Viewer description: View and download public assets. - id: cld::role::folder::contributor name: Contributor description: Viewer permissions, plus add assets and create subfolders. assign_folder_roles_request: type: object properties: principal: type: object description: The user, group, or API key whose role assignments are being modified. properties: type: $ref: '#/components/schemas/principal_type' example: apiKey id: type: string description: The unique identifier of the principal. For `apiKey`, provide the API key value. example: '799451857115779' required: - type - id operation: type: string enum: - add - remove description: The operation to perform on the principal’s role assignments. `add` grants the specified roles; `remove` revokes them. example: add roles: type: array description: The role IDs to add or remove. items: type: string maxItems: 10 example: - cld::role::folder::viewer required: - principal - operation - roles example: principal: id: '799451857115779' type: apiKey operation: add roles: - cld::role::folder::contributor folder_rename_request: type: object description: The source and destination folder paths. properties: path: type: string description: The full path of the folder to rename or move. example: product/test to_path: type: string description: The new full path for the folder. example: product/test_renamed resources_limit: type: integer description: The maximum number of assets that may be moved by the rename. Assets beyond this limit cause the rename to be rejected. example: 100000 resources_size_limit: type: integer description: The maximum total size, in bytes, of the assets that may be moved by the rename. example: 1099511627776 max_derived: type: integer description: The maximum number of derived assets that may be moved by the rename. example: 1000000 required: - path - to_path folder_rename_response: type: object description: The result of renaming or moving a folder. properties: folder_deleted: type: boolean description: Whether the source folder was deleted after the move. moved: type: integer description: The number of assets successfully moved. rejected: type: integer description: The number of assets rejected during the move. failed: type: integer description: The number of assets that failed to move. folder_by_id_request: type: object description: The identifier of the folder to retrieve. properties: id: type: string description: The immutable identifier of the folder to retrieve. example: cd7e9d690a014c68ae8b58f08e090cb03a required: - id folder_detail_response: description: | The details of a folder. Returns the standard folder fields plus aggregation and ancestor fields when available. allOf: - $ref: '#/components/schemas/folder' - type: object properties: resource_count: type: integer description: The number of assets directly within the folder. total_bytes: type: number description: The total size, in bytes, of the assets within the folder. last_uploaded_at: type: - integer - 'null' description: The Unix timestamp of the most recent upload into the folder. ancestors: type: array description: The ancestor folders of this folder, ordered from root to parent. items: $ref: '#/components/schemas/folder' additionalProperties: true folder_by_path_request: type: object description: The path of the folder to retrieve. properties: path: type: string description: The full path of the folder to retrieve. Use an empty string for the root folder. example: product/test case_sensitive: type: boolean description: Whether to match the folder path case-sensitively. If false, the path is matched case-insensitively. required: - path folder_descendants_request: type: object description: The parent folder identifier and optional descendant filter. properties: id: type: string description: The immutable identifier of the parent folder whose descendants are returned. example: cd7e9d690a014c68ae8b58f08e090cb03a filter_ids: type: array description: A list of folder identifiers to restrict the returned descendants to. items: type: string inclusive: type: boolean description: Whether to include the parent folder itself in the results. If false, only descendants are returned. required: - id folder_descendants_response: type: object description: The descendant folders of a folder. properties: folders: type: array description: The descendant folders. items: $ref: '#/components/schemas/folder_detail_response' required: - folders DerivedDestroyRequest: type: object description: Request parameters for deleting derived resources properties: derived_resource_ids: type: array items: type: string description: Array of derived resource IDs to delete specific derived resources example: - 1234567890abcdef - fedcba0987654321 invalidate: type: boolean description: Whether to invalidate the CDN cache for the deleted resources example: true required: - derived_resource_ids DerivedDestroyResponse: type: object description: Response for derived resource deletion properties: deleted: type: object additionalProperties: type: string enum: - deleted - not_found description: Map of derived resource IDs to deletion status example: 1234567890abcdef: deleted fedcba0987654321: not_found unauthorized: type: array items: type: string description: Array of derived resource IDs that were not authorized to be deleted invalidation: type: object properties: took: type: number description: Time taken for CDN invalidation in seconds example: 25 urls: type: array items: type: string description: Array of URLs that were invalidated example: - /image/upload/w_100/sample - /image/upload/w_200/sample invalidate_by_urls_request: type: object description: The set of delivery URLs whose derived assets should be invalidated. properties: urls: type: array description: The delivery URLs whose cached derived assets should be invalidated. items: type: string example: - https://res.cloudinary.com/demo/image/upload/w_100/sample.jpg skip_reporting: type: boolean description: Whether to skip recording this invalidation against the product environment usage. If false, the invalidation is counted towards usage. Default is false. required: - urls invalidate_by_urls_response: type: object description: The result of invalidating derived assets by delivery URLs. properties: cdn_invalidated: type: boolean description: Whether the assets were invalidated directly on the CDN. took: type: number description: The time the invalidation took, in seconds. urls: type: array description: The delivery URLs that were invalidated. items: type: string unauthorized_urls: type: array description: The delivery URLs that were skipped because the caller lacked update permission. items: type: string resource_get_by_body_request: type: object description: The identifying attributes of the asset to retrieve. properties: public_id: type: string description: The public ID of the asset to retrieve. example: sample resource_type: allOf: - $ref: '#/components/schemas/resource_type' description: The type of the asset (image, video, or raw). example: image kind: allOf: - $ref: '#/components/schemas/managed_delivery_type' description: The delivery type of the asset. example: upload with_elastic: type: boolean description: Whether to source the asset details from the search index. If false, the details are read directly from the canonical store. Default is true. derived: type: boolean description: Whether to include the derived assets of this asset in the response. Default is true. versions: type: boolean description: Whether to include the backup versions of this asset in the response. Default is false. required: - public_id - resource_type - kind additionalProperties: true resource_internal_response: description: | The details of a single asset. Returns the standard asset fields, plus additional internal fields when accessed over the internal transport. allOf: - $ref: '#/components/schemas/info' - type: object additionalProperties: true admin_context_operation: type: object description: A single internal contextual-metadata operation. properties: name: type: string description: The context key to operate on. value: type: array description: The value(s) to apply for the context key. items: type: string type: type: string description: The value type of the context entry. op: type: string description: The operation to apply to the context key (for example, "+" to add or "-" to remove). required: - name resource_update_by_body_request: type: object description: | The asset identifiers plus the attributes to update. The identifying fields (public_id, resource_type, kind) are required; the remaining update fields are optional. Additional fields accepted by the asset update API are permitted. properties: public_id: type: string description: The public ID of the asset to update. example: sample resource_type: allOf: - $ref: '#/components/schemas/resource_type' description: The type of the asset (image, video, or raw). example: image kind: allOf: - $ref: '#/components/schemas/managed_delivery_type' description: The delivery type of the asset. example: upload tags: type: array description: The list of tags to assign to the asset, replacing any existing tags. items: type: string context: type: object additionalProperties: true description: The key-value pairs of contextual metadata to assign to the asset. metadata: type: object additionalProperties: true description: The structured metadata field values to assign to the asset. asset_folder: type: string description: The asset folder to move the asset into. display_name: type: string description: The display name to assign to the asset. moderation_status: type: string enum: - pending - approved - rejected description: The moderation status to set on the asset. admin_context: type: array description: | Internal-only contextual metadata operations applied with add/remove semantics. Each entry names a context key, the value(s) to apply, the value type, and the operation. items: $ref: '#/components/schemas/admin_context_operation' response_type: type: string description: The shape of the asset representation to return (for example, "public"). skip_permission_check: type: boolean description: Whether to skip permission enforcement for the update. Internal use only. Default is false. required: - public_id - resource_type - kind additionalProperties: true resources_by_container_id_response: type: object description: A page of assets contained in a folder, with pagination metadata. properties: resources: type: array description: The assets contained in the folder. items: $ref: '#/components/schemas/resource_internal_response' total_count: type: integer description: The total number of assets in the folder. next_cursor: type: string description: A cursor for retrieving the next page of results, when more results are available. required: - resources eval_request: type: object description: | The eval expression and the upload parameters to evaluate it against. The `eval` field holds the dynamic expression; any other upload parameters may be supplied alongside it. properties: eval: type: string description: The dynamic eval expression to evaluate against the upload parameters. example: upload_options.quality_analysis = resource_info.quality_score * 100 public_id: type: string description: The public ID of the asset the eval expression applies to. required: - eval additionalProperties: true eval_response: type: object description: The upload parameters resulting from evaluating the eval expression. additionalProperties: true search_parameters: type: object description: Common parameters for resource search operations. properties: expression: type: string description: | The Lucene-like search expression. Supports token match (`field:value`), exact match (`field=value`), trailing `*` for prefix match, ranges (`[a TO b]`, `{a TO b}`), and comparisons (`>`, `<`, `>=`, `<=`). Combine terms with uppercase `AND`, `OR`, `NOT`, or `+`/`-`, and group with parentheses. Wrap values containing reserved characters (spaces, colons, etc.) in double quotes. See the [search expressions guide](https://cloudinary.com/documentation/search_expressions.md) for the full syntax and supported fields. example: resource_type:image AND tags:kitten examples: - tags:shirt AND uploaded_at>1d - resource_type:image AND bytes>1000000 AND (format:png OR format:jpg) - folder:products AND context.category:electronics - tags:"service:mantels" AND -tags:discontinued sort_by: $ref: '#/components/schemas/search_sort_by' max_results: type: integer minimum: 0 maximum: 500 description: | The maximum number of results to return. Default - 50. Maximum - 500. Set to `0` to get only `total_count` and `aggregations` without any resources in the response — useful for counting or aggregation-only queries. example: 30 next_cursor: type: string description: The cursor value to get the next page of results. Available when a previous search returned more results than max_results. aggregate: description: | Fields or ranges to aggregate search results by. Requires a Tier 2 search plan; on Tier 1 the field is accepted but aggregations are omitted from the response. oneOf: - type: array items: type: string enum: - format - resource_type - type description: The fields to aggregate results by. Simple aggregation by field name. example: - format - resource_type - type: array items: type: object properties: type: type: string enum: - bytes - image_pixels - video_pixels - duration ranges: type: array description: | One or more ranges for the numeric field. Each range must include a `key` label and at least one of `from` / `to`. items: type: object properties: key: type: string minLength: 1 maxLength: 20 pattern: ^[a-zA-Z0-9_-]+$ description: A label for the bucket, returned in the aggregation response. 1–20 chars, alphanumeric plus `-` and `_`. example: small from: type: number description: Start of the range (inclusive). At least one of `from` / `to` is required. to: type: number description: End of the range (exclusive). At least one of `from` / `to` is required. required: - key required: - type - ranges description: Range-based aggregations for numeric fields example: - type: bytes ranges: - key: small from: 0 to: 10000 - key: medium from: 10000 to: 100000 with_field: type: array items: type: string enum: - context - tags - image_metadata - image_analysis - metadata - quality_analysis - accessibility_analysis x-enum-descriptions: - Includes the `context` key-value pairs attached to each asset. - Includes the list of `tags` attached to each asset. - Includes embedded metadata extracted from the asset file (EXIF, IPTC, XMP under `image_metadata`). Tier 2 feature. - Includes analysis results such as `colors`, `face_count`, `illustration_score`, and `grayscale` under `image_analysis`. Tier 2 feature. - Includes values of structured metadata fields under `metadata`. Tier 2 feature. - Includes `quality_analysis.*` scores for assets analyzed at upload time. - Includes `accessibility_analysis.*` scores for assets analyzed at upload time. description: | The additional asset attributes to include in each search result. The `fields` parameter takes precedence over this parameter. `image_metadata`, `image_analysis`, and `metadata` require a Tier 2 search plan. example: - tags - context fields: type: string description: | A comma-separated list of fields to include in the response. Notes: - This parameter takes precedence over the with_field parameter, so if you want any additional asset attributes returned, make sure to also include them in this list (e.g., tags or context). - The following fields are always included in the response: public_id, asset_id, asset_folder, created_at, status, type, and resource_type. example: tags,context,metadata search_response: type: object description: The response object returned by search operations. properties: total_count: type: integer description: The total number of resources matching the search criteria. example: 42 time: type: integer description: The time taken to execute the search query in milliseconds. example: 42 resources: type: array description: The list of resources matching the search criteria. Can be empty if no results found. items: type: object description: Resource fields that can be returned. All fields are optional and can be filtered using the fields parameter. properties: asset_id: type: string description: The unique identifier of the asset. example: 09169cf604b03521789d1b3b8cca53d1 public_id: type: string description: The public identifier that is used to build the URL. example: blue_sweater asset_folder: type: string description: The folder where the asset is stored. example: Clothing Sale filename: type: string description: The original filename of the asset. example: blue_sweater display_name: type: string description: The display name of the asset. example: blue_sweater format: type: - string - 'null' description: The format of the asset. Null for raw assets, which have no format. example: jpg version: type: integer description: The version number of the asset. example: 1719316754 resource_type: type: string description: The type of resource. enum: - image - video - raw example: image type: $ref: '#/components/schemas/delivery_type_all' created_at: type: string format: date-time description: The timestamp when the asset was created. example: '2024-06-25T11:59:14+00:00' uploaded_at: type: string format: date-time description: The timestamp when the asset was uploaded. example: '2024-06-25T11:59:14+00:00' bytes: type: integer description: The size of the asset in bytes. example: 71063 backup_bytes: type: integer description: The size of the backup asset in bytes. example: 71063 width: type: - integer - 'null' description: The width of the asset in pixels. Null for non-visual assets (e.g. raw, audio). example: 4800 height: type: - integer - 'null' description: The height of the asset in pixels. Null for non-visual assets (e.g. raw, audio). example: 6400 aspect_ratio: type: - number - 'null' format: float description: The aspect ratio of the asset (width/height). Null for non-visual assets (e.g. raw, audio). example: 0.75 pixels: type: - integer - 'null' description: The total number of pixels in the asset. Null for non-visual assets (e.g. raw, audio). example: 307200 url: type: string format: uri description: The HTTP URL for accessing the asset. example: http://res.cloudinary.com/demo/image/upload/v1719316754/blue_sweater.jpg secure_url: type: string format: uri description: The HTTPS URL for accessing the asset. example: https://res.cloudinary.com/demo/image/upload/v1719316754/blue_sweater.jpg status: type: string description: The current status of the asset. enum: - active - inactive - deleted - pending example: active access_mode: type: - string - 'null' description: The access mode of the asset. Null when not explicitly set. enum: - public - authenticated - example: public access_control: anyOf: - $ref: '#/components/schemas/access_control' - type: 'null' description: The access control settings for the asset. example: etag: type: string description: The ETag of the asset. example: 7242da7b353e7da2c3eb8c006165b385 created_by: type: - object - 'null' description: Information about who created the asset. properties: access_key: type: string description: The access key of the user who created the asset. example: '614335564976464' uploaded_by: type: - object - 'null' description: Information about who uploaded the asset. properties: access_key: type: string description: The access key of the user who uploaded the asset. example: '614335564976464' context: allOf: - $ref: '#/components/schemas/context_response' description: Custom context metadata associated with the asset. tags: allOf: - $ref: '#/components/schemas/tags_response' description: Tags associated with the asset. image_metadata: type: - object - 'null' description: Technical metadata extracted from the image. image_analysis: type: - object - 'null' description: Results of image analysis. metadata: type: - object - 'null' description: Structured metadata associated with the asset. quality_analysis: type: - object - 'null' description: Results of quality analysis. accessibility_analysis: type: - object - 'null' description: Results of accessibility analysis. next_cursor: type: - string - 'null' description: A cursor for pagination. Only included when there are more results available. example: e4d03a236b27e306e56719f74d05cdef aggregations: type: object description: Aggregation results when the aggregate parameter is used in the request. Only included when aggregations are requested. properties: values: type: array description: Array of aggregation values when using simple aggregation (e.g., by format, resource_type, etc.) items: type: object properties: value: type: string description: The value being aggregated example: jpg count: type: integer description: The count of resources with this value example: 42 ranges: type: array description: Array of range-based aggregation results when using range aggregation (e.g., bytes, width, height, etc.) items: type: object properties: from: type: number description: Start of the range (inclusive) example: 0 to: type: number description: End of the range (exclusive) example: 1048576 count: type: integer description: The count of resources within this range example: 17 visual_search_parameters: description: Parameters for visual search operations oneOf: - type: object additionalProperties: false required: - image_url properties: image_url: type: string format: uri description: The URL of an image to use as the source for finding visually similar images example: https://res.cloudinary.com/demo/image/upload/sample.jpg threshold: type: number minimum: 0 maximum: 1 description: The minimum similarity score (between 0 and 1.0) that a resource must have to be included in the response example: 0.8 - type: object additionalProperties: false required: - image_asset_id properties: image_asset_id: type: string description: The asset ID of an existing image to use as the source for finding visually similar images example: 09169cf604b03521789d1b3b8cca53d1 threshold: type: number minimum: 0 maximum: 1 description: The minimum similarity score (between 0 and 1.0) that a resource must have to be included in the response example: 0.8 - type: object additionalProperties: false required: - text properties: text: type: string description: A textual description to find visually similar images example: shirts threshold: type: number minimum: 0 maximum: 1 description: The minimum similarity score (between 0 and 1.0) that a resource must have to be included in the response example: 0.8 initial_backup_status_enum: type: string enum: - pending - active - completed - failed description: The current status of the initial backup operation. initial_backup_summary: type: object properties: id: type: string description: The unique identifier of the initial backup operation. example: abc123def456 status: $ref: '#/components/schemas/initial_backup_status_enum' created_at: type: string format: date-time description: The date and time when the initial backup operation was created. example: '2024-05-07T10:00:00Z' required: - id - status - created_at initial_backup_list_response: type: object properties: initial_backups: type: array items: $ref: '#/components/schemas/initial_backup_summary' description: The list of initial backup operations. next_cursor: type: string description: Cursor for the next page of results. Present only when more results are available. required: - initial_backups initial_backup_create_request: type: object properties: email: type: string format: email description: An optional email address to notify when the initial backup completes. example: user@example.com initial_backup_create_response: type: object properties: ok: type: boolean description: Indicates that the initial backup was queued successfully. example: true required: - ok initial_backup_progress_response: type: object properties: status: $ref: '#/components/schemas/initial_backup_status_enum' start_time: type: string format: date-time description: The date and time when the initial backup operation started. example: '2024-05-07T10:00:00Z' completion_time: type: - string - 'null' format: date-time description: The date and time when the initial backup operation completed. Null while the operation is still running. example: '2024-05-07T11:00:00Z' processed_assets_count: type: - integer - 'null' description: The number of assets processed so far. Null when progress cannot be determined. example: 42 reason: type: string enum: - elasticsearch_not_enabled - no_results_from_search - no_assets_were_processed description: A reason code explaining why progress is unavailable. Present only when processed_assets_count is null. example: elasticsearch_not_enabled required: - status - start_time person_status: type: string description: The status of a person. enum: - active - hidden thumbnail: type: object description: The thumbnail image for a person. properties: asset_id: type: string description: The external ID of the asset used for the thumbnail. example: 2262b0b5eb88f1fd7724e29b0e57d730 bounding_box: type: array description: The bounding box coordinates [x, y, width, height] of the face in the asset. items: type: integer minItems: 4 maxItems: 4 example: - 10 - 20 - 100 - 150 url: type: string format: uri description: The secure URL of the thumbnail asset. example: https://res.cloudinary.com/demo/image/upload/v1234567890/sample.jpg resource_type: type: string description: The resource type of the asset. example: image type: type: string description: The kind/type of the asset. example: upload public_id: type: string description: The public ID of the asset. example: sample version: type: integer description: The version number of the asset. example: 1234567890 person_details: type: object description: Detailed information about a recognized person. properties: id: type: string description: The unique identifier of the person. example: a1b2c3d4e5f6 name: type: string description: The display name of the person, or null if not named. example: Jane Doe status: $ref: '#/components/schemas/person_status' example: active thumbnail: $ref: '#/components/schemas/thumbnail' created_at: type: string format: date-time description: The date and time when the person was first detected. example: '2025-01-15T10:30:00Z' updated_at: type: string format: date-time description: The date and time when the person was last updated. example: '2025-01-20T14:45:00Z' people_list_response: type: object properties: people: type: array description: A list of recognized person objects. items: $ref: '#/components/schemas/person_details' next_cursor: type: string description: The cursor to use for the next page of results. person_response: type: object properties: person: $ref: '#/components/schemas/person_details' update_person_request: type: object properties: name: type: string description: The display name for the person. Maximum 255 characters. maxLength: 255 example: Jane Doe status: $ref: '#/components/schemas/person_status' thumbnail_asset_id: type: string description: The external ID of an asset containing this person's face to use as the thumbnail. example: 2262b0b5eb88f1fd7724e29b0e57d730 update_person_response: type: object properties: person_id: type: string description: The unique identifier of the person. example: f10f893da5a1586dca6764b22514aa0d25e6b867baffc4fb43a2318a25d8e5b2 name: type: string description: The display name of the person. example: Jane Doe status: $ref: '#/components/schemas/person_status' people_inspection_group: type: object description: The items to inspect for a type and the actions to check against them. properties: items: type: object additionalProperties: true description: A map of caller-supplied cache keys to the person identifier to inspect. actions: type: object additionalProperties: true description: A map of action names to optional action context to inspect. required: - items - actions people_inspection_targets: type: object description: A map of inspectable types to the items and actions to inspect. properties: Person: $ref: '#/components/schemas/people_inspection_group' additionalProperties: true people_inspect_request: type: object description: The people and actions to inspect. properties: inspections: $ref: '#/components/schemas/people_inspection_targets' required: - inspections people_inspect_response: type: object description: The permission inspection results. properties: message: type: string description: A status message for the inspection request. example: ok inspections: type: object additionalProperties: true description: A map of inspected type to per-item, per-action permission results (true if permitted). required: - inspections GenerateImageRequest: type: object description: | Parameters for an image-generation request. Only `prompt` is required; all other fields fall back to documented defaults. required: - prompt properties: prompt: type: string minLength: 1 maxLength: 4000 description: The text description of the image to generate. examples: - A photorealistic sunset over a mountain lake, 8K detail model: $ref: "#/components/schemas/ModelSelection" image_size: $ref: "#/components/schemas/ImageSize" format: $ref: "#/components/schemas/ImageFormat" target: $ref: "#/components/schemas/Target" seed: $ref: "#/components/schemas/Seed" async: $ref: "#/components/schemas/Async" notification_url: $ref: "#/components/schemas/NotificationUrl" ImageFormat: type: string enum: - jpeg - png - webp description: | Desired output image format. Optional; defaults to `png` when omitted. Mapped to the closest format the chosen model supports — `webp` falls back to `png` on models that don't support it (e.g. FLUX.2 Pro), and the request is ignored entirely by models that don't expose a format option (e.g. Recraft). examples: - png Seed: type: - integer - "null" minimum: 0 description: | Seed for reproducible generation. Supported by most models. Silently ignored by models that don't support it. examples: - 42 Async: type: boolean default: false description: | Whether to perform the generation asynchronously. When true, the API returns immediately with a 202 and completes in the background. Once complete, a webhook notification is sent to the specified URL and/or to the URLs defined in the product environment's settings. NotificationUrl: type: string format: uri description: The webhook URL to notify when the generation is complete. Only relevant when `async` is set to true. examples: - https://path.to/webhook ImageToImageRequest: type: object description: | Parameters for an image-to-image (reference-guided) request. Both `prompt` (the edit instruction) and `reference_images` are required; all other fields fall back to the same defaults as `text_to_image`. required: - prompt - reference_images properties: prompt: type: string minLength: 1 maxLength: 4000 description: The text instruction describing the desired edit / output. examples: - Place the product from [1] on a marble kitchen counter, soft morning light reference_images: type: array minItems: 1 maxItems: 4 description: | Reference images that steer the generation, in order (1-indexed; the prompt may address them positionally as `[1]`, `[2]`, …). Each entry is either a managed asset (by `asset_id`) or an external `url`. The platform accepts up to 4; a specific model may accept fewer (e.g. Recraft accepts 1) — exceeding the selected model's capacity returns 400. items: $ref: "#/components/schemas/ReferenceImage" model: $ref: "#/components/schemas/ModelSelection" image_size: $ref: "#/components/schemas/ImageSize" format: $ref: "#/components/schemas/ImageFormat" target: $ref: "#/components/schemas/Target" seed: $ref: "#/components/schemas/Seed" async: $ref: "#/components/schemas/Async" notification_url: $ref: "#/components/schemas/NotificationUrl" ReferenceImage: description: | A single reference image, in **one** of two mutually exclusive forms determined by `source_type`: * `ManagedAssetReference`: a managed asset in the caller's product environment, by `asset_id` (read permission is checked). * `UrlReference`: an external image by HTTPS `url`. oneOf: - $ref: "#/components/schemas/ManagedAssetReference" - $ref: "#/components/schemas/UrlReference" discriminator: propertyName: source_type mapping: managed_asset: "#/components/schemas/ManagedAssetReference" url: "#/components/schemas/UrlReference" ManagedAssetReference: type: object title: ManagedAssetReference description: | A reference to a managed asset in the caller's product environment, by asset ID. additionalProperties: false required: - source_type - asset_id properties: source_type: type: string description: Discriminator identifying this as a managed-asset reference. enum: - managed_asset asset_id: type: string description: Cloudinary asset ID of the reference image. READ permission is enforced. examples: - 0d6f8e1c2b3a4d5e6f7a8b9c0d1e2f3a UrlReference: type: object title: UrlReference description: A reference to an external image by HTTPS URL. additionalProperties: false required: - source_type - url properties: source_type: type: string description: Discriminator identifying this as an external-URL reference. enum: - url url: type: string format: uri description: HTTPS URL of the reference image. examples: - https://example.com/product.png ModelSelection: description: | Selects the model, in one of two mutually exclusive forms (omit to use the global default): * `ModelByFamily`: `family` (+ optional `tier`); the stable-over-time selector. * `ModelById`: an explicit `id`, pinning one exact model. oneOf: - $ref: "#/components/schemas/ModelByFamily" - $ref: "#/components/schemas/ModelById" ModelByFamily: type: object title: ModelByFamily description: | Select a model by family and quality tier; a missing `tier` defaults to `standard`. additionalProperties: false required: - family properties: family: type: string enum: - flux - recraft - gpt-image - nano-banana - ideogram description: > Model family: * `flux`: Photorealistic images (FLUX.2 Klein 9B / FLUX.2 Pro). * `recraft`: Vector and illustration (Recraft V3 / Recraft V4). * `gpt-image`: Campaign and marketing images (GPT Image 1 Mini / GPT Image 2). * `nano-banana`: General purpose generation (Nano Banana 1 / Nano Banana 2). * `ideogram`: Realism, text rendering, and artistic generation (Ideogram V4). examples: - flux tier: type: string enum: - standard - premium description: Quality tier within the family. Defaults to `standard` when omitted. examples: - premium ModelById: type: object title: ModelById description: Pin an exact model by ID, bypassing family/tier. additionalProperties: false required: - id properties: id: type: string enum: - nano-banana-1 - nano-banana-2 - flux-2-klein-9b - flux-2-pro - recraft-v3 - recraft-v4 - gpt-image-1-mini - gpt-image-2 - ideogram-v4-base - ideogram-v4-turbo - nano-banana-1-edit - nano-banana-2-edit - flux-2-klein-9b-edit - flux-2-pro-edit - recraft-v3-edit - gpt-image-1-mini-edit - gpt-image-2-edit description: | Exact model identifier; overrides family/tier when provided. The `-edit` models accept reference images and are selectable only on `image_to_image`; the others only on `text_to_image`. examples: - flux-2-pro ImageSize: description: | Desired output size, given in **one** of two mutually exclusive forms: * `DimensionsImageSize`: `width` and `height` in pixels, for precise control. * `DeclarativeImageSize`: `aspect_ratio` (and an optional `resolution` tier), resolved server-side to the closest size the chosen model supports. This is the portable form: most providers natively accept an aspect ratio plus a resolution tier rather than raw pixels. Omit `image_size` entirely to use the model's default size. oneOf: - $ref: "#/components/schemas/DimensionsImageSize" - $ref: "#/components/schemas/DeclarativeImageSize" DimensionsImageSize: type: object title: DimensionsImageSize description: Exact output dimensions in pixels. Both `width` and `height` are required together. additionalProperties: false required: - width - height properties: width: type: integer minimum: 64 maximum: 4096 description: Output width in pixels. examples: - 1280 height: type: integer minimum: 64 maximum: 4096 description: Output height in pixels. examples: - 720 DeclarativeImageSize: type: object title: DeclarativeImageSize description: | Declarative output size — an aspect ratio plus an optional resolution tier, resolved server-side to the nearest size the model supports. additionalProperties: false required: - aspect_ratio properties: aspect_ratio: type: string description: | Output aspect ratio, width-to-height. Limited to the core ratios every model supports natively. enum: - 1:1 - 16:9 - 9:16 - 4:3 - 3:4 examples: - 16:9 resolution: type: string description: | Output resolution tier, measured on the longest edge. Defaults to `1K` when omitted. * `0.5K`: ~512 px * `1K`: ~1024 px * `2K`: ~2048 px * `4K`: ~4096 px enum: - 0.5K - 1K - 2K - 4K examples: - 2K Target: description: | Where to store the generated output, determined by `target_type`. Optional; defaults to a `managed_asset` target when omitted. oneOf: - $ref: "#/components/schemas/ManagedAssetTarget" - $ref: "#/components/schemas/TemporaryTarget" discriminator: propertyName: target_type mapping: managed_asset: "#/components/schemas/ManagedAssetTarget" temporary: "#/components/schemas/TemporaryTarget" ManagedAssetTarget: type: object description: Store the output as a permanent managed asset in your Cloudinary product environment (the default). additionalProperties: false required: - target_type properties: target_type: type: string description: Discriminator identifying this as a managed-asset target. enum: - managed_asset public_id: type: string description: Public ID to store the asset under. Auto-assigned when omitted. examples: - my-public-id upload_preset: type: string description: Upload preset to apply. Uses the product environment's default when omitted. examples: - some-preset TemporaryTarget: type: object description: Store the output as a short-lived asset on the upload service. additionalProperties: false required: - target_type properties: target_type: type: string description: Discriminator identifying this as a temporary target. enum: - temporary Storage: description: | Where a generated asset is stored — mirrors the request `target`, determined by `storage_type`. `secure_url` is always present. oneOf: - $ref: "#/components/schemas/ManagedAssetStorage" - $ref: "#/components/schemas/TemporaryStorage" discriminator: propertyName: storage_type mapping: managed_asset: "#/components/schemas/ManagedAssetStorage" temporary: "#/components/schemas/TemporaryStorage" ManagedAssetStorage: type: object description: | A generated asset stored as a permanent managed asset. Reference it in other Cloudinary APIs by `asset_id`, or by the `resource_type` / `type` / `public_id` triple. additionalProperties: false required: - storage_type - secure_url - public_id - resource_type - type - version properties: storage_type: type: string description: Discriminator identifying this as managed-asset storage. enum: - managed_asset secure_url: type: string format: uri description: The URL to fetch the generated asset. examples: - https://res.cloudinary.com/demo/image/upload/v1/my-public-id.png asset_id: type: string description: Cloudinary asset ID — a stable, globally-unique reference to the asset. examples: - 0d6f8e1c2b3a4d5e6f7a8b9c0d1e2f3a public_id: type: string description: Public ID of the stored asset. examples: - my-public-id resource_type: type: string description: Cloudinary resource type of the stored asset. enum: - image - video - raw examples: - image type: type: string description: Cloudinary delivery type of the stored asset (e.g. `upload`, `private`, `authenticated`). examples: - upload version: type: integer format: int64 description: Version of the stored asset. TemporaryStorage: type: object description: A generated asset stored as a short-lived asset on the upload service. additionalProperties: false required: - storage_type - secure_url - expires_at properties: storage_type: type: string description: Discriminator identifying this as temporary storage. enum: - temporary secure_url: type: string format: uri description: The URL to fetch the generated asset. examples: - https://upload-global.cloudinary.com/v2/demo/uploads/a78a2e043c2da0b50a98961d60a8b05a/stream expires_at: type: string format: date-time description: Time in UTC when secure_url stops being valid. examples: - 2026-06-25T12:50:26Z GenerateImageResult: type: object description: Successful synchronous image-generation response. required: - request_id properties: data: $ref: "#/components/schemas/GeneratedAssets" limits: $ref: "#/components/schemas/Limits" request_id: type: string description: Unique identifier for this request, for correlation and support. examples: - 17c3b70c5096df0e77e838323abb7029 GeneratedAssets: type: object description: Wrapper holding the array of generated assets. required: - assets properties: assets: type: array description: The generated assets. Currently a single asset is returned. items: $ref: "#/components/schemas/GeneratedAsset" GeneratedAsset: type: object description: | A generated asset: where it is stored (`storage`) plus its media metadata. The media fields are populated once the task completes; an in-progress asset carries only `storage`. required: - storage properties: storage: $ref: "#/components/schemas/Storage" format: type: string enum: - png - jpeg - webp description: The image format of the stored asset. examples: - png width: type: integer description: The width of the generated image in pixels; zero if the model doesn't provide dimensions. examples: - 1024 height: type: integer description: The height of the generated image in pixels; zero if the model doesn't provide dimensions. examples: - 768 bytes: type: integer format: int64 description: The size of the generated image in bytes. examples: - 2048576 model: $ref: "#/components/schemas/Model" seed: type: - integer - "null" description: > The seed used for generation. Echoes input or returns the model-generated seed. Null when the model doesn't support seeds. examples: - 42 created_at: type: string format: date-time description: The timestamp when the image was generated. examples: - 2026-04-21T14:30:00Z Model: type: object description: Identifies the model that produced a generation result. required: - family - tier - id properties: family: type: string description: The model family used. examples: - flux tier: type: string description: The quality tier used. examples: - premium id: type: string description: The exact model identifier used for generation. examples: - flux-2-pro TaskStatus: type: string description: | The status of an async generation task. * `pending`: accepted and queued, not yet started. * `processing`: generation is in progress. * `completed`: generation finished; `result` is populated. * `failed`: generation did not complete successfully. enum: - pending - processing - completed - failed Task: type: object description: | An async generation task. Returned when a generation is accepted (202) and from GET /tasks/{task_id} as it progresses. The `result` is filled in once `status` is `completed`. required: - task_id - status properties: task_id: type: string description: Identifier for the async generation task. Use it to poll `GET /generate/{cloud_name}/tasks/{task_id}`. examples: - 053f4bde4b933c8ecef23724ecde63b667c1ea21816d56c161c7ec1df6297da4b43109625650e9edf0f42152cc4cc32c8ad57824ac75ba8e05020f827c415559ac1248076a2d72c0a73af0479cca77eb status: $ref: "#/components/schemas/TaskStatus" result: type: - object - "null" allOf: - $ref: "#/components/schemas/GeneratedAssets" description: | The generated assets. Populated once `status` is `completed`. limits: $ref: "#/components/schemas/Limits" TaskResponse: type: object description: | Envelope for an async generation task — returned by the accepted (202) response and by GET /tasks/{task_id}. required: - request_id properties: data: $ref: "#/components/schemas/Task" request_id: type: string description: Unique identifier for this request, for correlation and support. examples: - 17c3b70c5096df0e77e838323abb7029 examples: - data: task_id: 053f4bde4b933c8ecef23724ecde63b667c1ea21816d56c161c7ec1df6297da4b43109625650e9edf0f42152cc4cc32c8ad57824ac75ba8e05020f827c415559ac1248076a2d72c0a73af0479cca77eb status: pending request_id: 17c3b70c5096df0e77e838323abb7029 ErrorResponse: type: object description: Wrapper for error responses; includes the error object and a request_id for correlation. required: - error - request_id properties: error: $ref: "#/components/schemas/Error" request_id: type: string description: Unique identifier for this request, for correlation and support. examples: - 17c3b70c5096df0e77e838323abb7029 Error: type: object description: Details of an error, including a coarse category for retry logic, a stable error code, and a human-readable message. properties: category: $ref: "#/components/schemas/ErrorCategory" code: type: string description: Stable, machine-readable error code for programmatic handling. examples: - MG_00001 message: type: string description: Human-readable description of what went wrong. examples: - missing parameters details: type: object description: Additional structured context about the error, when available. examples: - parameters: - prompt examples: - category: user_error code: MG_00001 message: missing parameters details: parameters: - param1 - param2 ErrorCategory: type: string description: > Coarse classification of an error, primarily used by clients to decide whether to retry. * `user_error`: the request was invalid; do not retry without changes. * `auth_error`: authentication or authorization failed. * `server_error`: an unexpected server-side error; retrying may succeed. * `rate_limit_error`: quota or rate limit exceeded; retry later. enum: - user_error - auth_error - server_error - rate_limit_error Limits: type: object description: Rate limit information for the account's add-on quotas. properties: addons_quota: type: array description: Per-add-on quota usage for this account. items: $ref: "#/components/schemas/AddonQuota" examples: - - type: image_generation used_by_request: 1 remaining: 48 limit: 50 AddonQuota: type: object description: Quota usage for a single add-on. required: - type - used_by_request - remaining - limit properties: type: $ref: "#/components/schemas/Feature" used_by_request: type: - integer - "null" description: Number of generations consumed by this request. remaining: type: - integer - "null" description: Generations remaining in the current period. limit: type: - integer - "null" description: Maximum generations allowed per period. Feature: type: string description: The add-on a quota applies to. enum: - image_generation requestBodies: upload_request_body: description: The file to upload and associated parameters. required: true content: multipart/form-data: schema: $ref: '#/components/schemas/binary_upload_request' application/json: schema: $ref: '#/components/schemas/upload_request' examples: RestoreResourcesFullRestoreExample: summary: Successful restore of multiple assets value: 2262b0b5eb88f1fd7724e29b0e57d730: asset_id: 2262b0b5eb88f1fd7724e29b0e57d730 public_id: sample format: jpg version: 1750590339 version_id: da744ebcc95851cbbcecaef52e2246f5 resource_type: image type: upload created_at: '2017-08-04T12:33:24Z' bytes: 120253 width: 864 height: 576 tags: [] placeholder: false asset_folder: '' d23c0526e6feca2c343e40c2fce5231a: asset_id: d23c0526e6feca2c343e40c2fce5231a public_id: coffee format: jpg version: 1750590339 version_id: da744ebcc95851cbbcecaef52e2246f5 resource_type: image type: upload created_at: '2017-08-04T12:35:25Z' bytes: 85641 width: 640 height: 480 tags: [] placeholder: false asset_folder: '' RestoreResourcesPartialRestoreExample: summary: Mixed results with successful and failed restores value: 2262b0b5eb88f1fd7724e29b0e57d730: asset_id: 2262b0b5eb88f1fd7724e29b0e57d730 public_id: sample format: jpg version: 1750590339 version_id: da744ebcc95851cbbcecaef52e2246f5 resource_type: image type: upload created_at: '2017-08-04T12:33:24Z' bytes: 120253 width: 864 height: 576 tags: [] placeholder: false asset_folder: '' d23c0526e6feca2c343e40c2fce5231a: error: no_backup invalid_asset_id: error: failed RestoreResourcesFailedRestoreExample: summary: Failed to restore all assets value: d23c0526e6feca2c343e40c2fce5231a: error: no_backup f45e7890abc123def456: error: unauthorized ListResourcesResponseExample: summary: List resources response example value: resources: - asset_id: 03a5b92135161439031d3834c04bc31b public_id: sample format: jpg version: 1719304854 resource_type: image type: upload created_at: '2021-06-25T08:40:54+00:00' bytes: 120253 width: 864 height: 576 asset_folder: '' display_name: sample url: http://res.cloudinary.com/demo/image/upload/v1719304854/sample.jpg secure_url: https://res.cloudinary.com/demo/image/upload/v1719304854/sample.jpg next_cursor: e4c19d14efae368a0b1b856e2b7c9d625bd9be6c total_count: 1 DeleteResourcesResponseExample: summary: Delete resources response example value: deleted: image1: deleted image2: deleted partial: false GetResourceResponseExample: summary: Get resource by asset ID response example value: asset_id: 03a5b92135161439031d3834c04bc31b public_id: sample format: jpg version: 1719304854 resource_type: image type: upload created_at: '2021-06-25T08:40:54Z' bytes: 120253 width: 864 height: 576 asset_folder: '' display_name: sample url: http://res.cloudinary.com/cld-docs/image/upload/v1719304854/sample.jpg secure_url: https://res.cloudinary.com/cld-docs/image/upload/v1719304854/sample.jpg tags: - flower - plant - nature context: custom: alt: sample flower caption: beautiful flower metadata: approval_status_0: status_new categories_0: - cat_mens_clothes - cat_shirts - qzaihnfnasrzba0qrdpr owner_0: Adam Adams product_id_0: 12345 publish_date_0: '2022-02-17' last_updated: access_control_updated_at: '2022-10-13T03:49:21Z' context_updated_at: '2022-11-10T06:05:21Z' metadata_updated_at: '2022-10-14T06:40:13Z' public_id_updated_at: '2022-12-11T05:41:21Z' tags_updated_at: '2022-12-14T06:09:21Z' updated_at: '2022-12-14T06:09:21Z' next_cursor: 041a39fc10971b9eabd4993470f6bfaf derived: - transformation: c_fill,w_100,h_100 format: jpg bytes: 7112 id: 8267a869b62a93a59248f35d7f124c1f url: http://res.cloudinary.com/cld-docs/image/upload/c_fill,w_100,h_100/v1312461204/sample.jpg secure_url: https://res.cloudinary.com/cld-docs/image/upload/c_fill,w_100,h_100/v1312461204/sample.jpg - transformation: w_230,h_168,c_fit format: jpg bytes: 19173 id: 383e22a57167445552a3cdc16f0a0c85 url: http://res.cloudinary.com/cld-docs/image/upload/w_230,h_168,c_fit/v1312461204/sample.jpg secure_url: https://res.cloudinary.com/cld-docs/image/upload/w_230,h_168,c_fit/v1312461204/sample.jpg etag: 619dfd2901577eb4259f91a2c0e43dac faces: - - 98 - 74 - 61 - 83 - - 140 - 130 - 52 - 71 illustration_score: 0 semi_transparent: false grayscale: false colors: - - '#162E02' - 6.7 - - '#385B0C' - 6.3 - - '#F3285C' - 5 - - '#B3CB6E' - 5 - - '#688F1C' - 4.4 - - '#324D07' - 4.4 - - '#8EAA34' - 4.3 - - '#4F6D0D' - 4.2 - - '#789446' - 4.1 - - '#DF1327' - 3.9 - - '#A10B12' - 3.7 - - '#273804' - 3.4 - - '#0D1802' - 3.4 - - '#D5E191' - 3.2 - - '#646E20' - 3.1 - - '#94AF4D' - 2.9 - - '#FB54A9' - 2.8 - - '#48570B' - 2.7 - - '#ACC655' - 2.7 - - '#FCA2D9' - 2.7 - - '#63110A' - 2.6 - - '#E9B327' - 2.2 - - '#6D644D' - 2.1 - - '#6D8D12' - 2 - - '#8F9F27' - 1.9 - - '#C3573E' - 1.8 - - '#CFD76E' - 1.6 - - '#A0B058' - 1.6 - - '#FCD0E9' - 1.6 - - '#728F2D' - 1.4 - - '#F958A1' - 1.4 - - '#D1B694' - 1 predominant: google: - - yellow - 52.9 - - pink - 13.5 - - red - 12 - - black - 10.1 - - green - 6.3 versions: - version_id: d214063097a43d1d1293db61a397f60f version: '1312461204' format: jpg size: 109669 time: '2021-08-04T12:33:24+00:00' restorable: false UpdateResourceResponseExample: summary: Update resource response example value: asset_id: bc71d3cedb739ed931be3706e94c413a public_id: qdi8r768kj5tticu8keh format: jpg version: 1747134921 resource_type: image type: upload created_at: '2025-05-13T11:15:21Z' bytes: 206960 width: 400 height: 300 asset_folder: '' display_name: qdi8r768kj5tticu8keh url: http://res.cloudinary.com/cloud-name/image/upload/v1747134921/qdi8r768kj5tticu8keh.jpg secure_url: https://res.cloudinary.com/cloud-name/image/upload/v1747134921/qdi8r768kj5tticu8keh.jpg moderation_kind: manual moderation_status: approved moderation: - kind: manual status: approved updated_at: '2025-05-13T11:15:22Z' GenerateImageBasicExample: summary: Basic image generation description: Minimal request — only a prompt; falls back to the default model. value: prompt: A man with a hat GenerateImageDeclarativeSizeExample: summary: Declarative size (aspect ratio + resolution) description: | Portable size selection — the service resolves aspect_ratio + resolution to the nearest dimensions the chosen model supports. value: prompt: A photorealistic sunset over a mountain lake, 8K detail model: family: flux tier: premium image_size: aspect_ratio: 16:9 resolution: 2K target: target_type: managed_asset public_id: my-public-id upload_preset: some-preset seed: 42 GenerateImageDimensionsSizeExample: summary: Dimensions size (explicit pixels) description: Pixel-precise size selection via width + height. value: prompt: A photorealistic sunset over a mountain lake, 8K detail model: id: flux-2-pro image_size: width: 1280 height: 720 target: target_type: temporary seed: 42 GenerateImageAsyncExample: summary: Async image generation description: | Request the generation be performed asynchronously. The API responds 202 with a task_id; the caller polls /tasks/{task_id} or waits for the webhook. value: prompt: A futuristic city skyline at night model: family: gpt-image tier: premium async: true notification_url: https://path.to/webhook GenerateImageSuccessExample: summary: Successful synchronous generation description: The 200 response body returned for a completed sync generation. value: data: assets: - storage: storage_type: temporary secure_url: https://upload-global.cloudinary.com/v2/demo/uploads/a78a2e043c2da0b50a98961d60a8b05a/image.png expires_at: 2026-06-25T12:50:26Z format: png width: 1024 height: 768 bytes: 2048576 model: family: flux tier: premium id: flux-2-pro seed: 42 created_at: 2026-04-21T14:30:00Z limits: addons_quota: - type: image_generation used_by_request: 1 remaining: 48 limit: 50 request_id: 17c3b70c5096df0e77e838323abb7029 GenerateImageManagedAssetSuccessExample: summary: Successful synchronous generation (managed asset target) description: The 200 response body when the request targeted a managed asset. value: data: assets: - storage: storage_type: managed_asset secure_url: https://res.cloudinary.com/demo/image/upload/v1750000000/my-public-id.png asset_id: 0d6f8e1c2b3a4d5e6f7a8b9c0d1e2f3a public_id: my-public-id resource_type: image type: upload version: 1750000000 format: png width: 1024 height: 768 bytes: 2048576 model: family: flux tier: premium id: flux-2-pro seed: 42 created_at: 2026-04-21T14:30:00Z limits: addons_quota: - type: image_generation used_by_request: 1 remaining: 48 limit: 50 request_id: 17c3b70c5096df0e77e838323abb7029 GenerateTaskCompletedExample: summary: Completed task (GET /tasks/{task_id}) description: A completed async task — the asset is fully populated (storage + media). value: data: task_id: 053f4bde4b933c8ecef23724ecde63b667c1ea21816d56c161c7ec1df6297da4b43109625650e9edf0f42152cc4cc32c8ad57824ac75ba8e05020f827c415559ac1248076a2d72c0a73af0479cca77eb status: completed result: assets: - storage: storage_type: temporary secure_url: https://upload-global.cloudinary.com/v2/demo/uploads/a78a2e043c2da0b50a98961d60a8b05a/stream expires_at: 2026-06-25T12:50:26Z format: png width: 1024 height: 768 bytes: 2048576 model: family: flux tier: premium id: flux-2-pro seed: 42 created_at: 2026-04-21T14:30:00Z request_id: 17c3b70c5096df0e77e838323abb7029 RateLimitedExample: summary: 429 rate-limited response description: Returned when the account has exhausted its generation quota for the period. value: error: category: rate_limit_error code: MG_00429 message: Daily generation limit exceeded. Limit resets at 2026-04-22T00:00:00Z limits: addons_quota: - type: image_generation used_by_request: 1 remaining: 0 limit: 50 request_id: 17c3b70c5096df0e77e838323abb7029 responses: GenerationAcceptedResponse: description: Generation accepted. content: application/json: schema: $ref: "#/components/schemas/TaskResponse" BadRequestResponse: description: Bad request. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" UnauthorizedResponse: description: Unauthorized. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" NotFoundResponse: description: Not found. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" RateLimitedResponse: description: Rate limited. content: application/json: schema: type: object title: RateLimitedResponse required: - error - request_id properties: error: $ref: "#/components/schemas/Error" limits: $ref: "#/components/schemas/Limits" request_id: type: string description: Unique identifier for this request, for correlation and support. examples: - 17c3b70c5096df0e77e838323abb7029 examples: RateLimited: $ref: "#/components/examples/RateLimitedExample" InternalServerErrorResponse: description: Internal server error. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" ModelUnavailableResponse: description: Model unavailable. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" ForbiddenResponse: description: Forbidden. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" UnprocessableEntityResponse: description: Unprocessable entity. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" x-speakeasy-globals: parameters: []