Cloudimage Image Transformation (URL API)

URL-based, on-the-fly image transformation. Requests carry the origin image as a path on the {token}.cloudimg.io host and apply operations through query parameters - resize (w, h, func=crop|fit|cropfit|bound|boundmin|cover), gravity, crop coordinates, flip, rotate, trim, and rounded corners - with no backend changes required.

OpenAPI Specification

cloudimage-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cloudimage API
  description: >-
    Cloudimage (by Scaleflex) is a URL-based image and video transformation,
    optimization, and CDN service. Image and video operations are expressed
    entirely as query parameters on a GET request to the
    https://{token}.cloudimg.io host, where the origin media URL is carried as
    the request path. Operations include resizing, cropping, format conversion,
    compression, filters, and watermarks. A companion Filerobot DAM REST API
    (https://api.filerobot.com/{token}/v4) provides upload and asset management.
    This document models the documented public surface; it does not enumerate
    every one of the 50+ transformation parameters.
  termsOfService: https://www.cloudimage.io/en/terms-and-conditions
  contact:
    name: Cloudimage / Scaleflex Support
    url: https://www.cloudimage.io/
  version: '7'
servers:
  - url: https://{token}.cloudimg.io
    description: Cloudimage URL-based transformation and CDN host. {token} is the account identifier.
    variables:
      token:
        default: demo
        description: Your Cloudimage account token (subdomain).
  - url: https://api.filerobot.com/{token}/v4
    description: Filerobot DAM upload and asset-management REST API.
    variables:
      token:
        default: demo
        description: Your Filerobot/Cloudimage account token.
tags:
  - name: Image
    description: URL-based image transformation operations.
  - name: Video
    description: URL-based video transformation and transcoding operations.
  - name: Filerobot DAM
    description: Upload and asset-management REST endpoints.
paths:
  /{origin}:
    get:
      operationId: transformImage
      tags:
        - Image
      summary: Transform and deliver an image
      description: >-
        Requests the origin image and applies transformation operations supplied
        as query parameters. The origin image URL is carried as the request path
        (e.g. https://{token}.cloudimg.io/https://samples.scaleflex.com/flat.jpg).
        When the origin contains a query string or reserved characters,
        percent-encode it and add ci_url_encoded=1.
      parameters:
        - name: origin
          in: path
          required: true
          description: The origin (source) image URL appended as the request path.
          schema:
            type: string
          example: https://samples.scaleflex.com/flat.jpg
        - name: w
          in: query
          description: Target width in pixels (alias of width).
          schema:
            type: integer
          example: 400
        - name: h
          in: query
          description: Target height in pixels (alias of height).
          schema:
            type: integer
          example: 300
        - name: func
          in: query
          description: >-
            Resize function applied when both width and height are provided.
            crop is the default.
          schema:
            type: string
            enum: [crop, fit, cropfit, bound, boundmin, cover]
            default: crop
        - name: gravity
          in: query
          description: >-
            Focal point used when cropping. Accepts compass values
            ([north|south][east|west]), center, auto, smart, face, or X,Y coordinates.
          schema:
            type: string
          example: smart
        - name: org_if_sml
          in: query
          description: When set to 1, prevents upscaling beyond the original dimensions.
          schema:
            type: integer
            enum: [0, 1]
        - name: tl_px
          in: query
          description: Top-left corner X,Y coordinates for a positionable crop.
          schema:
            type: string
          example: 100,50
        - name: br_px
          in: query
          description: Bottom-right corner X,Y coordinates for a positionable crop.
          schema:
            type: string
          example: 400,300
        - name: flip
          in: query
          description: Mirror the image horizontally (h), vertically (v), or both (hv).
          schema:
            type: string
            enum: [h, v, hv]
        - name: r
          in: query
          description: Rotate the image counterclockwise by the given number of degrees.
          schema:
            type: integer
        - name: trim
          in: query
          description: Remove solid-color borders; value sets aggressiveness.
          schema:
            type: integer
        - name: radius
          in: query
          description: Round image corners by the given radius (optionally with a fill color).
          schema:
            type: string
        - name: force_format
          in: query
          description: Force the output format (alias of format / f).
          schema:
            type: string
            enum: [auto, webp, avif, jpeg, png, gif]
            default: auto
        - name: q
          in: query
          description: Output compression quality (1-100).
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 80
        - name: blur
          in: query
          description: Apply a Gaussian blur of the given strength.
          schema:
            type: integer
        - name: sharpen
          in: query
          description: Apply sharpening of the given strength.
          schema:
            type: integer
        - name: contrast
          in: query
          description: Adjust image contrast.
          schema:
            type: integer
        - name: saturate
          in: query
          description: Adjust image saturation.
          schema:
            type: integer
        - name: greyscale
          in: query
          description: Convert the image to greyscale when set to 1.
          schema:
            type: integer
            enum: [0, 1]
        - name: pixellate
          in: query
          description: Apply a pixelation effect of the given strength.
          schema:
            type: integer
        - name: bg_remove
          in: query
          description: Remove the background using AI when set to 1 (consumes a visual operation).
          schema:
            type: integer
            enum: [0, 1]
        - name: wat
          in: query
          description: Enable a watermark overlay when set to 1.
          schema:
            type: integer
            enum: [0, 1]
        - name: wat_url
          in: query
          description: URL of the image to use as a watermark (defines a dynamic watermark).
          schema:
            type: string
        - name: wat_text
          in: query
          description: Text content for a text watermark.
          schema:
            type: string
        - name: wat_gravity
          in: query
          description: Watermark position (e.g. northeast, center).
          schema:
            type: string
        - name: wat_scale
          in: query
          description: Watermark scale relative to the image.
          schema:
            type: string
        - name: wat_pad
          in: query
          description: Watermark padding from the edge.
          schema:
            type: string
        - name: wat_opacity
          in: query
          description: Watermark opacity (0-100).
          schema:
            type: integer
        - name: ci_url_encoded
          in: query
          description: Set to 1 when the origin URL is percent-encoded in the path.
          schema:
            type: integer
            enum: [0, 1]
      responses:
        '200':
          description: The transformed image binary, delivered via CDN.
          content:
            image/webp:
              schema:
                type: string
                format: binary
            image/avif:
              schema:
                type: string
                format: binary
            image/jpeg:
              schema:
                type: string
                format: binary
        '404':
          description: Origin image not found or unreachable.
  /{origin}.mp4:
    get:
      operationId: transformVideo
      tags:
        - Video
      summary: Transform and deliver a video
      description: >-
        On-the-fly video processing and transcoding using the same URL model as
        images. Input is limited to 500 MB, up to 4K, and the first 60 seconds.
      parameters:
        - name: origin
          in: path
          required: true
          description: The origin (source) video URL appended as the request path.
          schema:
            type: string
          example: https://samples.scaleflex.com/sample.mp4
        - name: w
          in: query
          description: Target video width in pixels (greater than 100).
          schema:
            type: integer
        - name: h
          in: query
          description: Target video height in pixels (greater than 100).
          schema:
            type: integer
        - name: func
          in: query
          description: Resize function applied when both width and height are provided.
          schema:
            type: string
            enum: [crop, fit, cropfit, bound, boundmin, cover]
        - name: bg_color
          in: query
          description: Background (padding) color used with func=fit (hex code or color name).
          schema:
            type: string
        - name: bg_img_fit
          in: query
          description: Use a blurred version of the video for the background/padding when set to 1.
          schema:
            type: integer
            enum: [0, 1]
        - name: format
          in: query
          description: Output video format.
          schema:
            type: string
            enum: [auto, mp4, webm, h264.mp4, h265.mp4, vp9.webm]
            default: auto
        - name: bitrate
          in: query
          description: Compression bitrate (10k-20000k or 1m-20m).
          schema:
            type: string
      responses:
        '200':
          description: The transcoded video binary, delivered via CDN.
          content:
            video/mp4:
              schema:
                type: string
                format: binary
            video/webm:
              schema:
                type: string
                format: binary
  /upload:
    post:
      operationId: uploadFile
      tags:
        - Filerobot DAM
      summary: Upload a file to the DAM
      description: >-
        Uploads one or more files into the Filerobot DAM via multipart/form-data.
        Served from the Filerobot host https://api.filerobot.com/{token}/v4.
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      parameters:
        - name: folder
          in: query
          description: Destination folder path within the DAM.
          schema:
            type: string
          example: /folder_test
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '200':
          description: File uploaded; metadata for the stored asset is returned.
      security:
        - filerobotKey: []
  /files:
    get:
      operationId: listFiles
      tags:
        - Filerobot DAM
      summary: List and search files
      description: Lists or searches files stored in the DAM.
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      responses:
        '200':
          description: A list of files matching the query.
      security:
        - filerobotKey: []
    put:
      operationId: streamUploadFile
      tags:
        - Filerobot DAM
      summary: Stream-upload a file
      description: >-
        Streams the request body into the storage container; useful for files
        larger than 500 MB. Sends application/octet-stream.
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: File stored; asset metadata returned.
      security:
        - filerobotKey: []
  /files/{uuid}:
    get:
      operationId: getFile
      tags:
        - Filerobot DAM
      summary: Get file details
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File metadata.
      security:
        - filerobotKey: []
    delete:
      operationId: deleteFile
      tags:
        - Filerobot DAM
      summary: Delete a file
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      parameters:
        - name: uuid
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: File deleted.
      security:
        - filerobotKey: []
  /folders:
    get:
      operationId: listFolders
      tags:
        - Filerobot DAM
      summary: List and search folders
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      responses:
        '200':
          description: A list of folders.
      security:
        - filerobotKey: []
    post:
      operationId: createFolder
      tags:
        - Filerobot DAM
      summary: Create a folder
      servers:
        - url: https://api.filerobot.com/{token}/v4
          variables:
            token:
              default: demo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                parent:
                  type: string
      responses:
        '200':
          description: Folder created.
      security:
        - filerobotKey: []
components:
  securitySchemes:
    filerobotKey:
      type: apiKey
      in: header
      name: X-Filerobot-Key
      description: Filerobot DAM API key.