NVIDIA Run:ai Distributed API

Distributed Training, is the ability to split the training of a model among multiple processors. It is often a necessity when multi-GPU training no longer applies; typically when you require more GPUs than exist on a single node. Each such split is a pod (see definition above). NVIDIA Run:ai spawns an additional launcher process that manages and coordinates the other worker pods. For more information, see [Distributed training](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/using-training/distributed-training/distributed-training-models).

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/runai-distributed-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

runai-distributed-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: latest
  description: '# Introduction


    The NVIDIA Run:ai Control-Plane API reference is a guide that provides an easy-to-use programming interface for adding various tasks to your application, including workload submission, resource management, and administrative operations.


    NVIDIA Run:ai APIs are accessed using *bearer tokens*. To obtain a token, you need to create a **Service account** through the NVIDIA Run:ai user interface.

    To create a service account, in your UI, go to Access → Service Accounts (for organization-level service accounts) or User settings → Access Keys (for user access keys), and create a new one.


    After you have created a new service account, you will need to assign it access rules.

    To assign access rules to the service account, see [Create access rules](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/accessrules#create-or-delete-rules).

    Make sure you assign the correct rules to your service account. Use the [Roles](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/roles) to assign the correct access rules.


    To get your access token, follow the instructions in [Request a token](https://run-ai-docs.nvidia.com/saas/reference/api/rest-auth/#request-an-api-token).

    '
  title: NVIDIA Run:ai Access Keys Distributed API
  x-logo:
    url: https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png
    altText: NVIDIA Run:ai
    href: https://run.ai
  license:
    name: NVIDIA Run:ai
    url: https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/
servers:
- url: https://app.run.ai
security:
- bearerAuth: []
tags:
- name: Distributed
  description: "Distributed Training, is the ability to split the training of a model among multiple processors. \nIt is often a necessity when multi-GPU training no longer applies; \ntypically when you require more GPUs than exist on a single node. \nEach such split is a pod (see definition above). NVIDIA Run:ai spawns an additional launcher process that manages and \ncoordinates the other worker pods. For more information, see [Distributed training](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/using-training/distributed-training/distributed-training-models).\n"
paths:
  /api/v1/workloads/distributed:
    post:
      summary: Create a distributed training.
      description: Use to create a distributed training.
      operationId: create_distributed
      tags:
      - Distributed
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DistributedCreationRequest'
      responses:
        '202':
          description: Request completed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedWorkload'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/distributed/{workloadId}:
    delete:
      summary: Delete a distributed training by id.
      description: Use to delete a distributed training by workload id.
      operationId: delete_distributed
      tags:
      - Distributed
      parameters:
      - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
    get:
      summary: Get distributed training's data. [Experimental]
      description: Retrieve the details of a distributed training by workload id.
      operationId: get_distributed
      tags:
      - Distributed
      parameters:
      - $ref: '#/components/parameters/WorkloadId'
      responses:
        '200':
          description: Executed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DistributedWorkload'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/distributed/{workloadId}/suspend:
    post:
      summary: Suspend a distributed training.
      operationId: suspend_distributed
      description: Suspend a distributed training from running using a workload id.
      tags:
      - Distributed
      parameters:
      - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v1/workloads/distributed/{workloadId}/resume:
    post:
      summary: Resume a distributed training.
      operationId: resume_distributed
      description: Resume a distributed training that was suspended using a workload id.
      tags:
      - Distributed
      parameters:
      - $ref: '#/components/parameters/WorkloadId'
      responses:
        '202':
          $ref: '#/components/responses/202Accepted'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
components:
  schemas:
    PodAffinity:
      description: Pod affinity scheduling rules (e.g. co-locate this workload in the same node, zone, etc. as some other workloads).
      type:
      - object
      - 'null'
      properties:
        type:
          $ref: '#/components/schemas/PodAffinityType'
        key:
          description: The label key to use. (mandatory)
          type:
          - string
          - 'null'
          pattern: .*
    Capability:
      type: string
      enum:
      - AUDIT_CONTROL
      - AUDIT_READ
      - AUDIT_WRITE
      - BLOCK_SUSPEND
      - CHOWN
      - DAC_OVERRIDE
      - DAC_READ_SEARCH
      - FOWNER
      - FSETID
      - IPC_LOCK
      - IPC_OWNER
      - KILL
      - LEASE
      - LINUX_IMMUTABLE
      - MAC_ADMIN
      - MAC_OVERRIDE
      - MKNOD
      - NET_ADMIN
      - NET_BIND_SERVICE
      - NET_BROADCAST
      - NET_RAW
      - SETGID
      - SETFCAP
      - SETPCAP
      - SETUID
      - SYS_ADMIN
      - SYS_BOOT
      - SYS_CHROOT
      - SYS_MODULE
      - SYS_NICE
      - SYS_PACCT
      - SYS_PTRACE
      - SYS_RAWIO
      - SYS_RESOURCE
      - SYS_TIME
      - SYS_TTY_CONFIG
      - SYSLOG
      - WAKE_ALARM
    NodeAffinityRequired:
      type:
      - object
      - 'null'
      description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
      properties:
        nodeSelectorTerms:
          description: A list of node selector terms. The terms are ORed.
          type: array
          items:
            $ref: '#/components/schemas/NodeSelectorTerm'
    SupplementalGroups:
      description: Comma separated list of groups that the user running the container belongs to, in addition to the group indicated by runAsGid. Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled. Using an empty string implies reverting the supplementary groups of the image.
      type:
      - string
      - 'null'
      example: 2,3,5,8
      pattern: .*
    Tolerations:
      description: Set of tolerations to apply to the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Toleration'
    ImagePullPolicy:
      description: Image pull policy. Defaults to `Always` if `:latest` tag is specified, otherwise it is `IfNotPresent`.
      type:
      - string
      - 'null'
      minLength: 1
      enum:
      - Always
      - Never
      - IfNotPresent
    UidGidSource:
      description: Indicate the way to determine the user and group ids of the container. The options are a. `fromTheImage` - user and group ids are determined by the docker image that the container runs. this is the default option. b. `custom` - user and group ids can be specified in the environment asset and/or the workload creation request. c. `idpToken` - user and group IDs are automatically taken from the identity provider (IdP) token (available only in SSO-enabled installations). For more information, see [User Identity](https://docs.run.ai/latest/admin/runai-setup/config/non-root-containers/).
      type:
      - string
      - 'null'
      enum:
      - fromTheImage
      - fromIdpToken
      - custom
    MaxReplicas:
      description: the upper limit for the number of worker pods that can be set by the autoscaler. Cannot be smaller than MinReplicas. (applicable only for PyTorch)
      type:
      - integer
      - 'null'
    TerminationGracePeriod:
      description: Duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down).
      format: int64
      type:
      - integer
      - 'null'
      minimum: 0
      example: 20
    Label:
      description: Label details to be populated into the container.
      properties:
        name:
          description: The name of the label (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          maxLength: 63
          example: stage
          pattern: .*
        value:
          description: The value of the label.
          type:
          - string
          - 'null'
          example: initial-research
          pattern: .*
        exclude:
          description: Use 'true' in case the label is defined in defaults of the policy, and you wish to exclude it from the workload.
          type:
          - boolean
          - 'null'
          example: false
      type:
      - object
      - 'null'
    ProbeHandler:
      description: The action taken to determine the health of the container. (mandatory)
      type:
      - object
      - 'null'
      properties:
        httpGet:
          description: An action based on HTTP Get requests.
          type: object
          properties:
            path:
              description: Path to access on the HTTP server, defaults to /.
              type:
              - string
              - 'null'
              pattern: ^(\x2F[a-zA-Z0-9\-_.\x2F]*)?$
              example: /
            port:
              description: Number of the port to access on the container.
              type:
              - integer
              - 'null'
              format: int32
              minimum: 1
              maximum: 65535
            host:
              description: Host name to connect to, defaults to the pod IP.
              type:
              - string
              - 'null'
              format: hostname
              example: example.com
              pattern: .*
            scheme:
              $ref: '#/components/schemas/ProbeHandlerScheme'
    EnvironmentVariablePodFieldReference:
      description: Details of the field-reference and key use to populate the environment variable
      properties:
        path:
          description: The field path resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: metadata.name
          pattern: .*
      type:
      - object
      - 'null'
    Labels:
      description: Set of labels to populate into the container running the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Label'
    ImagePullSecrets:
      description: A list of references to Kubernetes secrets in the same namespace used for pulling container images.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/ImagePullSecret'
    SecretFieldsNonUpdatable:
      properties:
        secret:
          description: The name of the Secret resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
      type:
      - object
      - 'null'
    CpuMemoryLimit:
      description: Limitations on the CPU memory to allocate for this workload (1G, 20M, .etc). The system guarantees that this workload will not be able to consume more than this amount of memory. The workload will receive an error when trying to allocate more memory than this limit.
      type:
      - string
      - 'null'
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 30M
    GitInstance:
      allOf:
      - $ref: '#/components/schemas/StorageInstanceName'
      - $ref: '#/components/schemas/GitCommon'
      - $ref: '#/components/schemas/GitPassword'
      - $ref: '#/components/schemas/ExcludeField'
      - type:
        - object
        - 'null'
        properties:
          secretRef:
            $ref: '#/components/schemas/GitSecretRef'
      type:
      - object
      - 'null'
    NfsInstance:
      allOf:
      - $ref: '#/components/schemas/StorageInstanceName'
      - $ref: '#/components/schemas/Nfs'
      - $ref: '#/components/schemas/ExcludeField'
      type:
      - object
      - 'null'
    PortServiceType:
      description: The service type of the port (mandatory).
      type:
      - string
      - 'null'
      enum:
      - LoadBalancer
      - NodePort
      - ClusterIP
    DistributedFramework:
      description: The distributed training framework used in the workload.
      type:
      - string
      - 'null'
      enum:
      - MPI
      - PyTorch
      - TF
      - XGBoost
      - JAX
    EnvironmentVariableUserCredential:
      description: Defines a reference to a user-created credential and a specific key within that credential whose value will populate the environment variable. User credentials can only be accessed by the user who created them.
      properties:
        name:
          description: The name of the user credential.  (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: my_postgres_user_and_password
        key:
          description: The key in the user credential resource. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: POSTGRES_PASSWORD
      type:
      - object
      - 'null'
    HostNetwork:
      description: Whether to enable host networking. Default to false.
      type:
      - boolean
      - 'null'
      example: false
    Args:
      description: Arguments to the command that the container running the workload executes.
      type:
      - string
      - 'null'
      minLength: 1
      example: -x my-script.py
      pattern: .*
    Phase:
      type: string
      enum:
      - Creating
      - Initializing
      - Resuming
      - Pending
      - Deleting
      - Running
      - Updating
      - Stopped
      - Stopping
      - Degraded
      - Failed
      - Completed
      - Terminating
      - Unknown
    SeccompProfileType:
      description: Indicates which kind of seccomp profile will be applied to the container. The options are a. `RuntimeDefault` - the container runtime default profile should be used. b. `Unconfined` - no profile should be applied. c. `Localhost` is not yet supported by Run:ai.
      type:
      - string
      - 'null'
      enum:
      - RuntimeDefault
      - Unconfined
      - Localhost
    AutoDeletionTimeAfterPreemptionMaster:
      description: Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.
      format: int64
      type:
      - integer
      - 'null'
      example: 15
      deprecated: true
    NumWorkers:
      description: the number of workers that will be allocated for running the workload.
      type:
      - integer
      - 'null'
      minimum: 1
    AutoDeletionTimeAfterPreemption:
      description: Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.
      format: int64
      type:
      - integer
      - 'null'
      example: 15
    MinReplicas:
      description: the lower limit for the number of worker pods to which the training job can scale down. (applicable only for PyTorch)
      type:
      - integer
      - 'null'
    EmptyDir:
      properties:
        path:
          description: Local path within the workload to which the EmptyDir volume will be mapped. (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          example: /mnt/emptydir
          pattern: .*
        medium:
          description: The type of storage medium for the volume. Use "Memory" for memory-backed storage, or leave empty for disk-backed storage.
          type:
          - string
          - 'null'
          minLength: 1
          pattern: .*
        sizeLimit:
          description: The total amount of local storage or memory required for the emptyDir volume. Specify using Kubernetes quantity format (e.g., 1G, 500Mi).
          type:
          - string
          - 'null'
          pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
          example: 1G
      type:
      - object
      - 'null'
    ComplianceIssuesV2:
      properties:
        complianceIssues:
          type: array
          items:
            type: object
            required:
            - details
            - field
            properties:
              field:
                type: string
                example: compute.gpuDevicesRequest
              details:
                type: string
                example: value must be no less than 3
              rule:
                $ref: '#/components/schemas/PolicyRuleEnum'
      type:
      - object
      - 'null'
    DistributedWorkload:
      allOf:
      - $ref: '#/components/schemas/WorkloadMeta1'
      - $ref: '#/components/schemas/DistributedSpec'
    SlotsPerWorker:
      description: Specifies the number of slots per worker used in hostfile. Defaults to 1. (applicable only for MPI)
      type:
      - integer
      - 'null'
      minimum: 1
      default: 1
    HostPathItems:
      description: Set of host paths to use in the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/HostPathInstance'
    PriorityClassMaster:
      description: 'Specifies the priority class for the workload, which determines its scheduling behavior. Valid values are: very-low, low, medium-low, medium, medium-high, high, and very-high. Each workload type has a default priority. To view the default priority for each workload type, use the GET /workload-types endpoint. Once you change the priority from the default value defined for that workload type, the preemptibility field is not automatically updated. Make sure to set the desired preemptibility value.'
      type:
      - string
      - 'null'
      pattern: .*
      deprecated: true
    Annotations:
      description: Set of annotations to populate into the container running the workload.
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/Annotation'
    PodAffinityType:
      description: The affinity type, required or preferred. (mandatory)
      type:
      - string
      - 'null'
      enum:
      - Required
      - Preferred
    DistributedSpec:
      description: The specifications of the training to be created.
      properties:
        spec:
          $ref: '#/components/schemas/DistributedSpecSpec'
        masterSpecSameAsWorker:
          $ref: '#/components/schemas/MasterSpecSameAsWorker'
        masterSpec:
          $ref: '#/components/schemas/MasterSpec'
    Annotation:
      description: Annotation details to be populated into the container.
      properties:
        name:
          description: The name of the annotation (mandatory)
          type:
          - string
          - 'null'
          minLength: 1
          maxLength: 63
          example: billing
          pattern: .*
        value:
          description: The value of the annotation.
          type:
          - string
          - 'null'
          example: my-billing-unit
          pattern: .*
        exclude:
          description: Use 'true' in case the annotation is defined in defaults of the policy, and you wish to exclude it from the workload.
          type:
          - boolean
          - 'null'
          default: false
          example: false
      type:
      - object
      - 'null'
    GitPassword:
      properties:
        passwordSecret:
          description: Secret containing the credentials of the repository (needed for non public repository which requires authentication). (deprecated)
          type:
          - string
          - 'null'
          minLength: 1
          example: my-password-secret
        secretKeyOfUser:
          description: The key to use for loading the user name from the secret. The default is `User`. (deprecated)
          type:
          - string
          - 'null'
          minLength: 1
          example: User
        secretKeyOfPassword:
          description: The key to use for loading the password from the secret. The default is `Password`. (deprecated)
          type:
          - string
          - 'null'
          minLength: 1
          example: Password
      type:
      - object
      - 'null'
    AllowPrivilegeEscalation:
      description: Allow the container running the workload and all launched processes to gain additional privileges after the workload starts. For more information consult the User Identity in Container guide at https://docs.run.ai/admin/runai-setup/config/non-root-containers/
      type:
      - boolean
      - 'null'
      example: false
    DataVolumeInstance:
      allOf:
      - $ref: '#/components/schemas/DataVolume'
      - $ref: '#/components/schemas/ExcludeField'
      type:
      - object
      - 'null'
    RunAsUid:
      description: The user id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsUid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.
      type:
      - integer
      - 'null'
      format: int64
      example: 500
    DistributedSpecSpec:
      allOf:
      - properties:
          annotations:
            $ref: '#/components/schemas/Annotations'
          args:
            $ref: '#/components/schemas/Args'
          autoDeletionTimeAfterCompletionSeconds:
            $ref: '#/components/schemas/AutoDeletionTimeAfterPreemption'
          backoffLimit:
            $ref: '#/components/schemas/BackoffLimit'
          category:
            $ref: '#/components/schemas/Category'
          cleanPodPolicy:
            $ref: '#/components/schemas/CleanPodPolicy'
          command:
            $ref: '#/components/schemas/Command'
          compute:
            properties:
              cpuCoreLimit:
                $ref: '#/components/schemas/CpuCoreLimit'
              cpuCoreRequest:
                $ref: '#/components/schemas/CpuCoreRequest'
              cpuMemoryLimit:
                $ref: '#/components/schemas/CpuMemoryLimit'
              cpuMemoryRequest:
                $ref: '#/components/schemas/CpuMemoryRequest'
              extendedResources:
                $ref: '#/components/schemas/ExtendedResources'
              gpuDevicesRequest:
                $ref: '#/components/schemas/GpuDevicesRequest'
              gpuMemoryLimit:
                $ref: '#/components/schemas/GpuMemoryLimit'
              gpuMemoryRequest:
                $ref: '#/components/schemas/GpuMemoryRequest'
              gpuPortionLimit:
                $ref: '#/components/schemas/GpuPortionLimit'
              gpuPortionRequest:
                $ref: '#/components/schemas/GpuPortionRequest'
              gpuRequestType:
                $ref: '#/components/schemas/GpuRequestType'
              largeShmRequest:
                $ref: '#/components/schemas/LargeShmRequest'
            type:
            - object
            - 'null'
          createHomeDir:
            $ref: '#/components/schemas/CreateHomeDir'
          distributedFramework:
            $ref: '#/components/schemas/DistributedFramework'
          environmentVariables:
            $ref: '#/components/schemas/EnvironmentVariables'
          exposedUrls:
            $ref: '#/components/schemas/ExposedUrls'
          image:
            $ref: '#/components/schemas/Image'
          imagePullPolicy:
            $ref: '#/components/schemas/ImagePullPolicy'
          imagePullSecrets:
            $ref: '#/components/schemas/ImagePullSecrets'
          labels:
            $ref: '#/components/schemas/Labels'
          maxReplicas:
            $ref: '#/components/schemas/MaxReplicas'
          minReplicas:
            $ref: '#/components/schemas/MinReplicas'
          mpiLauncherCreationPolicy:
            $ref: '#/components/schemas/MpiLauncherCreationPolicy'
          nodeAffinityRequired:
            $ref: '#/components/schemas/NodeAffinityRequired'
          nodePools:
            $ref: '#/components/schemas/NodePools'
          nodeType:
            $ref: '#/components/schemas/NodeType3'
          numWorkers:
            $ref: '#/components/schemas/NumWorkers'
          podAffinity:
            $ref: '#/components/schemas/PodAffinity'
          ports:
            $ref: '#/components/schemas/Ports'
          preemptibility:
            $ref: '#/components/schemas/Preemptibility'
          priorityClass:
            $ref: '#/components/schemas/PriorityClass'
          probes:
            $ref: '#/components/schemas/Probes'
          relatedUrls:
            $ref: '#/components/schemas/RelatedUrls'
          restartPolicy:
            $ref: '#/components/schemas/RestartPolicy'
          security:
            properties:
              allowPrivilegeEscalation:
                $ref: '#/components/schemas/AllowPrivilegeEscalation'
              capabilities:
                $ref: '#/components/schemas/Capabilities'
              hostIpc:
                $ref: '#/components/schemas/HostIpc'
              hostNetwork:
                $ref: '#/components/schemas/HostNetwork'
              readOnlyRootFilesystem:
                $ref: '#/components/schemas/ReadOnlyRootFileSystem'
              runAsGid:
                $ref: '#/components/schemas/RunAsGid'
              runAsNonRoot:
                $ref: '#/components/schemas/RunAsNonRoot'
              runAsUid:
                $ref: '#/components/schemas/RunAsUid'
              seccompProfileType:
                $ref: '#/components/schemas/SeccompProfileType'
              supplementalGroups:
                $ref: '#/components/schemas/SupplementalGroups'
              uidGidSource:
                $ref: '#/components/schemas/UidGidSource'
            type:
            - object
            - 'null'
          slotsPerWorker:
            $ref: '#/components/schemas/SlotsPerWorker'
          sshAuthMountPath:
            $ref: '#/components/schemas/SshAuthMountPath'
          stdin:
            $ref: '#/components/schemas/Stdin'
          storage:
            properties:
              configMapVolume:
                $ref: '#/components/schemas/ConfigMapItems'
              dataVolume:
                $ref: '#/components/schemas/DataVolumeItems'
              emptyDirVolume:
                $ref: '#/components/schemas/EmptyDirItems'
              git:
                $ref: '#/components/schemas/GitItems'
              hostPath:
                $ref: '#/components/schemas/HostPathItems'
              nfs:
                $ref: '#/components/schemas/NfsItems'
              pvc:
                $ref: '#/components/schemas/PvcItems'
              s3:
                $ref: '#/components/schemas/S3Items'
              secretVolume:
                $ref: '#/components/schemas/SecretItems1'
            type:
            - object
            - 'null'
          terminateAfterPreemption:
            $ref: '#/components/schemas/TerminateAfterPreemption'
          terminationGracePeriodSeconds:
            $ref: '#/components/schemas/TerminationGracePeriod'
          tolerations:
            $ref: '#/components/schemas/Tolerations'
          tty:
            $ref: '#/components/schemas/Tty'
          workingDir:
            $ref: '#/components/schemas/WorkingDir'
        type:
        - object
        - 'null'
    ReadOnlyRootFileSystem:
      description: If true, mounts the container's root filesystem as read-only.
      type:
      - boolean
      - 'null'
      example: false
    PvcVolumeMode:
      description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
      type:
      - string
      - 'null'
      enum:
      - Filesystem
      - Block
    ConfigMapInstance:
      allOf:
      - $ref: '#/components/schemas/StorageInstanceName'
      - $ref: '#/components/schemas/ConfigMap'
      - $ref: '#/components/schemas/ExcludeField'
      type:
      - object
      - 'null'
    RelatedUrl:
      description: A URL that is related to the workload. For example, a URL to an external server providing statistics or logging about the workload.
      properties:
        url:
          description: The URL for connecting an external service related to the workload. (mandatory)
          type:
          - string
          - 'null'
          example: https://my-url.com
          pattern: .*
        type:
          description: The type of service that the url provides. For example, wandb (Weights & Biases). (mandatory)
          type:
          - string
          - 'null'
          example: wandb
          pattern: .*
        name:
          description: Unique name to identify the instance. primarily used for policy locked rules.
          type:
          - string
          - 'null'
          example: url-instance-a
          pattern: .*
        exclude:
          description: Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.
          type:
          - boolean
          - 'null'
          default: false
          example: false
      type:
      - object
      - 'null'
    BackoffLimit:
      description: Specifies the number of retries before marking a workload as failed (not applicable to Inference workloads). The default value is 6.
      format: int64
      type:
      - integer
      - 'null'
      example: 3
    NodePools:
      description: A prioritized list of node pools for the scheduler to run the workload on. The scheduler will always try to use the first node pool before moving to the next one if the first is not available.
      type:
      - array
      - 'null'
      items:
        type: string
        pattern: .*
      example:
      - my-node-pool-a
      - my-node-pool-b
    PvcClaimSize:
      description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MI

# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/runai/refs/heads/main/openapi/runai-distributed-api-openapi.yml