NVIDIA Run:ai NVIDIA NIM API

The NVIDIA NIM API provides endpoints to create and manage workloads that deploy NVIDIA Inference Microservices (NIM) through the NIM Operator. These workloads package optimized NVIDIA model servers and run as managed services on the NVIDIA Run:ai platform. Each request includes NVIDIA Run:ai scheduling metadata (for example, project, priority, and category) and a NIM service specification that defines the container image, compute resources, environment variables, storage, and networking configuration. Once submitted, NVIDIA Run:ai handles scheduling, orchestration, and lifecycle management of the NIM service to ensure reliable and efficient model serving.

OpenAPI Specification

runai-nvidia-nim-api-openapi.yml Raw ↑
openapi: 3.0.3
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 NVIDIA NIM 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: NVIDIA NIM
  description: 'The NVIDIA NIM API provides endpoints to create and manage workloads that deploy NVIDIA Inference Microservices (NIM) through the NIM Operator. These workloads package optimized NVIDIA model servers and run as managed services on the NVIDIA Run:ai platform.

    Each request includes NVIDIA Run:ai scheduling metadata (for example, project, priority, and category) and a NIM service specification that defines the container image, compute resources, environment variables, storage, and networking configuration. Once submitted, NVIDIA Run:ai handles scheduling, orchestration, and lifecycle management of the NIM service to ensure reliable and efficient model serving.

    '
paths:
  /api/v2/workloads/nim-services:
    post:
      summary: Create a NVIDIA NIM service. [Experimental]
      description: Create a NVIDIA NIM service
      operationId: create_nim_service
      tags:
      - NVIDIA NIM
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServiceCreateRequest'
      responses:
        '202':
          description: Workload creation accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '400':
          $ref: '#/components/responses/400SubmissionErrorV2'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '409':
          $ref: '#/components/responses/409Conflict'
        '500':
          $ref: '#/components/responses/500InternalServerError'
        '503':
          $ref: '#/components/responses/503ServiceUnavailable'
  /api/v2/workloads/nim-services/{WorkloadV2Id}:
    get:
      summary: Get a NVIDIA NIM service. [Experimental]
      description: Retrieve details of a specific NVIDIA NIM service, by id
      operationId: get_nim_service_by_id
      tags:
      - NVIDIA NIM
      parameters:
      - $ref: '#/components/parameters/WorkloadV2Id'
      responses:
        '200':
          description: Successfully retrieved the workload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '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'
    patch:
      summary: Update NVIDIA NIM service spec. [Experimental]
      operationId: update_nim_service_spec
      description: Update the specification of an existing NVIDIA NIM service.
      tags:
      - NVIDIA NIM
      parameters:
      - $ref: '#/components/parameters/WorkloadV2Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NimServiceUpdateRequest'
      responses:
        '202':
          description: Workload update request accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NimServiceResponse'
        '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:
    Category:
      description: Specify the workload category assigned to the workload. Categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.
      type: string
      nullable: true
      pattern: .*
    Probe:
      type: object
      properties:
        initialDelaySeconds:
          description: Number of seconds after the container has started before liveness or readiness probes are initiated.
          type: integer
          format: int32
          minimum: 0
          nullable: true
        periodSeconds:
          description: How often (in seconds) to perform the probe.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        timeoutSeconds:
          description: Number of seconds after which the probe times out.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        successThreshold:
          description: Minimum consecutive successes for the probe to be considered successful after having failed.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        failureThreshold:
          description: When a probe fails, the number of times to try before giving up.
          type: integer
          format: int32
          minimum: 1
          nullable: true
        handler:
          $ref: '#/components/schemas/ProbeHandler'
      nullable: true
    Labels:
      description: Set of labels to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/Label'
      nullable: true
    Error:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          minimum: 100
          maximum: 599
        message:
          type: string
        details:
          type: string
      example:
        code: 400
        message: Bad request - Resource should have a name
    DepartmentName1:
      type: string
      description: The name of the department
      example: default
      minLength: 1
      pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
    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
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 30M
      nullable: true
    PvcClaimSize:
      description: 'Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB'
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 1G
      nullable: true
    PvcAddedAttrValues:
      description: an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).
      type: array
      items:
        $ref: '#/components/schemas/PvcAddedAttrValue'
    Toleration:
      description: Toleration details.
      properties:
        name:
          description: The name of the toleration.
          type: string
          minLength: 1
          nullable: true
          pattern: .*
        operator:
          $ref: '#/components/schemas/TolerationOperator'
        key:
          description: The taint key that the toleration applies to. (mandatory)
          type: string
          nullable: true
          pattern: .*
        value:
          description: The taint value the toleration matches to. Mandatory if operator is Exists, forbidden otherwise.
          type: string
          nullable: true
          pattern: .*
        effect:
          $ref: '#/components/schemas/TolerationEffect'
        seconds:
          description: The period of time the toleration tolerates the taint. Valid only if effect is NoExecute. taint.
          type: integer
          minimum: 1
          nullable: true
        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
          example: false
          nullable: true
      nullable: true
      type: object
    ClusterId:
      description: The id of the cluster.
      type: string
      format: uuid
      example: 71f69d83-ba66-4822-adf5-55ce55efd210
    GpuMemoryRequest:
      description: Required if and only if gpuRequestType is memory. States the GPU memory to allocate for the created workload, per GPU device. Note that the workload will not be scheduled unless the system can guarantee this amount of GPU memory to the workload.
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 10M
      nullable: true
    NimServiceUpdateRequest:
      type: object
      required:
      - spec
      properties:
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
    NimServicePvcFields:
      properties:
        existingPvc:
          description: Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.
          type: boolean
          default: false
          nullable: true
        claimName:
          description: Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.
          type: string
          minLength: 1
          maxLength: 63
          example: my-claim
          nullable: true
          pattern: .*
        readOnly:
          description: Permit only read access to PVC.
          type: boolean
          default: false
          nullable: true
        claimInfo:
          $ref: '#/components/schemas/ClaimInfo'
      nullable: true
      type: object
    ServingPortServiceType:
      description: The type of Kubernetes service to create for the inference deployment. Options include 'ClusterIP' (default), 'NodePort', 'LoadBalancer', and 'ExternalName'.
      type: string
      default: ClusterIP
      enum:
      - ClusterIP
      - NodePort
      - LoadBalancer
      - ExternalName
      nullable: true
    EnvironmentVariable:
      description: Details of an environment variable which is populated into the container.
      properties:
        name:
          description: The name of the environment variable. (mandatory)
          type: string
          minLength: 1
          example: HOME
          nullable: true
          pattern: .*
        value:
          description: The value of the environment variable. (mutually exclusive with secret, userCredential, configMap and podFieldRef)
          type: string
          example: /home/my-folder
          nullable: true
          pattern: .*
        secret:
          $ref: '#/components/schemas/EnvironmentVariableSecret'
        configMap:
          $ref: '#/components/schemas/EnvironmentVariableConfigMap'
        podFieldRef:
          $ref: '#/components/schemas/EnvironmentVariablePodFieldReference'
        userCredential:
          $ref: '#/components/schemas/EnvironmentVariableUserCredential'
        exclude:
          description: Use 'true' in case the environment variable is defined in defaults of the policy, and you wish to exclude it from the workload.
          type: boolean
          example: false
          nullable: true
        description:
          description: Description of the environment variable.
          type: string
          example: Home directory of the user.
          nullable: true
          pattern: .*
      nullable: true
      type: object
    RunAsGid:
      description: The group id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsGid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.
      type: integer
      format: int64
      example: 30
      nullable: true
    EnvironmentVariableSecret:
      description: Details of the secret and key use to populate the environment variable
      properties:
        name:
          description: The name of the secret resource. (mandatory)
          type: string
          minLength: 1
          example: postgress_secret
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        key:
          description: The key in the secret resource. (mandatory)
          type: string
          minLength: 1
          example: POSTGRES_PASSWORD
          nullable: true
          pattern: .*
      nullable: true
      type: object
    WorkloadV2MetadataResponse:
      type: object
      required:
      - name
      - projectId
      properties:
        name:
          $ref: '#/components/schemas/WorkloadName'
        projectId:
          $ref: '#/components/schemas/ProjectId'
        priority:
          $ref: '#/components/schemas/PriorityClass'
        category:
          $ref: '#/components/schemas/Category'
        preemptibility:
          $ref: '#/components/schemas/Preemptibility'
    ServingPortExposeExternally:
      description: Indicates whether the inference serving endpoint should be accessible outside the cluster. If set to true, the endpoint will be exposed externally. To enable external access, your administrator must configure the cluster as described in the [inference requirements](https://run-ai-docs.nvidia.com/saas/getting-started/installation/system-requirements#inference). section.
      type: boolean
      nullable: true
      default: true
    Annotations:
      description: Set of annotations to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/Annotation'
      nullable: true
    ProbeHandler:
      description: The action taken to determine the health of the container. (mandatory)
      type: object
      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
              pattern: ^(\x2F[a-zA-Z0-9\-_.\x2F]*)?$
              example: /
              nullable: true
            port:
              description: Number of the port to access on the container.
              type: integer
              format: int32
              minimum: 1
              maximum: 65535
              nullable: true
            host:
              description: Host name to connect to, defaults to the pod IP.
              type: string
              format: hostname
              example: example.com
              nullable: true
              pattern: .*
            scheme:
              $ref: '#/components/schemas/ProbeHandlerScheme'
      nullable: true
    WorkloadId3:
      description: A unique ID of the workload.
      type: string
      format: uuid
    TolerationEffect:
      description: The taint effect to match. (mandatory)
      type: string
      enum:
      - NoSchedule
      - NoExecute
      - PreferNoSchedule
      - Any
      nullable: true
    ImagePullPolicy:
      description: Image pull policy. Defaults to `Always` if `:latest` tag is specified, otherwise it is `IfNotPresent`.
      type: string
      minLength: 1
      enum:
      - Always
      - Never
      - IfNotPresent
      nullable: true
    WorkloadName:
      description: The name of the workload.
      type: string
      minLength: 1
      example: my-workload-name
      pattern: .*
    ClaimInfo:
      description: Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.
      properties:
        size:
          $ref: '#/components/schemas/PvcClaimSize'
        storageClass:
          description: Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).
          type: string
          minLength: 1
          example: my-storage-class
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        accessModes:
          $ref: '#/components/schemas/PvcAccessModes'
        volumeMode:
          $ref: '#/components/schemas/PvcVolumeMode'
        addedAttrValues:
          $ref: '#/components/schemas/PvcAddedAttrValues'
      nullable: true
      type: object
    AutoScalingMinReplicas:
      description: The minimum number of replicas for autoscaling. Defaults to 1.
      type: integer
      format: int32
      minimum: 1
      nullable: true
    AutoScalingMetricNim:
      description: The metric to use for autoscaling (mandatory).
      type: string
      pattern: ^[a-zA-Z_:][a-zA-Z0-9_:]*$
      example: http_requests_total
      nullable: true
    WorkloadV2Metadata:
      allOf:
      - $ref: '#/components/schemas/WorkloadV2MetadataResponse'
      - $ref: '#/components/schemas/WorkloadV2MetadataAutoFill'
    EnvironmentVariables:
      description: Set of environment variables to populate into the container running the workload.
      type: array
      items:
        $ref: '#/components/schemas/EnvironmentVariable'
      nullable: true
    CpuCoreRequest:
      description: CPU units to allocate for the created workload (0.5, 1, .etc). The workload will receive at least this amount of CPU. Note that the workload will not be scheduled unless the system can guarantee this amount of CPUs to the workload.
      format: double
      type: number
      example: 0.5
      nullable: true
      minimum: 0
    Preemptibility:
      description: Specifies whether the workload can be preempted by higher-priority workloads. Valid values are preemptible and non-preemptible. If explicitly set, this value takes precedence. If not set, the system derives the preemptibility from the priorityClassName field, ensuring backward compatibility. Each workload type has a default preemptibility. To view the default preemptibility for each workload type, use the GET /workload-types endpoint.
      type: string
      minLength: 1
      enum:
      - preemptible
      - non-preemptible
      nullable: true
    TenantId:
      description: The id of the tenant.
      type: integer
      format: int32
      example: 1001
    PolicyRuleEnum:
      description: Indicates which validation rule (e.g., min, max, step, options, required, canEdit, canAdd) conflicted with policy restrictions, causing the asset or template to be rejected.
      type: string
      nullable: true
      enum:
      - min
      - max
      - step
      - options
      - required
      - canEdit
      - canAdd
      - locked
    ImagePullSecrets:
      description: A list of references to Kubernetes secrets in the same namespace used for pulling container images.
      type: array
      items:
        $ref: '#/components/schemas/ImagePullSecret'
      nullable: true
    Image:
      description: Docker image name. For more information, see [Images](https://kubernetes.io/docs/concepts/containers/images). The image name is mandatory for creating a workload.
      type: string
      minLength: 1
      example: python:3.8
      nullable: true
      pattern: .*
    NimServiceResponse:
      type: object
      required:
      - spec
      - metadata
      - desiredPhase
      properties:
        metadata:
          $ref: '#/components/schemas/WorkloadV2Metadata'
        desiredPhase:
          $ref: '#/components/schemas/DesiredPhase'
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
    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
          minLength: 1
          example: my_postgres_user_and_password
          nullable: true
        key:
          description: The key in the user credential resource. (mandatory)
          type: string
          minLength: 1
          example: POSTGRES_PASSWORD
          nullable: true
      nullable: true
      type: object
    ServingPortGrpcPort:
      description: The GRPC port that the container running the inference service exposes.
      type: integer
      format: int32
      minimum: 1
      maximum: 65535
      example: 8001
      nullable: true
    NimServiceWorkers:
      description: Specifies the number of worker nodes to use when running the NIM service in multi-node.
      type: integer
      format: int32
      minimum: 1
      maximum: 1000
      example: 3
      nullable: true
    Annotation:
      description: Annotation details to be populated into the container.
      properties:
        name:
          description: The name of the annotation (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: billing
          nullable: true
          pattern: .*
        value:
          description: The value of the annotation.
          type: string
          example: my-billing-unit
          nullable: true
          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
          default: false
          example: false
          nullable: true
      nullable: true
      type: object
    WorkloadV2MetadataAutoFill:
      type: object
      required:
      - id
      - gvk
      - projectName
      - clusterId
      - tenantId
      - departmentId
      - departmentName
      - createdAt
      - createdBy
      - updatedAt
      - updatedBy
      properties:
        id:
          $ref: '#/components/schemas/WorkloadId3'
        gvk:
          $ref: '#/components/schemas/GVK'
        projectName:
          $ref: '#/components/schemas/ProjectName2'
        clusterId:
          $ref: '#/components/schemas/ClusterId'
        tenantId:
          $ref: '#/components/schemas/TenantId'
        departmentId:
          $ref: '#/components/schemas/DepartmentId3'
        departmentName:
          $ref: '#/components/schemas/DepartmentName1'
        createdAt:
          type: string
          format: date-time
          description: The timestamp for when the workload was created.
          example: '2024-01-15T10:30:00Z'
        createdBy:
          type: string
          description: Identifier of the user who created the workload.
          format: .*
          example: user@run.ai
        updatedAt:
          type: string
          format: date-time
          description: The timestamp for the last time the workload was updated.
          example: '2024-01-15T10:35:00Z'
        updatedBy:
          type: string
          description: Identifier of the user who last updated the workload.
          format: .*
          example: user@run.ai
        deletedAt:
          type: string
          format: date-time
          description: The timestamp indicating when the workload was deleted.
          example: '2024-01-15T10:35:00Z'
          nullable: true
        deletedBy:
          type: string
          format: .*
          description: Identifier of the user who deleted the workload.
          example: user@run.ai
          nullable: true
    GpuMemoryLimit:
      description: Limitation on the memory consumed by the workload, per GPU device. The system guarantees The gpuMemoryLimit must be no less than gpuMemoryRequest.
      type: string
      pattern: ^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
      example: 10M
      nullable: true
    EnvironmentVariableConfigMap:
      description: Details of the configMap and key use to populate the environment variable
      properties:
        name:
          description: The name of the config-map resource. (mandatory)
          type: string
          minLength: 1
          example: my-config-map
          nullable: true
          pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
        key:
          description: The key in the config-map resource. (mandatory)
          type: string
          minLength: 1
          example: MY_POSTGRES_SCHEMA
          nullable: true
          pattern: .*
      nullable: true
      type: object
    DesiredPhase:
      description: The desired phase of the workload.
      type: string
      enum:
      - Running
      - Stopped
      - Deleted
    CpuCoreLimit:
      description: Limitations on the number of CPUs consumed by the workload (0.5, 1, .etc). The system guarantees that this workload will not be able to consume more than this amount of CPUs.
      format: double
      type: number
      example: 2
      nullable: true
      minimum: 0
    GpuDevicesRequest:
      description: Requested number of GPU devices. Currently if more than one device is requested, it is not possible to provide values for gpuMemory or gpuPortion.
      type: integer
      format: int32
      example: 1
      nullable: true
      minimum: 0
    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
      items:
        type: string
        pattern: .*
      example:
      - my-node-pool-a
      - my-node-pool-b
      nullable: true
    ServingPortExposedUrl:
      description: The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.
      type: string
      nullable: true
      pattern: .*
    PvcAddedAttrValue:
      type: object
      required:
      - key
      properties:
        key:
          type: string
          minLength: 1
          maxLength: 63
          pattern: ^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$
          example: dnsname
        value:
          type: string
          example: my.dns.com
          pattern: .*
    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
          minLength: 1
          example: metadata.name
          nullable: true
          pattern: .*
      nullable: true
      type: object
    ProjectName2:
      type: string
      description: The name of the project
      example: project-a
      minLength: 1
      pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
    AutoScalingMaxReplicas:
      description: The maximum number of replicas for autoscaling. Defaults to minReplicas. Must be no less than minReplicas.
      type: integer
      format: int32
      minimum: 1
      nullable: true
    GpuRequestType:
      description: Sets the unit type for GPU resources requests. Stated in terms of portion or memory. Sets the unit type for other GPU request fields. If `gpuDevicesRequest > 1`, only `portion` is supported. If `gpuDeviceRequest = 1`, the request type can be stated as `portion` or `memory`.
      type: string
      minLength: 1
      enum:
      - portion
      - memory
      nullable: true
    NimServiceCreateRequest:
      type: object
      required:
      - metadata
      - spec
      properties:
        metadata:
          $ref: '#/components/schemas/NIMServiceMetadataCreateParams'
        spec:
          $ref: '#/components/schemas/NimServiceSpec'
    NimServiceMultiNode:
      description: Defines whether the NIM service runs as a multi-node deployment. If workers is set to 1 or more, the service runs in multi-node.
      properties:
        workers:
          $ref: '#/components/schemas/NimServiceWorkers'
      nullable: true
      type: object
    ProbeHandlerScheme:
      description: Scheme to use for connecting to the host, defaults to HTTP.
      type: string
      enum:
      - HTTP
      - HTTPS
      nullable: true
    NimServiceReplicas:
      default: 1
      description: The number of replicas to deploy.
      type: integer
      format: int32
      minimum: 0
      maximum: 1000
      example: 2
      nullable: true
    ServingPortMetricsPort:
      description: The port where metrics are exposed, required only if it's different than the main port.
      type: integer
      format: int32
      minimum: 1
      maximum: 65535
      example: 8002
      nullable: true
    AutoScalingScaleWindowSeconds:
      description: The time window for autoscaling decisions, in seconds. Defaults to 300 seconds.
      type: integer
      format: int32
      minimum: 60
      maximum: 3600
      nullable: true
    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'
      nullable: true
      type: object
    PriorityClass:
      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
      nullable: true
      pattern: .*
    ServingPortExposedProtocol:
      description: The protocol to use for the exposed URL. If grpcPort is set, this defaults to grpc. Otherwise, it defaults to http.
      type: string
      enum:
      - http
      - grpc
      nullable: true
    SubmissionErrorV2:
      allOf:
      - $ref: '#/components/schemas/Error'
      - $ref: '#/components/schemas/ComplianceIssuesV2'
    PvcVolumeMode:
      description: Default volume mode for the PVC. Choose between Filesystem (default) or Block.
      type: string
      enum:
      - Filesystem
      - Block
      nullable: true
    Label:
      description: Label details to be populated into the container.
      properties:
        name:
          description: The name of the label (mandatory)
          type: string
          minLength: 1
          maxLength: 63
          example: stage
          nullable: true
          pattern: .*
        value:
          description: The value of the label.
          type: string
          example: initial-re

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