GitHub Raw JSON API

NVIDIA-NeMo / Guardrails

6,883 Python

NeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems.

Guardrails Specification

Located in fern/openapi.yml on branch HEAD

3.x (YAML) YAML 18.3 KB
Raw YAML Specification
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

openapi: 3.0.3
info:
  title: NVIDIA NeMo Guardrails Library API Server
  version: 0.22.0
  description: |
    REST API for the NVIDIA NeMo Guardrails library server.

    The server exposes an OpenAI-compatible chat completions endpoint with
    Guardrails-specific request and response extensions.
servers:
  - url: http://localhost:8000
    description: Local Guardrails server
tags:
  - name: Chat Completions
    description: Generate guarded chat completions.
  - name: Models
    description: List upstream models exposed through the configured provider.
  - name: Configurations
    description: Discover available guardrails configurations.
  - name: Challenges
    description: List registered red teaming challenges.
  - name: Health
    description: Check server health or load the chat UI.
paths:
  /v1/chat/completions:
    post:
      operationId: createGuardrailsChatCompletion
      tags:
        - Chat Completions
      summary: Create a guarded chat completion
      description: |
        Generate a chat completion with guardrails applied.

        The request shape is compatible with the OpenAI Chat Completions API and
        accepts Guardrails-specific options in the `guardrails` object.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GuardrailsChatCompletionRequest"
            examples:
              basic:
                summary: Basic guarded completion
                value:
                  model: meta/llama-3.1-8b-instruct
                  messages:
                    - role: user
                      content: What is the capital of France?
                  guardrails:
                    config_id: content_safety
              streaming:
                summary: Streaming guarded completion
                value:
                  model: meta/llama-3.1-8b-instruct
                  messages:
                    - role: user
                      content: Tell me a short story.
                  stream: true
                  guardrails:
                    config_id: content_safety
      responses:
        "200":
          description: Chat completion response or server-sent event stream.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GuardrailsChatCompletion"
              examples:
                success:
                  summary: Basic guarded completion
                  value:
                    id: chatcmpl-abc123
                    object: chat.completion
                    created: 1709424000
                    model: meta/llama-3.1-8b-instruct
                    choices:
                      - index: 0
                        message:
                          role: assistant
                          content: Paris is the capital of France.
                        finish_reason: stop
                    guardrails:
                      config_id: content_safety
                      llm_output: null
                      output_data: null
                      log: null
                      state: null
            text/event-stream:
              schema:
                type: string
                description: |
                  Server-sent events containing chat completion chunks. A
                  downstream failure before the first chunk is returned as an
                  HTTP error so clients can retry it. If generation fails after
                  streaming begins, the final JSON event is an error envelope
                  whose `type` is an internal streaming marker and whose `code`
                  carries the downstream HTTP status or generation error code.
              examples:
                completion:
                  value: |
                    data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1700000000,"model":"meta/llama-3.1-8b-instruct","choices":[{"delta":{"content":"Paris"},"index":0,"finish_reason":null}]}

                    data: [DONE]
                error:
                  value: |
                    data: {"error":{"message":"The upstream model is unavailable.","type":"downstream_error","param":null,"code":503}}

                    data: [DONE]
        "422":
          description: Invalid request or unsupported state continuation.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              examples:
                missingConfig:
                  value:
                    error:
                      message: No guardrails config_id provided and server has no default configuration
                      type: invalid_request_error
                      param: null
                      code: null
                unsupportedColangState:
                  value:
                    error:
                      message: Stateful continuation over HTTP is not supported for Colang 2.0.
                      type: invalid_request_error
                      param: null
                      code: null
  /v1/models:
    get:
      operationId: listModels
      tags:
        - Models
      summary: List models
      description: |
        List available LLM models from the configured upstream provider.

        The server forwards the `Authorization` header to the upstream provider
        when the request includes one.
      responses:
        "200":
          description: OpenAI-compatible models list.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/OpenAIModelsList"
              examples:
                success:
                  value:
                    data:
                      - id: meta/llama-3.1-8b-instruct
                        object: model
                        created: 1700000000
                        owned_by: system
        "502":
          description: The upstream provider is unreachable or returned an error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
  /v1/rails/configs:
    get:
      operationId: listRailsConfigs
      tags:
        - Configurations
      summary: List guardrails configurations
      description: |
        List available guardrails configurations. In single-config mode, the
        response contains the single configured ID.
      responses:
        "200":
          description: Array of available configuration IDs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/RailsConfigInfo"
              examples:
                success:
                  value:
                    - id: content_safety
                    - id: customer-service
  /v1/challenges:
    get:
      operationId: listChallenges
      tags:
        - Challenges
      summary: List red teaming challenges
      description: |
        List registered red teaming challenges. The response structure depends
        on the challenges registered by the application.
      responses:
        "200":
          description: Array of registered challenges.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
              examples:
                success:
                  value:
                    - id: jailbreak-1
                      description: Attempt to bypass safety guardrails.
                      category: jailbreak
  /v1/health:
    get:
      operationId: getHealth
      tags:
        - Health
      summary: Liveness health check
      description: |
        Shallow liveness check. Returns HTTP 200 while the server process is
        running and able to serve requests. It does not verify guardrails
        configurations, the model provider, or any datastore.
      responses:
        "200":
          description: The server process is up and able to serve requests.
          content:
            application/health+json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: pass
              example:
                status: pass
  /healthz:
    get:
      operationId: getHealthz
      tags:
        - Health
      summary: Liveness health check (alias)
      description: |
        Kubernetes-style alias for `GET /v1/health`. Returns the same shallow
        liveness response.
      responses:
        "200":
          description: The server process is up and able to serve requests.
          content:
            application/health+json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: pass
              example:
                status: pass
  /:
    get:
      operationId: getRoot
      tags:
        - Health
      summary: Get server health or chat UI
      description: |
        Returns a health payload when the chat UI is disabled. Otherwise, serves
        the interactive chat interface.
      responses:
        "200":
          description: Health payload or chat UI HTML.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
              example:
                status: ok
            text/html:
              schema:
                type: string
components:
  schemas:
    ChatMessage:
      type: object
      additionalProperties: true
      required:
        - role
        - content
      properties:
        role:
          type: string
          description: Message role, such as `system`, `user`, `assistant`, `tool`, or `context`.
          example: user
        content:
          description: Message content.
          oneOf:
            - type: string
            - type: array
              items:
                type: object
                additionalProperties: true
    GuardrailsChatCompletionRequest:
      type: object
      required:
        - model
      properties:
        model:
          type: string
          description: LLM model to use for the completion.
          example: meta/llama-3.1-8b-instruct
        messages:
          type: array
          description: Chat messages in the current conversation.
          items:
            $ref: "#/components/schemas/ChatMessage"
        stream:
          type: boolean
          default: false
          description: Return partial message deltas as server-sent events.
        max_tokens:
          type: integer
          description: Maximum number of tokens to generate.
        temperature:
          type: number
          format: float
          description: Sampling temperature.
        top_p:
          type: number
          format: float
          description: Top-p sampling parameter.
        stop:
          description: Stop sequence or sequences.
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        presence_penalty:
          type: number
          format: float
          description: Presence penalty parameter.
        frequency_penalty:
          type: number
          format: float
          description: Frequency penalty parameter.
        function_call:
          type: object
          additionalProperties: true
          description: Function call parameter.
        logit_bias:
          type: object
          additionalProperties: true
          description: Logit bias parameter.
        logprobs:
          type: boolean
          description: Log probabilities parameter.
        guardrails:
          $ref: "#/components/schemas/GuardrailsRequestOptions"
    GuardrailsRequestOptions:
      type: object
      description: Guardrails-specific request options.
      properties:
        config_id:
          type: string
          description: Guardrails configuration ID to use. Mutually exclusive with `config_ids`.
        config_ids:
          type: array
          description: List of configuration IDs to combine. Mutually exclusive with `config_id`.
          items:
            type: string
        thread_id:
          type: string
          minLength: 16
          maxLength: 255
          description: Existing thread ID for Colang 1.0 conversation persistence.
        context:
          type: object
          additionalProperties: true
          description: Additional context data for the conversation.
        options:
          $ref: "#/components/schemas/GenerationOptions"
        state:
          type: object
          additionalProperties: true
          description: Colang 1.0 transcript state for continuing a previous interaction.
    GenerationOptions:
      type: object
      properties:
        rails:
          $ref: "#/components/schemas/GenerationRailsOptions"
        llm_params:
          type: object
          additionalProperties: true
          description: Additional parameters to pass to the LLM call.
        llm_output:
          type: boolean
          default: false
          description: Include custom LLM output in the response.
        output_vars:
          description: Context variables to return.
          oneOf:
            - type: boolean
            - type: array
              items:
                type: string
        log:
          $ref: "#/components/schemas/GenerationLogOptions"
    GenerationRailsOptions:
      type: object
      properties:
        input:
          $ref: "#/components/schemas/RailSelection"
        output:
          $ref: "#/components/schemas/RailSelection"
        retrieval:
          $ref: "#/components/schemas/RailSelection"
        dialog:
          type: boolean
          default: true
          description: Enable dialog rails.
        tool_input:
          $ref: "#/components/schemas/RailSelection"
        tool_output:
          $ref: "#/components/schemas/RailSelection"
    RailSelection:
      description: Enable, disable, or select named rails.
      oneOf:
        - type: boolean
        - type: array
          items:
            type: string
    GenerationLogOptions:
      type: object
      properties:
        activated_rails:
          type: boolean
          default: false
          description: Include information about activated rails.
        llm_calls:
          type: boolean
          default: false
          description: Include details about LLM calls.
        internal_events:
          type: boolean
          default: false
          description: Include internal generated events.
        colang_history:
          type: boolean
          default: false
          description: Include conversation history in Colang format.
    GuardrailsChatCompletion:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          example: chat.completion
        created:
          type: integer
        model:
          type: string
        choices:
          type: array
          items:
            $ref: "#/components/schemas/ChatCompletionChoice"
        guardrails:
          $ref: "#/components/schemas/GuardrailsResponseData"
    ChatCompletionChoice:
      type: object
      properties:
        index:
          type: integer
        message:
          $ref: "#/components/schemas/ChatMessage"
        finish_reason:
          type: string
          nullable: true
    GuardrailsResponseData:
      type: object
      properties:
        config_id:
          type: string
          nullable: true
        state:
          type: object
          nullable: true
          additionalProperties: true
        llm_output:
          type: object
          nullable: true
          additionalProperties: true
        output_data:
          type: object
          nullable: true
          additionalProperties: true
        log:
          type: object
          nullable: true
          additionalProperties: true
    OpenAIModelsList:
      type: object
      required:
        - data
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/OpenAIModel"
    OpenAIModel:
      type: object
      required:
        - id
        - object
        - created
      properties:
        id:
          type: string
          description: Model identifier.
        object:
          type: string
          enum:
            - model
        created:
          type: integer
          description: Unix timestamp in seconds.
        owned_by:
          type: string
          nullable: true
          description: Organization that owns the model.
    RailsConfigInfo:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: Guardrails configuration ID.
    ErrorResponse:
      type: object
      description: |
        OpenAI-compatible error envelope. Every error response from the server
        uses this shape, so an OpenAI SDK raises the matching APIStatusError
        subclass.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
            - param
            - code
          properties:
            message:
              type: string
              description: Human-readable error message, with secrets and upstream URLs redacted.
            type:
              type: string
              description: |
                OpenAI error category, derived from the HTTP status
                (for example `invalid_request_error`, `authentication_error`,
                `permission_error`, `not_found_error`, `rate_limit_error`,
                `server_error`).
            param:
              type: string
              nullable: true
              description: The request field the error relates to, when known.
            code:
              nullable: true
              description: |
                Provider-supplied error code when available. Streaming error
                events use an integer downstream HTTP status or a string
                generation error code.
              oneOf:
                - type: string
                - type: integer