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

# Create a run

> Creates a Loops run with an associated sampler in the given session.



## OpenAPI

````yaml post /v1/loops/runs
openapi: 3.1.0
info:
  description: REST API for management of Baseten resources
  title: Baseten management API
  version: 1.0.0
servers:
  - url: https://api.baseten.co
security:
  - BearerAuth: []
paths:
  /v1/loops/runs:
    post:
      summary: Creates a Loops run
      description: Creates a Loops run with an associated sampler in the given session.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLoopsRunRequestV1'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateLoopsRunResponseV1'
      x-codeSamples:
        - lang: bash
          source: |-
            curl --request POST \
            --url https://api.baseten.co/v1/loops/runs \
            --header "Authorization: Bearer $BASETEN_API_KEY" \
            --data '{
              "session_id": null,
              "base_model": null,
              "name": null,
              "max_seq_len": null,
              "seed": null,
              "availability_model": "spot",
              "path": "bt://loops:k4q95w5/weights/step-100",
              "reuse_from_run_id": null,
              "reuse_from_session_id": null
            }'
        - lang: python
          source: |-
            import requests
            import os
            API_KEY = os.environ.get("BASETEN_API_KEY", "<YOUR_API_KEY>")
            url = "https://api.baseten.co/v1/loops/runs"

            headers = {"Authorization": f"Bearer {API_KEY}"}

            response = requests.request(
                "POST",
                url,
                headers=headers,
                json={'session_id': None, 'base_model': None, 'name': None, 'max_seq_len': None, 'seed': None, 'availability_model': 'spot', 'path': 'bt://loops:k4q95w5/weights/step-100', 'reuse_from_run_id': None, 'reuse_from_session_id': None}
            )

            print(response.text)
components:
  schemas:
    CreateLoopsRunRequestV1:
      properties:
        session_id:
          description: ID of the Loops session this run belongs to.
          title: Session Id
          type: string
        base_model:
          description: Base model ID (e.g. 'Qwen/Qwen3-8B').
          title: Base Model
          type: string
        name:
          anyOf:
            - maxLength: 255
              minLength: 1
              type: string
            - type: 'null'
          default: null
          description: >-
            Optional display name for the run. Defaults to the base model name
            when omitted.
          title: Name
        max_seq_len:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: >-
            Maximum prompt length (in tokens) the run must handle. Set this to
            the longest training example you plan to send. Defaults to the
            maximum supported by the model configuration.
          title: Max Seq Len
        lora_rank:
          default: 64
          description: LoRA rank.
          minimum: 1
          title: Lora Rank
          type: integer
        seed:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: Random seed for reproducibility.
          title: Seed
        scale_down_delay_seconds:
          default: 900
          description: >-
            Seconds of inactivity before the run scales to zero. Must be between
            1 and 3600 (1 hour). Defaults to 900 (15 minutes).
          exclusiveMinimum: 0
          maximum: 3600
          title: Scale Down Delay Seconds
          type: integer
        availability_model:
          $ref: '#/components/schemas/V1AvailabilityModel'
          default: dedicated
          description: >-
            Capacity the trainer runs on. 'dedicated' is not preempted. 'spot'
            runs below inference and reaches idle reserved capacity, but the run
            is stopped if its GPUs are reclaimed and cannot be resumed.
          examples:
            - spot
        replicas:
          default: 1
          description: >-
            Number of data-parallel trainer replicas. Each replica is one full
            copy of the model's preset node group, so the trainer deployment
            runs (preset node_count * replicas) nodes (e.g. replicas=4 on a
            4-node preset → 16 nodes, 4 DP workers). Must be a positive integer.
            Defaults to 1.
          minimum: 1
          title: Replicas
          type: integer
        path:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Optional bt:// URI of an existing checkpoint to load weights from on
            startup. Form: bt://loops:<run_id>/weights/<checkpoint_name>.
          examples:
            - bt://loops:k4q95w5/weights/step-100
          title: Path
        reuse_from_run_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Optional ID of a prior Loops run whose trainer and/or sampler should
            be reused for this run instead of provisioning fresh. The prior run
            must use the same base model and belong to the same team.
          title: Reuse From Run Id
        reuse_from_session_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Optional ID of a prior Loops session whose trainer and/or sampler
            should be reused for this run. Deprecated in favor of
            reuse_from_run_id.
          title: Reuse From Session Id
      required:
        - session_id
        - base_model
      title: CreateLoopsRunRequestV1
      type: object
    CreateLoopsRunResponseV1:
      properties:
        run:
          $ref: '#/components/schemas/LoopsRunV1'
      required:
        - run
      title: CreateLoopsRunResponseV1
      type: object
    V1AvailabilityModel:
      description: >-
        Capacity guarantee under which a training job is scheduled.


        ``DEDICATED`` is on-demand capacity that is not preempted (the default).
        ``SPOT`` is

        interruptible capacity that may be preempted; the user is responsible
        for checkpointing

        their own progress. A managed/resumable model where the platform handles

        checkpoint/resume on its own is intentionally not defined yet; it is
        planned for a

        future milestone.
      enum:
        - dedicated
        - spot
      title: V1AvailabilityModel
      type: string
    LoopsRunV1:
      properties:
        id:
          description: The run ID.
          title: Id
          type: string
        session_id:
          description: The session ID this run belongs to.
          title: Session Id
          type: string
        deployment_id:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: The ID of the Loops deployment the run executes on, if it has one.
          title: Deployment Id
        name:
          description: The run's display name.
          title: Name
          type: string
        base_model:
          description: The HuggingFace base model the run is fine-tuning.
          title: Base Model
          type: string
        base_url:
          description: The run's base URL.
          title: Base Url
          type: string
        created_at:
          description: Time the run was created in ISO 8601 format
          format: date-time
          title: Created At
          type: string
        status:
          $ref: '#/components/schemas/LoopsRunStatusV1'
          description: The run's current status.
        user:
          $ref: '#/components/schemas/UserV1'
          description: The user who owns the run.
        sampler:
          anyOf:
            - $ref: '#/components/schemas/LoopsSamplerV1'
            - type: 'null'
          default: null
          description: >-
            The sampler bound to this run, or null for a trainer-only run that
            has not yet created a sampler.
      required:
        - id
        - session_id
        - name
        - base_model
        - base_url
        - created_at
        - status
        - user
      title: LoopsRunV1
      type: object
    LoopsRunStatusV1:
      description: The current status of a Loops run.
      properties:
        name:
          $ref: '#/components/schemas/LoopsRunStatusNameV1'
          description: >-
            ACTIVE while the run is live; INACTIVE once replaced by a newer run
            or shut down.
      required:
        - name
      title: LoopsRunStatusV1
      type: object
    UserV1:
      description: A user.
      properties:
        email:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Email of the user.
          title: Email
      title: UserV1
      type: object
    LoopsSamplerV1:
      properties:
        id:
          title: Id
          type: string
        base_url:
          title: Base Url
          type: string
        base_model:
          description: The HuggingFace base model the sampler is serving.
          title: Base Model
          type: string
        created_at:
          description: Time the sampler was created in ISO 8601 format
          format: date-time
          title: Created At
          type: string
        model_id:
          description: Hashid of the underlying Baseten model.
          title: Model Id
          type: string
        deployment_id:
          description: Hashid of the specific model deployment (version).
          title: Deployment Id
          type: string
        status:
          $ref: '#/components/schemas/LoopsSamplerStatusV1'
          description: The sampler's current status.
        user:
          $ref: '#/components/schemas/UserV1'
          description: The user who owns the sampler.
        instance_type:
          anyOf:
            - $ref: '#/components/schemas/InstanceTypeV1'
            - type: 'null'
          default: null
          description: Instance type serving the sampler.
        node_count:
          default: 1
          description: Number of nodes serving the sampler.
          title: Node Count
          type: integer
      required:
        - id
        - base_url
        - base_model
        - created_at
        - model_id
        - deployment_id
        - status
        - user
      title: LoopsSamplerV1
      type: object
    LoopsRunStatusNameV1:
      description: 'A Loops run''s lifecycle state: ACTIVE or INACTIVE.'
      enum:
        - ACTIVE
        - INACTIVE
      title: LoopsRunStatusNameV1
      type: string
    LoopsSamplerStatusV1:
      description: The current status of a Loops sampler.
      properties:
        name:
          $ref: '#/components/schemas/DeploymentStatusV1'
          description: The current status of the Loops sampler.
      required:
        - name
      title: LoopsSamplerStatusV1
      type: object
    InstanceTypeV1:
      description: An instance type.
      properties:
        id:
          description: Identifier string for the instance type
          title: Id
          type: string
        name:
          description: Display name of the instance type
          title: Name
          type: string
        memory_limit_mib:
          description: Memory limit of the instance type in Mebibytes
          title: Memory Limit Mib
          type: integer
        millicpu_limit:
          description: CPU limit of the instance type in millicpu
          title: Millicpu Limit
          type: integer
        gpu_count:
          description: Number of GPUs on the instance type
          title: Gpu Count
          type: integer
        gpu_type:
          anyOf:
            - type: string
            - type: 'null'
          description: Type of GPU on the instance type
          title: Gpu Type
        gpu_memory_limit_mib:
          anyOf:
            - type: integer
            - type: 'null'
          description: Memory limit of the GPU on the instance type in Mebibytes
          title: Gpu Memory Limit Mib
      required:
        - id
        - name
        - memory_limit_mib
        - millicpu_limit
        - gpu_count
        - gpu_type
        - gpu_memory_limit_mib
      title: InstanceTypeV1
      type: object
    DeploymentStatusV1:
      description: The status of a deployment.
      enum:
        - BUILDING
        - DEPLOYING
        - DEPLOY_FAILED
        - LOADING_MODEL
        - ACTIVE
        - UNHEALTHY
        - BUILD_FAILED
        - BUILD_STOPPED
        - DEACTIVATING
        - INACTIVE
        - FAILED
        - UPDATING
        - SCALED_TO_ZERO
        - WAKING_UP
      title: DeploymentStatusV1
      type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send `Authorization: Bearer <api_key>`. The legacy `Authorization:
        Api-Key <api_key>` scheme is also accepted.

````