> ## Documentation Index
> Fetch the complete documentation index at: https://kmerhosting.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Prepare a ConvertSuite processing job

> Requires the `convertsuite:process` scope and a unique `Idempotency-Key` header. One successful request reserves exactly one ConvertSuite operation; status polling, start, and cancel do not reserve additional operations.



## OpenAPI

````yaml /openapi.json post /v1/convertsuite/prepare-upload
openapi: 3.1.0
info:
  title: KmerHosting API
  version: v1
  description: >-
    Public API for resources owned by the authenticated KmerHosting account.
    Sensitive infrastructure operations require an explicit scope, an IPv4
    allowlist and an idempotency key. Provider credentials, purchases and
    account administration remain unavailable.
servers:
  - url: https://api.kmerhosting.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Account
  - name: Services
  - name: Domains
  - name: Email Hosting
  - name: Shared Hosting
  - name: LXC
  - name: KVM
  - name: ConvertSuite
paths:
  /v1/convertsuite/prepare-upload:
    post:
      tags:
        - ConvertSuite
      summary: Prepare a ConvertSuite processing job
      description: >-
        Requires the `convertsuite:process` scope and a unique `Idempotency-Key`
        header. One successful request reserves exactly one ConvertSuite
        operation; status polling, start, and cancel do not reserve additional
        operations.
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - tool
                - files
              additionalProperties: false
              properties:
                tool:
                  type: string
                  description: Tool ID returned by /v1/convertsuite/tools.
                options:
                  type: object
                  additionalProperties: true
                files:
                  type: array
                  minItems: 1
                  maxItems: 10
                  items:
                    type: object
                    required:
                      - originalName
                      - mimeType
                      - sizeBytes
                    additionalProperties: false
                    properties:
                      originalName:
                        type: string
                        minLength: 1
                        maxLength: 255
                      mimeType:
                        type: string
                        minLength: 1
                        maxLength: 160
                      sizeBytes:
                        type: integer
                        minimum: 1
                        maximum: 52428800
                      checksum:
                        type:
                          - string
                          - 'null'
                        maxLength: 128
      responses:
        '200':
          description: ConvertSuite response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '201':
          description: ConvertSuite response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '202':
          description: ConvertSuite response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '402':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
components:
  parameters:
    IdempotencyKey:
      in: header
      name: Idempotency-Key
      required: true
      schema:
        type: string
        minLength: 8
        maxLength: 128
        pattern: ^[A-Za-z0-9._:-]+$
  schemas:
    Envelope:
      type: object
      required:
        - data
        - request_id
      properties:
        data: {}
        request_id:
          type: string
          format: uuid
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
            message:
              type: string
            request_id:
              type: string
              format: uuid
  responses:
    Error:
      description: API error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: KMERHOSTING_API_KEY or OAuth access token
      description: >-
        `Authorization: Bearer kh_live_...` or a user-scoped `kh_oauth_...`
        token.

````