API reference

Browse reviewed project, image, PDF, code, artifact and usage operations. Download the curated OpenAPI contract for developer tooling.

On this page

Contract and scope

Download developer OpenAPI JSON. This is a curated development snapshot: 23 paths covering project/key management, media and usage. Operations and their referenced schemas are copied from the reviewed backend snapshot. The server URL is a placeholder; replace it with your deployment’s API origin.

Project/key administration and usage routes require customer Bearer authentication; media routes accept project keys or customer Bearer as shown per operation. SDKs cover only context and core image/PDF/code operations.

Use the resource guides for workflow examples and behavioral constraints that OpenAPI cannot fully express.

Projects, keys and context

GET /v1/api-key/context

Authentication: X-API-Key. Choose one supported credential.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ApiKeyContextDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

POST /v1/projects

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Request body (required)

Documented responses

  • 201
    • application/json: object
      201 JSON response structure
      201 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ProjectResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
page (query)ObjectOptional. Default: 1. Min: 1.
limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.
q (query)stringOptional. Min length: 1. Max length: 100. Case-insensitive substring match against project name or slug (1–100 chars).

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectResponseDto"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              },
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              },
              "pages": {
                "type": "integer"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{id}

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ProjectResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

PATCH /v1/projects/{id}

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
id (path)stringRequired.

Request body (required)

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ProjectResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

DELETE /v1/projects/{id}

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/MessageDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

POST /v1/projects/{projectId}/api-keys

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.

Request body (required)

Documented responses

  • 201
    • application/json: object
      201 JSON response structure
      201 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/CreatedApiKeyResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/api-keys

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
page (query)ObjectOptional. Default: 1. Min: 1.
limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApiKeyResponseDto"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              },
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              },
              "pages": {
                "type": "integer"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

DELETE /v1/projects/{projectId}/api-keys/{id}

Authentication: Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/MessageDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

Images and transformations

POST /v1/projects/{projectId}/images

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
X-Upload-Length (header)stringRequired. Exact encoded file bytes, excluding multipart overhead. Must match the received file.

Request body (required)

  • multipart/form-data: object
    Multipart body schema
    {
      "type": "object",
      "required": [
        "file"
      ],
      "additionalProperties": false,
      "properties": {
        "file": {
          "type": "string",
          "format": "binary"
        }
      }
    }

Documented responses

  • 201
    • application/json: object
      201 JSON response structure
      201 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ImageResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/images

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
page (query)ObjectOptional. Default: 1. Min: 1.
limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.
q (query)stringOptional. Min length: 1. Max length: 100. Case-insensitive filename prefix.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ImageResponseDto"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              },
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              },
              "pages": {
                "type": "integer"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/images/{id}

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/ImageResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

DELETE /v1/projects/{projectId}/images/{id}

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/MessageDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/images/{id}/content

Download private original bytes; no rendering or transformations

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200 Original attachment. Full object bandwidth is charged on successful admission, including client-aborted downloads.
    • application/octet-stream: string / binary
  • 400 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 401 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 403 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 404 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 409 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/transforms

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
page (query)ObjectOptional. Default: 1. Min: 1.
limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransformationResponseDto"
            }
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              },
              "page": {
                "type": "integer"
              },
              "limit": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              },
              "pages": {
                "type": "integer"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

POST /v1/projects/{projectId}/transforms

Transform an owned original or public remote image; returns binary output.

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.

Request body (required)

Documented responses

  • 200 Raster bytes; X-Transformation-ID identifies persisted/cache metadata. X-Cache is HIT or MISS.
    • application/octet-stream: string / binary
  • 400 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 401 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 403 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 404 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 409 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/transforms/{id}

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/TransformationResponseDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

DELETE /v1/projects/{projectId}/transforms/{id}

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.

Documented responses

  • 200
    • application/json: object
      200 JSON response structure
      200 response schema
      {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "data": {
            "$ref": "#/components/schemas/MessageDto"
          },
          "meta": {
            "type": "object",
            "properties": {
              "requestId": {
                "type": "string"
              }
            }
          }
        }
      }
  • 400 Standard sanitized error envelope.
    • application/json: object
  • 401 Standard sanitized error envelope.
    • application/json: object
  • 403 Standard sanitized error envelope.
    • application/json: object
  • 404 Standard sanitized error envelope.
    • application/json: object
  • 409 Standard sanitized error envelope.
    • application/json: object
  • 413 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 429 Standard sanitized error envelope.
    • application/json: object
  • 500 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 502 Sanitized error envelope. Inspect status before decoding media.
    • application/json: object
  • 503 Standard sanitized error envelope.
    • application/json: object

An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

GET /v1/projects/{projectId}/transforms/{id}/content

Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

Name / locationTypeRequired / constraints
projectId (path)stringRequired.
id (path)stringRequired.
If-None-Match (header)stringOptional.

Documented responses

  • 200 Private derivative bytes
    • application/octet-stream: string / binary
  • 304 Authenticated revalidation; no bandwidth charged.
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    PDF, QR and barcode tools

    POST /v1/projects/{projectId}/tools/qr

    Generate a QR code (PNG or SVG).

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Request body (required)

    Documented responses

    • 200 QR image bytes
      • image/png: string / binary
      • image/svg+xml: string / binary
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    POST /v1/projects/{projectId}/tools/barcode

    Generate an allowlisted barcode (PNG or SVG).

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Request body (required)

    Documented responses

    • 200 Barcode image bytes
      • image/png: string / binary
      • image/svg+xml: string / binary
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    POST /v1/projects/{projectId}/tools/pdf/info

    Inspect a PDF (page count and dimensions).

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Request body (required)

    • multipart/form-data: object
      Multipart body schema
      {
        "type": "object",
        "required": [
          "file"
        ],
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          }
        }
      }

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/PdfInfoResponseDto"
            },
            "meta": {
              "type": "object",
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard sanitized error envelope.
      • application/json: object
    • 401 Standard sanitized error envelope.
      • application/json: object
    • 403 Standard sanitized error envelope.
      • application/json: object
    • 404 Standard sanitized error envelope.
      • application/json: object
    • 409 Standard sanitized error envelope.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Standard sanitized error envelope.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Standard sanitized error envelope.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    POST /v1/projects/{projectId}/tools/pdf/render

    Rasterize PDF pages. One page returns binary; multiple pages return JSON with base64 payloads.

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    pages (query)stringOptional. Unique comma-separated 1-based pages in requested order, e.g. 1,3,5. Mutually exclusive with range/all. Omit selection to render page 1.
    rangeStart (query)integerOptional. Min: 1. Max: 100. Inclusive 1-based page number; rangeStart and rangeEnd must be provided together and cannot be combined with pages/all.
    rangeEnd (query)integerOptional. Min: 1. Max: 100. Inclusive 1-based page number; rangeStart and rangeEnd must be provided together and cannot be combined with pages/all.
    all (query)booleanOptional. Default: false. Render the first pages up to the configured cap (default/max 10). Mutually exclusive with pages/range; does not return pages beyond the cap.
    format (query)stringOptional. Values: png | jpeg | webp. Default: "png".
    scale (query)numberOptional. Default: 1. Min: 0.5. Max: 2.
    quality (query)integerOptional. Default: 80. Min: 1. Max: 100. JPEG/WebP encoder quality; PNG ignores this value.

    Request body (required)

    • multipart/form-data: object
      Multipart body schema
      {
        "type": "object",
        "required": [
          "file"
        ],
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          }
        }
      }

    Documented responses

    • 200 Single-page image bytes or multi-page JSON envelope
      • image/png: string / binary
      • image/jpeg: string / binary
      • image/webp: string / binary
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/PdfRenderResponseDto"
            },
            "meta": {
              "type": "object",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    POST /v1/projects/{projectId}/tools/pdf/merge

    Merge uploaded PDFs in multipart order into one PDF.

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Request body (required)

    • multipart/form-data: object
      Multipart body schema
      {
        "type": "object",
        "required": [
          "file"
        ],
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "array",
            "minItems": 1,
            "maxItems": 10,
            "description": "Repeat the file field in merge order. Configured limits may be lower.",
            "items": {
              "type": "string",
              "format": "binary"
            }
          }
        }
      }

    Documented responses

    • 200
      • application/pdf: string / binary
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    POST /v1/projects/{projectId}/tools/pdf/extract

    Extract selected PDF pages into a new PDF.

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    pages (query)stringOptional. Unique comma-separated 1-based pages in requested order, e.g. 1,2,5. Required unless a complete range is supplied.
    rangeStart (query)integerOptional. Min: 1. Max: 100. Inclusive 1-based page number; rangeStart and rangeEnd must be provided together and cannot be combined with pages/all.
    rangeEnd (query)integerOptional. Min: 1. Max: 100. Inclusive 1-based page number; rangeStart and rangeEnd must be provided together and cannot be combined with pages/all.

    Request body (required)

    • multipart/form-data: object
      Multipart body schema
      {
        "type": "object",
        "required": [
          "file"
        ],
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          }
        }
      }

    Documented responses

    • 200
      • application/pdf: string / binary
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    Saved artifacts and usage

    POST /v1/projects/{projectId}/tools/artifacts

    Persist a tool preview as a project artifact (storage only; no generation credit).

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Request body (required)

    • multipart/form-data: object
      Multipart body schema
      {
        "type": "object",
        "required": [
          "file",
          "kind",
          "displayName",
          "contentType"
        ],
        "additionalProperties": false,
        "properties": {
          "file": {
            "type": "string",
            "format": "binary"
          },
          "kind": {
            "type": "string",
            "enum": [
              "qr",
              "barcode",
              "pdf_render",
              "pdf_merge",
              "pdf_extract",
              "image_transform"
            ]
          },
          "displayName": {
            "type": "string"
          },
          "contentType": {
            "type": "string"
          },
          "requestSnapshot": {
            "type": "string",
            "description": "JSON object of feature-specific generation hints only. Credentials, headers, storage options and arbitrary nested objects are rejected."
          },
          "sourceImageId": {
            "type": "string"
          }
        }
      }

    Documented responses

    • 201
      • application/json: object
        201 JSON response structure
        201 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/ToolArtifactResponseDto"
            },
            "meta": {
              "type": "object",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 401 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 403 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/tools/artifacts

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    page (query)ObjectOptional. Default: 1. Min: 1.
    limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.
    q (query)stringOptional.
    kind (query)stringOptional. Values: qr | barcode | pdf_render | pdf_merge | pdf_extract | image_transform.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/ToolArtifactResponseDto"
              }
            },
            "meta": {
              "type": "object",
              "properties": {
                "requestId": {
                  "type": "string"
                },
                "page": {
                  "type": "integer"
                },
                "limit": {
                  "type": "integer"
                },
                "total": {
                  "type": "integer"
                },
                "pages": {
                  "type": "integer"
                }
              }
            }
          }
        }
    • 400 Standard sanitized error envelope.
      • application/json: object
    • 401 Standard sanitized error envelope.
      • application/json: object
    • 403 Standard sanitized error envelope.
      • application/json: object
    • 404 Standard sanitized error envelope.
      • application/json: object
    • 409 Standard sanitized error envelope.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Standard sanitized error envelope.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Standard sanitized error envelope.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/tools/artifacts/{id}

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    id (path)stringRequired.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/ToolArtifactResponseDto"
            },
            "meta": {
              "type": "object",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 401 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 403 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    DELETE /v1/projects/{projectId}/tools/artifacts/{id}

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    id (path)stringRequired.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/MessageDto"
            },
            "meta": {
              "type": "object",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 401 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 403 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/tools/artifacts/{id}/content

    Download persisted tool artifact bytes.

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    id (path)stringRequired.

    Documented responses

    • 200 Private saved media bytes. Inspect status before decoding.
      • application/octet-stream: string / binary
    • 400 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 401 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 403 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 404 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 409 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 413 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 429 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 500 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 502 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object
    • 503 Sanitized error envelope. Inspect status before decoding media.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/outputs/summary

    Authentication: X-API-Key OR Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/OutputsSummaryDto"
            },
            "meta": {
              "type": "object",
              "required": [
                "requestId"
              ],
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 401 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 403 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 409 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 429 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object
    • 503 Standard error envelope. See docs/AUTH_PHASE1.md for stable authentication codes.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/usage/events

    Authentication: Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    page (query)ObjectOptional. Default: 1. Min: 1.
    limit (query)ObjectOptional. Default: 20. Min: 1. Max: 100.
    periodId (query)string / uuidOptional. Owned persisted usage period ID; omission includes all periods.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/UsageEventDto"
              }
            },
            "meta": {
              "type": "object",
              "properties": {
                "requestId": {
                  "type": "string"
                },
                "page": {
                  "type": "integer"
                },
                "limit": {
                  "type": "integer"
                },
                "total": {
                  "type": "integer"
                },
                "pages": {
                  "type": "integer"
                }
              }
            }
          }
        }
    • 400 Standard sanitized error envelope.
      • application/json: object
    • 401 Standard sanitized error envelope.
      • application/json: object
    • 403 Standard sanitized error envelope.
      • application/json: object
    • 404 Standard sanitized error envelope.
      • application/json: object
    • 409 Standard sanitized error envelope.
      • application/json: object
    • 429 Standard sanitized error envelope.
      • application/json: object
    • 503 Standard sanitized error envelope.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    GET /v1/projects/{projectId}/usage/activity

    Authentication: Customer Authorization: Bearer. Choose one supported credential.

    Name / locationTypeRequired / constraints
    projectId (path)stringRequired.
    days (query)ObjectOptional. Default: 7. Min: 1. Max: 31. Number of completed UTC calendar days to include, ending today.

    Documented responses

    • 200
      • application/json: object
        200 JSON response structure
        200 response schema
        {
          "type": "object",
          "required": [
            "success",
            "data",
            "meta"
          ],
          "properties": {
            "success": {
              "type": "boolean",
              "enum": [
                true
              ]
            },
            "data": {
              "$ref": "#/components/schemas/UsageActivitySeriesDto"
            },
            "meta": {
              "type": "object",
              "properties": {
                "requestId": {
                  "type": "string"
                }
              }
            }
          }
        }
    • 400 Standard sanitized error envelope.
      • application/json: object
    • 401 Standard sanitized error envelope.
      • application/json: object
    • 403 Standard sanitized error envelope.
      • application/json: object
    • 404 Standard sanitized error envelope.
      • application/json: object
    • 409 Standard sanitized error envelope.
      • application/json: object
    • 429 Standard sanitized error envelope.
      • application/json: object
    • 503 Standard sanitized error envelope.
      • application/json: object

    An omitted error status here does not imply it cannot occur. All operations remain subject to authentication, validation, quota and capacity checks; see errors and limits.

    Request and response schemas

    Schema definitions below come from the reviewed snapshot. Expand a definition for nested objects, array items and envelope structure. Cross-field rules and service limits are explained in the resource guides.

    ApiKeyContextDto
    FieldTypeRequired / constraints
    projectIdstringRequired.
    keyIdstringRequired.
    ApiKeyContextDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "projectId": {
          "type": "string"
        },
        "keyId": {
          "type": "string"
        }
      },
      "required": [
        "projectId",
        "keyId"
      ]
    }
    CreateProjectDto
    FieldTypeRequired / constraints
    namestringRequired. Max length: 100.
    slugstringRequired. Unique per owner, including deleted projects.
    CreateProjectDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100
        },
        "slug": {
          "type": "string",
          "description": "Unique per owner, including deleted projects.",
          "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
        }
      },
      "required": [
        "name",
        "slug"
      ]
    }
    ProjectResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    userIdstringRequired.
    namestringRequired.
    slugstringRequired.
    statusstringRequired. Values: active | disabled.
    deletedAtstring / date-timeRequired.
    createdAtstring / date-timeRequired.
    updatedAtstring / date-timeRequired.
    ProjectResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "userId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "active",
            "disabled"
          ]
        },
        "deletedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "_id",
        "userId",
        "name",
        "slug",
        "status",
        "deletedAt",
        "createdAt",
        "updatedAt"
      ]
    }
    Object
    FieldTypeRequired / constraints
    Object OpenAPI schema
    {
      "type": "object",
      "properties": {}
    }
    UpdateProjectDto
    FieldTypeRequired / constraints
    namestringOptional. Max length: 100.
    statusstringOptional. Values: active | disabled.
    UpdateProjectDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100
        },
        "status": {
          "type": "string",
          "enum": [
            "active",
            "disabled"
          ]
        }
      }
    }
    MessageDto
    FieldTypeRequired / constraints
    messagestringRequired.
    MessageDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "example": "If eligible, an email will be sent."
        }
      },
      "required": [
        "message"
      ]
    }
    CreateApiKeyDto
    FieldTypeRequired / constraints
    namestringRequired. Max length: 100.
    CreateApiKeyDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 100
        }
      },
      "required": [
        "name"
      ]
    }
    CreatedApiKeyResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    projectIdstringRequired.
    namestringRequired.
    keyPrefixstringRequired.
    lastUsedAtstring / date-timeRequired.
    revokedAtstring / date-timeRequired.
    createdAtstring / date-timeRequired.
    apiKeystringRequired. Raw credential shown only in this creation response. Store securely.
    CreatedApiKeyResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "keyPrefix": {
          "type": "string"
        },
        "lastUsedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "revokedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "apiKey": {
          "type": "string",
          "description": "Raw credential shown only in this creation response. Store securely."
        }
      },
      "required": [
        "_id",
        "projectId",
        "name",
        "keyPrefix",
        "lastUsedAt",
        "revokedAt",
        "createdAt",
        "apiKey"
      ]
    }
    ApiKeyResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    projectIdstringRequired.
    namestringRequired.
    keyPrefixstringRequired.
    lastUsedAtstring / date-timeRequired.
    revokedAtstring / date-timeRequired.
    createdAtstring / date-timeRequired.
    ApiKeyResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "keyPrefix": {
          "type": "string"
        },
        "lastUsedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "revokedAt": {
          "type": "string",
          "format": "date-time",
          "nullable": true
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "_id",
        "projectId",
        "name",
        "keyPrefix",
        "lastUsedAt",
        "revokedAt",
        "createdAt"
      ]
    }
    ImageResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    projectIdstringRequired.
    sourceTypestringRequired. Values: upload.
    originalNamestringRequired.
    bytesnumberRequired.
    sha256stringRequired.
    metadataImageMetadataDtoRequired.
    statusstringRequired. Values: ready.
    createdAtstring / date-timeRequired.
    updatedAtstring / date-timeRequired.
    ImageResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "sourceType": {
          "type": "string",
          "enum": [
            "upload"
          ]
        },
        "originalName": {
          "type": "string"
        },
        "bytes": {
          "type": "number"
        },
        "sha256": {
          "type": "string"
        },
        "metadata": {
          "$ref": "#/components/schemas/ImageMetadataDto"
        },
        "status": {
          "type": "string",
          "enum": [
            "ready"
          ]
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "_id",
        "projectId",
        "sourceType",
        "originalName",
        "bytes",
        "sha256",
        "metadata",
        "status",
        "createdAt",
        "updatedAt"
      ]
    }
    ImageMetadataDto
    FieldTypeRequired / constraints
    formatstringRequired. Values: jpeg | png | webp | avif | gif | svg.
    mimeTypestringRequired.
    widthnumberRequired.
    heightnumberRequired.
    framesnumberRequired.
    pixelCountnumberRequired.
    hasAlphabooleanRequired.
    orientationnumberRequired.
    ImageMetadataDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "jpeg",
            "png",
            "webp",
            "avif",
            "gif",
            "svg"
          ]
        },
        "mimeType": {
          "type": "string"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "frames": {
          "type": "number"
        },
        "pixelCount": {
          "type": "number"
        },
        "hasAlpha": {
          "type": "boolean"
        },
        "orientation": {
          "type": "number",
          "nullable": true
        }
      },
      "required": [
        "format",
        "mimeType",
        "width",
        "height",
        "frames",
        "pixelCount",
        "hasAlpha",
        "orientation"
      ]
    }
    TransformationResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    projectIdstringRequired.
    imageIdstringRequired.
    sourceHashstringRequired.
    transformHashstringRequired.
    specobjectRequired. Normalized options; omitted dimensions/effects are null. Rotation is normalized to 0–270 degrees.
    modestringRequired. Values: PERSIST | CACHE | EPHEMERAL.
    bytesnumberRequired.
    processingMsnumberRequired.
    statusstringRequired. Values: ready | deleting.
    sha256stringRequired.
    metadataImageMetadataDtoRequired.
    expiresAtstring / date-timeRequired.
    createdAtstring / date-timeRequired.
    TransformationResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "imageId": {
          "type": "string",
          "nullable": true
        },
        "sourceHash": {
          "type": "string"
        },
        "transformHash": {
          "type": "string"
        },
        "spec": {
          "type": "object",
          "additionalProperties": false,
          "description": "Normalized options; omitted dimensions/effects are null. Rotation is normalized to 0–270 degrees.",
          "required": [
            "width",
            "height",
            "fit",
            "crop",
            "format",
            "quality",
            "rotate",
            "flip",
            "flop",
            "optimize",
            "stripMetadata",
            "grayscale",
            "negate",
            "blur",
            "sharpen",
            "brightness",
            "saturation",
            "hue",
            "trim",
            "extend",
            "background",
            "position"
          ],
          "properties": {
            "width": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "nullable": true
            },
            "height": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000,
              "nullable": true
            },
            "fit": {
              "type": "string",
              "enum": [
                "cover",
                "contain",
                "inside",
                "fill"
              ],
              "description": "Default cover when width and height are provided, otherwise inside. cover/contain/fill require both dimensions."
            },
            "crop": {
              "type": "object",
              "required": [
                "left",
                "top",
                "width",
                "height"
              ],
              "additionalProperties": false,
              "properties": {
                "left": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 25000000
                },
                "top": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 25000000
                },
                "width": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10000
                },
                "height": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10000
                }
              },
              "nullable": true
            },
            "format": {
              "type": "string",
              "enum": [
                "jpeg",
                "png",
                "webp",
                "avif",
                "gif"
              ],
              "default": "webp"
            },
            "quality": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 80
            },
            "rotate": {
              "type": "integer",
              "enum": [
                0,
                90,
                180,
                270
              ]
            },
            "flip": {
              "type": "boolean",
              "default": false,
              "description": "Mirror vertically (top to bottom)."
            },
            "flop": {
              "type": "boolean",
              "default": false,
              "description": "Mirror horizontally (left to right)."
            },
            "optimize": {
              "type": "boolean",
              "default": true
            },
            "stripMetadata": {
              "type": "boolean",
              "enum": [
                true
              ],
              "default": true,
              "description": "Metadata is always stripped. Only true is accepted."
            },
            "grayscale": {
              "type": "boolean",
              "default": false,
              "description": "Convert to greyscale when true."
            },
            "negate": {
              "type": "boolean",
              "default": false,
              "description": "Invert colour channels when true; alpha is preserved unchanged."
            },
            "blur": {
              "type": "number",
              "minimum": 0.3,
              "maximum": 10,
              "description": "Gaussian blur sigma. Omit to skip blur.",
              "example": 1.5,
              "nullable": true
            },
            "sharpen": {
              "type": "number",
              "minimum": 0.5,
              "maximum": 5,
              "description": "Sharpen sigma. Omit to skip sharpen.",
              "example": 1,
              "nullable": true
            },
            "brightness": {
              "type": "number",
              "minimum": 0,
              "maximum": 3,
              "description": "Modulate brightness multiplier (1 = unchanged). Omit to leave brightness alone.",
              "example": 1.1,
              "nullable": true
            },
            "saturation": {
              "type": "number",
              "minimum": 0,
              "maximum": 3,
              "description": "Modulate saturation multiplier (1 = unchanged). Omit to leave saturation alone.",
              "example": 0.8,
              "nullable": true
            },
            "hue": {
              "type": "integer",
              "minimum": -180,
              "maximum": 180,
              "description": "Hue rotation in degrees. Omit to leave hue alone.",
              "example": 30,
              "nullable": true
            },
            "trim": {
              "type": "object",
              "nullable": true,
              "additionalProperties": false,
              "required": [
                "threshold"
              ],
              "properties": {
                "threshold": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 100
                }
              }
            },
            "extend": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "top",
                "right",
                "bottom",
                "left"
              ],
              "description": "Padding in pixels after effects. Each side 0–MAX_OUTPUT_DIMENSION; totals capped; at least one side > 0.",
              "properties": {
                "top": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "right": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "bottom": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "left": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                }
              },
              "nullable": true
            },
            "background": {
              "type": "string",
              "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
              "default": "#ffffff",
              "description": "Hex colour for contain letterbox, extend padding, and JPEG flatten. Default #ffffff matches legacy behaviour.",
              "example": "#ffffff"
            },
            "position": {
              "type": "string",
              "enum": [
                "center",
                "entropy",
                "attention"
              ],
              "default": "center",
              "description": "Resize focal position (mainly for cover). Default center matches legacy Sharp centre."
            }
          }
        },
        "mode": {
          "type": "string",
          "enum": [
            "PERSIST",
            "CACHE",
            "EPHEMERAL"
          ]
        },
        "bytes": {
          "type": "number"
        },
        "processingMs": {
          "type": "number"
        },
        "status": {
          "type": "string",
          "enum": [
            "ready",
            "deleting"
          ]
        },
        "sha256": {
          "type": "string"
        },
        "metadata": {
          "$ref": "#/components/schemas/ImageMetadataDto"
        },
        "expiresAt": {
          "format": "date-time",
          "type": "string",
          "nullable": true
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "_id",
        "projectId",
        "imageId",
        "sourceHash",
        "transformHash",
        "spec",
        "mode",
        "bytes",
        "processingMs",
        "status",
        "sha256",
        "metadata",
        "expiresAt",
        "createdAt"
      ]
    }
    TransformRequestDto
    FieldTypeRequired / constraints
    imageIdstringOptional. Exactly one of imageId or url is required.
    urlstringOptional. Public HTTP(S) image URL; each request revalidates and fetches it.
    modestringOptional. Values: PERSIST | CACHE | EPHEMERAL. Default: "CACHE".
    maxOutputBytesnumberOptional. Min: 1. Max: 104857600. Output byte ceiling reserved before work; actual bytes are committed.
    transformobjectOptional.
    TransformRequestDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "imageId": {
          "type": "string",
          "description": "Exactly one of imageId or url is required."
        },
        "url": {
          "type": "string",
          "description": "Public HTTP(S) image URL; each request revalidates and fetches it."
        },
        "mode": {
          "type": "string",
          "enum": [
            "PERSIST",
            "CACHE",
            "EPHEMERAL"
          ],
          "default": "CACHE"
        },
        "maxOutputBytes": {
          "type": "number",
          "description": "Output byte ceiling reserved before work; actual bytes are committed.",
          "minimum": 1,
          "maximum": 104857600
        },
        "transform": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "width": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000
            },
            "height": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10000
            },
            "fit": {
              "type": "string",
              "enum": [
                "cover",
                "contain",
                "inside",
                "fill"
              ],
              "description": "Default cover when width and height are provided, otherwise inside. cover/contain/fill require both dimensions."
            },
            "crop": {
              "type": "object",
              "required": [
                "left",
                "top",
                "width",
                "height"
              ],
              "additionalProperties": false,
              "properties": {
                "left": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 25000000
                },
                "top": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 25000000
                },
                "width": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10000
                },
                "height": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10000
                }
              }
            },
            "format": {
              "type": "string",
              "enum": [
                "jpeg",
                "png",
                "webp",
                "avif",
                "gif"
              ],
              "default": "webp"
            },
            "quality": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 80
            },
            "rotate": {
              "type": "integer",
              "enum": [
                -360,
                -270,
                -180,
                -90,
                0,
                90,
                180,
                270,
                360
              ],
              "default": 0
            },
            "flip": {
              "type": "boolean",
              "default": false,
              "description": "Mirror vertically (top to bottom)."
            },
            "flop": {
              "type": "boolean",
              "default": false,
              "description": "Mirror horizontally (left to right)."
            },
            "optimize": {
              "type": "boolean",
              "default": true
            },
            "stripMetadata": {
              "type": "boolean",
              "enum": [
                true
              ],
              "default": true,
              "description": "Metadata is always stripped. Only true is accepted."
            },
            "grayscale": {
              "type": "boolean",
              "default": false,
              "description": "Convert to greyscale when true."
            },
            "negate": {
              "type": "boolean",
              "default": false,
              "description": "Invert colour channels when true; alpha is preserved unchanged."
            },
            "blur": {
              "type": "number",
              "minimum": 0.3,
              "maximum": 10,
              "description": "Gaussian blur sigma. Omit to skip blur.",
              "example": 1.5
            },
            "sharpen": {
              "type": "number",
              "minimum": 0.5,
              "maximum": 5,
              "description": "Sharpen sigma. Omit to skip sharpen.",
              "example": 1
            },
            "brightness": {
              "type": "number",
              "minimum": 0,
              "maximum": 3,
              "description": "Modulate brightness multiplier (1 = unchanged). Omit to leave brightness alone.",
              "example": 1.1
            },
            "saturation": {
              "type": "number",
              "minimum": 0,
              "maximum": 3,
              "description": "Modulate saturation multiplier (1 = unchanged). Omit to leave saturation alone.",
              "example": 0.8
            },
            "hue": {
              "type": "integer",
              "minimum": -180,
              "maximum": 180,
              "description": "Hue rotation in degrees. Omit to leave hue alone.",
              "example": 30
            },
            "trim": {
              "description": "Trim near-background borders after orientation. `true` uses threshold 10; or `{ threshold: 1–100 }`.",
              "oneOf": [
                {
                  "type": "boolean",
                  "enum": [
                    true
                  ]
                },
                {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "threshold"
                  ],
                  "properties": {
                    "threshold": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 100
                    }
                  }
                }
              ]
            },
            "extend": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "top",
                "right",
                "bottom",
                "left"
              ],
              "description": "Padding in pixels after effects. Each side 0–MAX_OUTPUT_DIMENSION; totals capped; at least one side > 0.",
              "properties": {
                "top": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "right": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "bottom": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                },
                "left": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 10000
                }
              }
            },
            "background": {
              "type": "string",
              "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
              "default": "#ffffff",
              "description": "Hex colour for contain letterbox, extend padding, and JPEG flatten. Default #ffffff matches legacy behaviour.",
              "example": "#ffffff"
            },
            "position": {
              "type": "string",
              "enum": [
                "center",
                "entropy",
                "attention"
              ],
              "default": "center",
              "description": "Resize focal position (mainly for cover). Default center matches legacy Sharp centre."
            }
          }
        }
      },
      "additionalProperties": false,
      "oneOf": [
        {
          "required": [
            "imageId"
          ]
        },
        {
          "required": [
            "url"
          ]
        }
      ]
    }
    QrGenerateDto
    FieldTypeRequired / constraints
    contentstringRequired. Min length: 1. Max length: 2048. Text to encode. Also subject to the configured UTF-8 byte limit (default 2048 bytes).
    formatstringOptional. Values: png | svg. Default: "png".
    sizeintegerOptional. Default: 256. Min: 128. Max: 1024. Output edge in pixels; configured limits may be lower.
    marginintegerOptional. Default: 2. Min: 0. Max: 16. Quiet-zone margin in modules.
    errorCorrectionstringOptional. Values: L | M | Q | H. Default: "M". Error correction level: low, medium, quartile, high.
    foregroundstringOptional. Default: "#000000". Foreground hex colour (#RGB or #RRGGBB).
    backgroundstringOptional. Default: "#ffffff". Background hex colour (#RGB or #RRGGBB).
    QrGenerateDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "content": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2048,
          "example": "https://example.com",
          "description": "Text to encode. Also subject to the configured UTF-8 byte limit (default 2048 bytes)."
        },
        "format": {
          "type": "string",
          "enum": [
            "png",
            "svg"
          ],
          "default": "png"
        },
        "size": {
          "type": "integer",
          "minimum": 128,
          "maximum": 1024,
          "default": 256,
          "description": "Output edge in pixels; configured limits may be lower."
        },
        "margin": {
          "type": "integer",
          "minimum": 0,
          "maximum": 16,
          "default": 2,
          "description": "Quiet-zone margin in modules."
        },
        "errorCorrection": {
          "type": "string",
          "enum": [
            "L",
            "M",
            "Q",
            "H"
          ],
          "default": "M",
          "description": "Error correction level: low, medium, quartile, high."
        },
        "foreground": {
          "type": "string",
          "default": "#000000",
          "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
          "description": "Foreground hex colour (#RGB or #RRGGBB)."
        },
        "background": {
          "type": "string",
          "default": "#ffffff",
          "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
          "description": "Background hex colour (#RGB or #RRGGBB)."
        }
      },
      "required": [
        "content"
      ],
      "additionalProperties": false
    }
    BarcodeGenerateDto
    FieldTypeRequired / constraints
    typestringRequired. Values: code128 | code39 | ean13 | ean8 | upca | itf14. Barcode symbology.
    contentstringRequired. Min length: 1. Max length: 80. Text to encode (a string preserves leading zeroes). code128: 1–80 characters; code39: 1–48 uppercase letters/digits or - . space $ / + %. ean13: 12/13 digits; ean8: 7/8; upca: 11/12; itf14: 13/14. Omit the check digit to compute it; supplied check digits must be valid.
    formatstringOptional. Values: png | svg. Default: "png".
    scaleintegerOptional. Default: 2. Min: 1. Max: 6. Integer rendering scale factor.
    heightintegerOptional. Default: 10. Min: 4. Max: 40. Bar height in millimetres before scaling.
    includeTextbooleanOptional. Default: true. Display human-readable content below the bars.
    foregroundstringOptional. Default: "#000000". Foreground hex colour (#RGB or #RRGGBB).
    backgroundstringOptional. Default: "#ffffff". Background hex colour (#RGB or #RRGGBB).
    BarcodeGenerateDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "code128",
            "code39",
            "ean13",
            "ean8",
            "upca",
            "itf14"
          ],
          "example": "code128",
          "description": "Barcode symbology."
        },
        "content": {
          "type": "string",
          "minLength": 1,
          "maxLength": 80,
          "example": "IMAZEO-2026",
          "description": "Text to encode (a string preserves leading zeroes). code128: 1–80 characters; code39: 1–48 uppercase letters/digits or - . space $ / + %. ean13: 12/13 digits; ean8: 7/8; upca: 11/12; itf14: 13/14. Omit the check digit to compute it; supplied check digits must be valid."
        },
        "format": {
          "type": "string",
          "enum": [
            "png",
            "svg"
          ],
          "default": "png"
        },
        "scale": {
          "type": "integer",
          "minimum": 1,
          "maximum": 6,
          "default": 2,
          "description": "Integer rendering scale factor."
        },
        "height": {
          "type": "integer",
          "minimum": 4,
          "maximum": 40,
          "default": 10,
          "description": "Bar height in millimetres before scaling."
        },
        "includeText": {
          "type": "boolean",
          "default": true,
          "description": "Display human-readable content below the bars."
        },
        "foreground": {
          "type": "string",
          "default": "#000000",
          "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
          "description": "Foreground hex colour (#RGB or #RRGGBB)."
        },
        "background": {
          "type": "string",
          "default": "#ffffff",
          "pattern": "^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
          "description": "Background hex colour (#RGB or #RRGGBB)."
        }
      },
      "required": [
        "type",
        "content"
      ],
      "additionalProperties": false
    }
    PdfInfoResponseDto
    FieldTypeRequired / constraints
    pageCountnumberRequired.
    encryptedbooleanRequired.
    pagesPdfPageInfoDto[]Required.
    PdfInfoResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "pageCount": {
          "type": "number"
        },
        "encrypted": {
          "type": "boolean"
        },
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PdfPageInfoDto"
          }
        }
      },
      "required": [
        "pageCount",
        "encrypted",
        "pages"
      ]
    }
    PdfPageInfoDto
    FieldTypeRequired / constraints
    pageNumberintegerRequired. Min: 1.
    widthnumberRequired. Page width in PDF points at scale 1 (72 points per inch).
    heightnumberRequired. Page height in PDF points at scale 1 (72 points per inch).
    PdfPageInfoDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "pageNumber": {
          "type": "integer",
          "minimum": 1
        },
        "width": {
          "type": "number",
          "description": "Page width in PDF points at scale 1 (72 points per inch)."
        },
        "height": {
          "type": "number",
          "description": "Page height in PDF points at scale 1 (72 points per inch)."
        }
      },
      "required": [
        "pageNumber",
        "width",
        "height"
      ]
    }
    PdfRenderResponseDto
    FieldTypeRequired / constraints
    pagesPdfRenderPageDto[]Required.
    PdfRenderResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "pages": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/PdfRenderPageDto"
          }
        }
      },
      "required": [
        "pages"
      ]
    }
    PdfRenderPageDto
    FieldTypeRequired / constraints
    pageNumbernumberRequired.
    widthnumberRequired.
    heightnumberRequired.
    contentTypestringRequired.
    datastring / byteRequired. Base64-encoded image bytes (without a data-URL prefix).
    PdfRenderPageDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "pageNumber": {
          "type": "number"
        },
        "width": {
          "type": "number"
        },
        "height": {
          "type": "number"
        },
        "contentType": {
          "type": "string"
        },
        "data": {
          "type": "string",
          "format": "byte",
          "description": "Base64-encoded image bytes (without a data-URL prefix)."
        }
      },
      "required": [
        "pageNumber",
        "width",
        "height",
        "contentType",
        "data"
      ]
    }
    ToolArtifactResponseDto
    FieldTypeRequired / constraints
    _idstringRequired.
    projectIdstringRequired.
    kindstringRequired. Values: qr | barcode | pdf_render | pdf_merge | pdf_extract | image_transform.
    displayNamestringRequired.
    statusstringRequired. Values: ready | deleting.
    bytesnumberRequired.
    sha256stringRequired.
    contentTypestringRequired.
    outputTypestringRequired.
    requestSnapshotobjectRequired.
    sourceImageIdstringRequired.
    createdAtstring / date-timeRequired.
    updatedAtstring / date-timeRequired.
    ToolArtifactResponseDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "kind": {
          "type": "string",
          "enum": [
            "qr",
            "barcode",
            "pdf_render",
            "pdf_merge",
            "pdf_extract",
            "image_transform"
          ]
        },
        "displayName": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "ready",
            "deleting"
          ]
        },
        "bytes": {
          "type": "number"
        },
        "sha256": {
          "type": "string"
        },
        "contentType": {
          "type": "string"
        },
        "outputType": {
          "type": "string"
        },
        "requestSnapshot": {
          "type": "object"
        },
        "sourceImageId": {
          "type": "string",
          "nullable": true
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "updatedAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "_id",
        "projectId",
        "kind",
        "displayName",
        "status",
        "bytes",
        "sha256",
        "contentType",
        "outputType",
        "requestSnapshot",
        "sourceImageId",
        "createdAt",
        "updatedAt"
      ]
    }
    OutputsSummaryDto
    FieldTypeRequired / constraints
    totalnumberRequired. All listable outputs for the project.
    originalsnumberRequired. Ready original uploads.
    transformsnumberRequired. Active pipeline transforms plus saved image transforms.
    imagesnumberRequired. Originals plus transforms (pipeline and saved).
    qrnumberRequired.
    barcodenumberRequired.
    pdfnumberRequired. Saved PDF tool artifacts.
    OutputsSummaryDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "total": {
          "type": "number",
          "description": "All listable outputs for the project."
        },
        "originals": {
          "type": "number",
          "description": "Ready original uploads."
        },
        "transforms": {
          "type": "number",
          "description": "Active pipeline transforms plus saved image transforms."
        },
        "images": {
          "type": "number",
          "description": "Originals plus transforms (pipeline and saved)."
        },
        "qr": {
          "type": "number"
        },
        "barcode": {
          "type": "number"
        },
        "pdf": {
          "type": "number",
          "description": "Saved PDF tool artifacts."
        }
      },
      "required": [
        "total",
        "originals",
        "transforms",
        "images",
        "qr",
        "barcode",
        "pdf"
      ]
    }
    UsageEventDto
    FieldTypeRequired / constraints
    quantitynumberRequired.
    unitstringRequired. Values: transformation | byte | image | request.
    _idstringRequired.
    userIdstringRequired.
    projectIdstringRequired.
    periodIdstringRequired.
    subscriptionRevisionnumberRequired.
    termsVersionnumberRequired.
    requestIdstringRequired.
    typestringRequired. Values: IMAGE_UPLOADED | IMAGE_DELETED | TRANSFORMATION_PERFORMED | REMOTE_FETCH | TOOL_PERFORMED | STORAGE_ADDED | STORAGE_REMOVED | BANDWIDTH_USED.
    amountUsageAmountDtoRequired.
    createdAtstring / date-timeRequired.
    committedAtstring / date-timeRequired.
    UsageEventDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "quantity": {
          "type": "number"
        },
        "unit": {
          "type": "string",
          "enum": [
            "transformation",
            "byte",
            "image",
            "request"
          ]
        },
        "_id": {
          "type": "string"
        },
        "userId": {
          "type": "string"
        },
        "projectId": {
          "type": "string"
        },
        "periodId": {
          "type": "string"
        },
        "subscriptionRevision": {
          "type": "number"
        },
        "termsVersion": {
          "type": "number"
        },
        "requestId": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "IMAGE_UPLOADED",
            "IMAGE_DELETED",
            "TRANSFORMATION_PERFORMED",
            "REMOTE_FETCH",
            "TOOL_PERFORMED",
            "STORAGE_ADDED",
            "STORAGE_REMOVED",
            "BANDWIDTH_USED"
          ]
        },
        "amount": {
          "$ref": "#/components/schemas/UsageAmountDto"
        },
        "createdAt": {
          "format": "date-time",
          "type": "string"
        },
        "committedAt": {
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "quantity",
        "unit",
        "_id",
        "userId",
        "projectId",
        "periodId",
        "subscriptionRevision",
        "termsVersion",
        "requestId",
        "type",
        "amount",
        "createdAt",
        "committedAt"
      ]
    }
    UsageAmountDto
    FieldTypeRequired / constraints
    transformationsnumberRequired.
    storageBytesnumberRequired.
    bandwidthBytesnumberRequired.
    creditsnumberRequired.
    UsageAmountDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "transformations": {
          "type": "number"
        },
        "storageBytes": {
          "type": "number"
        },
        "bandwidthBytes": {
          "type": "number"
        },
        "credits": {
          "type": "number"
        }
      },
      "required": [
        "transformations",
        "storageBytes",
        "bandwidthBytes",
        "credits"
      ]
    }
    UsageActivitySeriesDto
    FieldTypeRequired / constraints
    daysnumberRequired. Requested day window length.
    startstring / date-timeRequired.
    endstring / date-timeRequired.
    seriesUsageActivityDayDto[]Required.
    totalsUsageActivityTotalsDtoRequired.
    UsageActivitySeriesDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "days": {
          "type": "number",
          "description": "Requested day window length."
        },
        "start": {
          "format": "date-time",
          "type": "string"
        },
        "end": {
          "format": "date-time",
          "type": "string"
        },
        "series": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/UsageActivityDayDto"
          }
        },
        "totals": {
          "$ref": "#/components/schemas/UsageActivityTotalsDto"
        }
      },
      "required": [
        "days",
        "start",
        "end",
        "series",
        "totals"
      ]
    }
    UsageActivityDayDto
    FieldTypeRequired / constraints
    datestringRequired. UTC calendar day as YYYY-MM-DD.
    transformationsnumberRequired. Committed image transformation events that day.
    othernumberRequired. Other committed processing events (tools and remote fetches) that day.
    UsageActivityDayDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "description": "UTC calendar day as YYYY-MM-DD.",
          "example": "2026-09-14"
        },
        "transformations": {
          "type": "number",
          "description": "Committed image transformation events that day."
        },
        "other": {
          "type": "number",
          "description": "Other committed processing events (tools and remote fetches) that day."
        }
      },
      "required": [
        "date",
        "transformations",
        "other"
      ]
    }
    UsageActivityTotalsDto
    FieldTypeRequired / constraints
    transformationsnumberRequired.
    othernumberRequired.
    UsageActivityTotalsDto OpenAPI schema
    {
      "type": "object",
      "properties": {
        "transformations": {
          "type": "number"
        },
        "other": {
          "type": "number"
        }
      },
      "required": [
        "transformations",
        "other"
      ]
    }

    Documentation reviewed 2026-10-03 against development backend e298ec7. Verify your deployment’s API origin and limits before integrating.