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

# Create a run

> Rent one GPU node from one provider, start one container from a public image, and run the supplied bash script in it. Exactly one of the two budget forms is required: hours bounds time exactly and cost approximately, max_usd the reverse.



## OpenAPI

````yaml https://apigw.mka1.com/speakeasy.json post /api/v1/serving/runs
openapi: 3.1.1
info:
  title: MKA1 API
  version: 1.1.0
  description: >-
    The MKA1 API is a RESTful API that provides access to the MKA1 platform.
    Learn how to get started with the API and the TypeScript SDK
    [here](https://mka1.apidocumentation.com/guides/getting-started).
  license:
    name: Proprietary
servers:
  - url: https://apigw.mka1.com
    description: MKA1 API Gateway
  - url: /
    description: Relative server URL (configurable via SDK constructor)
security: []
tags:
  - name: Resource Authorization
    description: >-
      Manage permissions for LLM resources. Create resources, grant/revoke
      permissions, and delete resources. Only resource owners can grant, revoke,
      or delete permissions.
    x-displayName: Resource Authorization
  - name: Embeddings
    description: >-
      Text embedding API endpoints for generating vector representations of
      text. Create semantic embeddings for search, clustering, and similarity
      matching using various embedding models.
    x-displayName: Embeddings
  - name: Feedback
    description: >-
      User feedback API for rating and commenting on chat completions. Collect
      thumbs up/down ratings and detailed feedback to improve model responses
      and track user satisfaction.
    x-displayName: Feedback
  - name: Images
    description: >-
      Image generation API endpoints for creating images from text descriptions.
      Generate images with control over size, quality, and style.
    x-displayName: Images
  - name: MCP Vault
    description: >-
      MCP vault API for storing user-owned MCP server configurations and
      encrypted credentials. Agents reference vault IDs so secrets are resolved
      only at tool execution time.
    x-displayName: MCP Vault
  - name: Speech
    description: >-
      Speech API endpoints for audio processing. Convert text to
      natural-sounding speech (TTS) or transcribe speech to text (STT) in
      different languages.
    x-displayName: Speech
  - name: Usage
    description: >-
      Usage tracking and analytics API for monitoring token consumption, request
      counts, and cost analysis. View detailed statistics per user, model, and
      time period.
    x-displayName: Usage
  - name: Extract
    description: >-
      Structured data extraction API for extracting information from files.
      Define JSON schemas to extract structured data from images, PDFs, and
      documents. Supports reusable schema templates.
    x-displayName: Extract
  - name: Text Classification
    description: >-
      Text classification API for categorizing text into predefined labels. Use
      AI models to classify text content for sentiment analysis, topic
      categorization, and content moderation.
    x-displayName: Text Classification
  - name: Responses
    description: >-
      Agent-powered responses API for creating AI agents with autonomous tool
      usage. Build conversational assistants that can use web search, file
      operations, image generation, code execution, computer use simulation, and
      MCP integrations. Supports background processing, streaming, and real-time
      status tracking.
    x-displayName: Responses
  - name: Files
    description: >-
      File management API for uploading, storing, and managing files with
      automatic expiration and S3 integration. Upload files that can be used
      with Assistants, Vector Stores, and other features. Files are stored in S3
      with metadata tracked in PostgreSQL. Supports automatic cleanup of expired
      files.
    x-displayName: Files
  - name: Vector Stores
    description: >-
      Vector store API for storing and searching documents using embeddings.
      Create vector stores, upload files with automatic chunking and embedding
      generation, and perform semantic search. Files are processed
      asynchronously using Temporal workflows for durability. Supports automatic
      cleanup of expired stores and LanceDB for efficient vector storage.
    x-displayName: Vector Stores
  - name: Conversations
    description: >-
      Conversation management API for storing and retrieving conversation state
      across Response API calls. Create conversations, add items (user messages,
      assistant messages, system messages), and maintain conversation history.
      Supports metadata tracking and multi-turn dialogue state management.
    x-displayName: Conversations
  - name: Guardrails
    description: >-
      AI safety guardrails API for configuring content moderation and security
      policies. Set up ban word lists, prompt injection detection, and system
      prompt leakage prevention. Guardrails apply to all requests from an
      account and can be tested before deployment.
    x-displayName: Guardrails
  - name: Models
    description: >-
      Model listing API for discovering available models. Returns model IDs,
      ownership, and metadata for all registered models in the gateway.
    x-displayName: Models
  - name: Skills
    description: >-
      Skills API for managing versioned bundles of instructions and files
      following the Agent Skills standard. Create, version, and download
      reusable skill packages that include SKILL.md manifests for agent
      environments.
    x-displayName: Skills
  - name: Chat Completions
    description: >-
      **Deprecated: Use the Responses API (`/api/v1/llm/responses`) instead.**
      Chat completion endpoints with support for streaming, tool calls, and
      multiple providers.
    x-deprecated: true
    x-displayName: Chat Completions
  - name: Batches
    x-displayName: Batches
  - name: Evals
    x-displayName: Evals
  - name: Fine-Tuning
    x-displayName: Fine-Tuning
  - name: Memory Stores
    x-displayName: Memory Stores
  - name: Prompts
    x-displayName: Prompts
  - name: API Key
    x-displayName: API Key
  - name: Organization
    x-displayName: Organization
  - name: Cluster Admin
    x-displayName: Cluster Admin
  - name: Sessions
    description: Create, inspect, access, and terminate sandbox sessions.
    x-displayName: Sessions
  - name: Browser
    description: >-
      Connect to browser sessions through the gateway port proxy. Browser
      sessions expose a Chrome DevTools Protocol endpoint on port 9222.
    x-displayName: Browser
  - name: Execution
    description: Run shell commands and code inside an existing sandbox session.
    x-displayName: Execution
  - name: Workspace
    description: >-
      Inspect the workspace manifest, transfer files or archives, and download
      generated artifacts.
    x-displayName: Workspace
  - name: Sandbox Usage
    description: >-
      Aggregate sandbox usage statistics across sessions, execution, and
      workspace operations.
    x-displayName: Sandbox Usage
  - name: Sandbox Pricing
    description: >-
      Cluster-admin management of the sandbox compute rate card used for
      budgeted spend.
    x-displayName: Sandbox Pricing
  - name: Agents
    description: Create and manage reusable agent definitions.
    x-displayName: Agents
  - name: Agent Versions
    description: Inspect an agent's configuration history and roll back to a prior version.
    x-displayName: Agent Versions
  - name: Agent Runs
    description: Execute saved agents and inspect persisted run results.
    x-displayName: Agent Runs
  - name: Agent Connectors
    description: >-
      Connect saved agents to external messaging channels such as Telegram,
      including text, photo, and supported document exchange.
    x-displayName: Agent Connectors
  - name: Agent Schedules
    description: Create and manage scheduled or recurring saved agent runs.
    x-displayName: Agent Schedules
  - name: schema-4_other
    x-displayName: other
  - name: Budgets
    x-displayName: Budgets
  - name: Settings
    x-displayName: Settings
  - description: Long-lived inference servers.
    name: Deployments
    x-displayName: Deployments
  - description: Submit, monitor, and cancel fine-tune jobs.
    name: Fine-Tune Jobs
    x-displayName: Fine-Tune Jobs
  - description: Custom container images for deployments and jobs.
    name: Container Images
    x-displayName: Container Images
  - description: >-
      First-class training datasets: registered references or uploaded,
      committed objects.
    name: Datasets
    x-displayName: Datasets
  - description: Persistent storage for weights and checkpoints.
    name: Volumes
    x-displayName: Volumes
  - description: Credentials injected into your workloads.
    name: Secrets
    x-displayName: Secrets
  - description: Available accelerator types (GPU, NPU, TPU).
    name: Accelerators
    x-displayName: Accelerators
  - description: Provider-anonymous, pre-submission capacity eligibility previews.
    name: Eligibility
    x-displayName: Eligibility
  - description: Cluster-admin organization provisioning for serving.
    name: Serving Tenants
    x-displayName: Serving Tenants
  - description: >-
      Cluster-admin managed catalog of serving runtime recipes. Registration
      stores a digest-pinned manifest; only enabled recipes are deployable.
    name: Serving Recipes
    x-displayName: Serving Recipes
  - description: Computed cost and spend aggregates.
    name: Spend
    x-displayName: Spend
paths:
  /api/v1/serving/runs:
    post:
      tags:
        - Fine-Tune Jobs
      summary: Create a run
      description: >-
        Rent one GPU node from one provider, start one container from a public
        image, and run the supplied bash script in it. Exactly one of the two
        budget forms is required: hours bounds time exactly and cost
        approximately, max_usd the reverse.
      operationId: createServingRun
      parameters:
        - name: X-On-Behalf-Of
          in: header
          required: false
          schema:
            type: string
          description: Optional external end-user identifier forwarded by the API gateway.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunCreate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
          description: The run, accepted and submitted for acquisition.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: Missing or invalid bearer token.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: Serving is not enabled for your tenant.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: Referenced tenant resource not found.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: A live deployment with this organization-scoped name already exists.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingHTTPValidationError'
          description: Validation Error
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: Unexpected server error.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServingError'
          description: Deployment persistence or a required dependency is unavailable.
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python (SDK)
          source: |-
            from meetkai_mka1 import SDK


            with SDK(
                bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
            ) as sdk:

                res = sdk.fine_tune_jobs.create_serving_run(accelerator="<value>", deadline={}, disk_gb=369181, gpu_count=444268, image="https://loremflickr.com/2112/3769?lock=8429739459860585", kind="deployment", startup_script_b64="<value>")

                # Handle response
                print(res)
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { SDK } from "@meetkai/mka1";

            const sdk = new SDK({
              bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
            });

            async function run() {
              const result = await sdk.fineTuneJobs.createServingRun({
                runCreate: {
                  accelerator: "<value>",
                  deadline: {},
                  diskGb: 369181,
                  gpuCount: 444268,
                  image: "https://loremflickr.com/2112/3769?lock=8429739459860585",
                  kind: "deployment",
                  startupScriptB64: "<value>",
                },
              });

              console.log(result);
            }

            run();
        - lang: csharp
          label: CSharp (SDK)
          source: >-
            using MeetKai.MKA1;

            using MeetKai.MKA1.Types.Components;


            var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");


            var res = await sdk.FineTuneJobs.CreateServingRunAsync(body: new
            RunCreate() {
                Accelerator = "<value>",
                Deadline = new RunDeadline() {},
                DiskGb = 369181,
                GpuCount = 444268,
                Image = "https://loremflickr.com/2112/3769?lock=8429739459860585",
                Kind = RunCreateKind.Deployment,
                StartupScriptB64 = "<value>",
            });


            // handle response
components:
  schemas:
    RunCreate:
      properties:
        accelerator:
          description: Curated accelerator name. GET /accelerators lists what is available.
          title: Accelerator
          type: string
        deadline:
          $ref: '#/components/schemas/RunDeadline'
        disk_gb:
          description: >-
            Required, no default. Must fit the image plus whatever the script
            downloads; too small and the pod dies mid-download.
          minimum: 1
          title: Disk Gb
          type: integer
        env:
          additionalProperties:
            type: string
          description: >-
            Environment for the workload. Keys in the MKA1_ namespace are
            reserved.
          title: Env
          type: object
        gpu_count:
          description: >-
            Accelerators on one node. V1 is single-node: multi-node clusters are
            not offered by the providers we support.
          maximum: 8
          minimum: 1
          title: Gpu Count
          type: integer
        image:
          description: >-
            Any public image. It must contain bash, and on providers where we
            install sshd it must be Debian-family with apt.
          title: Image
          type: string
        interconnect:
          description: >-
            Optional filter on intra-node topology, e.g. nvlink. Tensor-parallel
            work is materially slower over PCIe.
          title: Interconnect
          type: string
        kind:
          description: >-
            What the run is for. A fine-tune ends on its own and its exit code
            is the outcome; a deployment serves traffic and runs until it is
            deleted. They are one resource because they are one pod, one
            provider and one script — the kind selects terminal semantics, not a
            different machine.
          enum:
            - finetune
            - deployment
          title: Kind
          type: string
        name:
          title: Name
          type: string
        ports:
          description: >-
            Container ports to expose, e.g. "8000/http". Meaningful for a
            deployment, which serves traffic; a fine-tune has nothing to expose.
          items:
            type: string
          title: Ports
          type: array
        providers:
          description: >-
            Ordered preference, tried in turn. Rejected while provider anonymity
            is enabled, because the list is itself a provider-identity leak.
          items:
            type: string
          title: Providers
          type: array
        secrets:
          description: >-
            Stored secret ids resolved into the environment immediately before
            hand-off.
          items:
            type: string
          title: Secrets
          type: array
        ssh_public_key:
          description: >-
            Your own public key. We never generate or hold private key material.
            Omit and the run has no SSH.
          title: Ssh Public Key
          type: string
        startup_script_b64:
          description: >-
            Base64 bash. Run as a child process of our run script; its exit code
            is the run's outcome. Never interpreted.
          title: Startup Script B64
          type: string
      required:
        - kind
        - accelerator
        - gpu_count
        - image
        - startup_script_b64
        - disk_gb
        - deadline
      title: RunCreate
      type: object
    Run:
      properties:
        accelerator:
          title: Accelerator
          type: string
        created_at:
          type: string
          format: date-time
          title: Created At
        deadline_at:
          format: date-time
          title: Deadline At
          type: string
        endpoint:
          description: >-
            Where the workload serves, once it is running. Only a deployment
            declares ports, so only a deployment reports an endpoint.
          title: Endpoint
          type: string
        exit_code:
          description: >-
            The workload's exit status. Provider status is not trusted for this:
            one provider reports the VM rather than the container.
          title: Exit Code
          type: integer
        gpu_count:
          title: Gpu Count
          type: integer
        id:
          title: Id
          type: string
        image:
          title: Image
          type: string
        kind:
          description: >-
            What the run is for. A fine-tune ends on its own and its exit code
            is the outcome; a deployment serves traffic and runs until it is
            deleted. They are one resource because they are one pod, one
            provider and one script — the kind selects terminal semantics, not a
            different machine.
          enum:
            - finetune
            - deployment
          title: Kind
          type: string
        name:
          title: Name
          type: string
        price_usd_hr:
          title: Price Usd Hr
          type: number
        provider:
          title: Provider
          type: string
        reason:
          description: >-
            Why the run is in this state, e.g. ssh_setup_failed or
            budget_exhausted.
          title: Reason
          type: string
        ssh:
          $ref: '#/components/schemas/RunSSH'
        started_at:
          format: date-time
          title: Started At
          type: string
        state:
          enum:
            - requested
            - provisioning
            - running
            - succeeded
            - failed
            - terminated
          title: State
          type: string
        terminal_at:
          format: date-time
          title: Terminal At
          type: string
      required:
        - id
        - kind
        - state
        - created_at
      title: Run
      type: object
    ServingError:
      description: Standard error envelope.
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      required:
        - error
      title: ServingError
      type: object
    ServingHTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ServingValidationError'
          title: Detail
          type: array
      title: ServingHTTPValidationError
      type: object
    RunDeadline:
      description: >-
        Exactly one of hours or max_usd. Cost is rate x time and the rate is
        fixed at acquisition, so they are interchangeable — but they are not the
        same number. A max_usd deadline resolves only once acquisition fixes the
        rate.
      properties:
        hours:
          exclusiveMinimum: 0
          title: Hours
          type: number
        max_usd:
          exclusiveMinimum: 0
          title: Max Usd
          type: number
      required: []
      title: RunDeadline
      type: object
    RunSSH:
      description: >-
        Connection details. The login user is provider dependent and is read
        from the provider, never assumed.
      properties:
        command:
          description: >-
            Ready-to-use SSH invocation. Assembled here because the login user
            is provider dependent — it is read from the provider, never assumed
            — and rebuilding it by hand is where callers get it wrong.
          title: Command
          type: string
        host:
          title: Host
          type: string
        port:
          title: Port
          type: integer
        user:
          title: User
          type: string
      required:
        - host
        - port
        - user
        - command
      title: RunSSH
      type: object
    ErrorDetail:
      description: The body of an error response.
      properties:
        code:
          examples:
            - tenant_not_provisioned
          title: Code
          type: string
        message:
          type: string
          title: Message
        type:
          examples:
            - authorization_error
          title: Type
          type: string
      required:
        - code
        - message
        - type
      title: ErrorDetail
      type: object
    ServingValidationError:
      properties:
        loc:
          description: >-
            JSON path to the offending input: the first segment names where it
            lives ("body", "query", "path", or "request" when no narrower
            location is known), followed by property names / array indexes, e.g.
            ["body", "scaling", "min_containers"].
          items:
            anyOf:
              - type: string
              - type: integer
          title: Location
          type: array
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      required:
        - loc
        - msg
        - type
      title: ServingValidationError
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Gateway auth: send `Authorization: Bearer <mka1-api-key>`. For
        multi-user server-side integrations, you can also send `X-On-Behalf-Of:
        <external-user-id>`.

````