H2O.ai Models API

The Models API from H2O.ai — 19 operation(s) for models.

Operations 20

POST /collections/{collection_id}/topic_model Creates a topic model on the collection. #
DELETE /collections/{collection_id}/topic_model Deletes the topic model from the collection. #
GET /models Lists all available large language models. #
GET /embedding_models Lists all available embedding models. #
GET /embedding_models/default Gets default embedding model. #
POST /embedding_models/{model_id}/encode_chunks_for_retrieval Encode texts for semantic searching. #
POST /models/{model_name}/self_test/{mode} Runs a self-test for a given model. #
POST /models/{model_name}/answer_question Send a message and get a response from an LLM. #
POST /models/{model_name}/summarize_content Summarize one or more contexts using an LLM. #
POST /models/{model_name}/extract_data Extract information from one or more contexts using an LLM. #
GET /models/vision_capable_model_names Lists names of available vision-capable multi-modal LLMs in the environment. #
GET /models/model_to_vision_model_mapping Get mapping of llm to its vision_model when ["auto"] is passed as visible_vision_models. #
GET /models/reasoning_capable_model_names Lists names of available reasoning-capable (that can natively reason) in the environment. #
GET /models/model_to_reasoning_model_mapping Get mapping of llm to its reasoning_model when ["auto"] is passed as visible_reasoning_models. #
POST /guardrails_settings Helper to get reasonable (easy to use) defaults for Guardrails/PII settings. #
GET /stats/usage Returns usage statistics for all models. #
GET /stats/usage_by_model Returns usage statistics grouped by models. #
GET /stats/usage_by_user Returns usage statistics grouped by users. #
GET /stats/usage_by_model_and_user Returns usage statistics grouped by models and users. #
GET /stats/performance_by_model Returns performance statistics grouped by 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/h2o-ai-models-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

h2o-ai-models-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: h2oGPTe REST Models API
  description: "\n# Overview \n\nUsers can easily interact with the h2oGPTe API through its REST API, allowing HTTP requests from any programming language.\n\n## Authorization: Getting an API key\n\nSign up/in at Enterprise h2oGPTe and generate one of the following two types of API keys: \n\n- **Global API key**: If a Collection is not specified when creating a new API Key, that key is considered to be a global API Key. Use global API Keys to grant full user impersonation and system-wide access to all of your work. Anyone with access to one of your global API Keys can create, delete, or interact with any of your past, current, and future Collections, Documents, Chats, and settings.\n\n- **Collection-specific API key**: Use Collection-specific API Keys to grant external access to only Chat with a specified Collection and make related API calls to it. Collection-specific API keys do not allow other API calls, such as creation, deletion, or access to other Collections or Chats.\n \nAccess Enterprise h2oGPTe through your [H2O Generative AI](https://genai.h2o.ai/appstore) app store account, available with a freemium tier.\n\n## Authorization: Using an API key \n\nAll h2oGPTe REST API requests must include an API Key in the \"Authorization\" HTTP header, formatted as follows:\n\n```\nAuthorization: Bearer sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n```\n\n```sh\ncurl -X 'POST' \\\n  'https://h2ogpte.genai.h2o.ai/api/v1/collections' \\\n  -H 'accept: application/json' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Authorization: Bearer sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \\\n  -d '{\n    \"name\": \"The name of my Collection\",\n    \"description\": \"The description of my Collection\",\n    \"embedding_model\": \"BAAI/bge-large-en-v1.5\"\n  }'\n```\n    \n## Interactive h2oGPTe API testing\n\nThis page only showcases the h2oGPTe REST API; you can test it directly in the [Swagger UI](https://h2ogpte.genai.h2o.ai/swagger-ui/). Ensure that you are logged into your Enterprise h2oGPTe account.\n"
  version: v1.0.0
servers:
- url: https://h2ogpte.genai.h2o.ai/api/v1
security:
- bearerAuth: []
tags:
- name: Models
paths:
  /collections/{collection_id}/topic_model:
    post:
      operationId: create_topic_model
      summary: Creates a topic model on the collection.
      description: Creates a topic model on the collection.
      tags:
      - Models
      parameters:
      - name: collection_id
        in: path
        description: Id of the collection
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/Timeout'
      responses:
        '204':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
    delete:
      operationId: delete_topic_model
      summary: Deletes the topic model from the collection.
      description: Deletes the topic model from the collection.
      tags:
      - Models
      parameters:
      - name: collection_id
        in: path
        description: Id of the collection
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Successful operation
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models:
    get:
      operationId: list_models
      summary: Lists all available large language models.
      description: Lists all available large language models.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Model'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /embedding_models:
    get:
      operationId: list_embedding_models
      summary: Lists all available embedding models.
      description: Lists all available embedding models.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EmbeddingModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /embedding_models/default:
    get:
      operationId: get_default_embedding_model
      summary: Gets default embedding model.
      description: Gets default embedding model.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddingModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        default:
          $ref: '#/components/responses/Unexpected'
  /embedding_models/{model_id}/encode_chunks_for_retrieval:
    post:
      operationId: encode_chunks_for_retrieval
      summary: Encode texts for semantic searching.
      description: Encode texts for semantic searching.
      tags:
      - Models
      parameters:
      - name: model_id
        in: path
        description: Id of the embedding model that will be used for operation.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - chunks
              properties:
                chunks:
                  type: array
                  items:
                    type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: array
                  items:
                    type: number
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/{model_name}/self_test/{mode}:
    post:
      operationId: run_model_self_test
      summary: Runs a self-test for a given model.
      description: Runs a self-test for a given model.
      tags:
      - Models
      parameters:
      - name: model_name
        in: path
        description: Name of LLM.
        required: true
        schema:
          type: string
      - name: mode
        in: path
        description: Mode of the self test.
        required: true
        schema:
          type: string
          enum:
          - quick
          - rag
          - full
          - agent
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SelfTestResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/{model_name}/answer_question:
    post:
      operationId: answer_question
      summary: Send a message and get a response from an LLM.
      description: "Send a message and get a response from an LLM.\nNote: This method is only recommended if you are passing a chat conversation or for low-volume testing.\n      For general chat with an LLM, use \"POST /chats/{session_id}/completions\" endpoint.\n"
      tags:
      - Models
      parameters:
      - name: model_name
        in: path
        description: Name of LLM. Use auto, when you are not interested in particular model.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuestionRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelAnswer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/{model_name}/summarize_content:
    post:
      operationId: summarize_content
      summary: Summarize one or more contexts using an LLM.
      description: Summarize one or more contexts using an LLM.
      tags:
      - Models
      parameters:
      - name: model_name
        in: path
        description: Name of LLM. Use auto, when you are not interested in particular model.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizeRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelAnswer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/{model_name}/extract_data:
    post:
      operationId: extract_data
      summary: Extract information from one or more contexts using an LLM.
      description: "Extract information from one or more contexts using an LLM.\n`pre_prompt_extract` and `prompt_extract` variables must be used together. If these\n        variables are not set, the inputs texts will be summarized into bullet points.\n"
      tags:
      - Models
      parameters:
      - name: model_name
        in: path
        description: Name of LLM. Use auto, when you are not interested in particular model.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExtractionRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ModelExtractionAnswer'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/vision_capable_model_names:
    get:
      operationId: get_vision_capable_model_names
      summary: Lists names of available vision-capable multi-modal LLMs in the environment.
      description: Lists names of available vision-capable multi-modal LLMs (that can natively handle images as input) in the environment.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/model_to_vision_model_mapping:
    get:
      operationId: get_model_to_vision_model_mapping
      summary: Get mapping of llm to its vision_model when ["auto"] is passed as visible_vision_models.
      description: Get mapping of llm to its vision_model when ["auto"] is passed as visible_vision_models.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/reasoning_capable_model_names:
    get:
      operationId: get_reasoning_capable_model_names
      summary: Lists names of available reasoning-capable (that can natively reason) in the environment.
      description: Lists names of available reasoning-capable (that can natively reason) in the environment.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /models/model_to_reasoning_model_mapping:
    get:
      operationId: get_model_to_reasoning_model_mapping
      summary: Get mapping of llm to its reasoning_model when ["auto"] is passed as visible_reasoning_models.
      description: Get mapping of llm to its reasoning_model when ["auto"] is passed as visible_reasoning_models.
      tags:
      - Models
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /guardrails_settings:
    post:
      operationId: create_guardrails_settings
      summary: Helper to get reasonable (easy to use) defaults for Guardrails/PII settings.
      description: Helper to get reasonable (easy to use) defaults for Guardrails/PII settings. To be further customized.
      tags:
      - Models
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GuardrailsSettingsCreateRequest'
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GuardrailsSettings'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /stats/usage:
    get:
      operationId: get_usage_stats
      summary: Returns usage statistics for all models.
      description: Returns usage statistics for all models.
      tags:
      - Models
      parameters:
      - name: interval
        in: query
        description: The length of an interval for which the stats will be obtained. The interval ends now.
        example: 24 hours
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsageStats'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /stats/usage_by_model:
    get:
      operationId: get_usage_stats_by_model
      summary: Returns usage statistics grouped by models.
      description: Returns usage statistics grouped by models.
      tags:
      - Models
      parameters:
      - name: interval
        in: query
        description: The length of an interval for which the stats will be obtained. The interval ends now.
        example: 24 hours
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsageStatsPerModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /stats/usage_by_user:
    get:
      operationId: get_usage_stats_by_user
      summary: Returns usage statistics grouped by users.
      description: Returns usage statistics grouped by users.
      tags:
      - Models
      parameters:
      - name: interval
        in: query
        description: The length of an interval for which the stats will be obtained. The interval ends now.
        example: 24 hours
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsageStatsPerUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /stats/usage_by_model_and_user:
    get:
      operationId: get_usage_stats_by_model_and_user
      summary: Returns usage statistics grouped by models and users.
      description: Returns usage statistics grouped by models and users.
      tags:
      - Models
      parameters:
      - name: interval
        in: query
        description: The length of an interval for which the stats will be obtained. The interval ends now.
        example: 24 hours
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsageStatsPerModelAndUser'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
  /stats/performance_by_model:
    get:
      operationId: get_performance_stats_by_model
      summary: Returns performance statistics grouped by models.
      description: Returns performance statistics grouped by models.
      tags:
      - Models
      parameters:
      - name: interval
        in: query
        description: The length of an interval for which the stats will be obtained. The interval ends now.
        example: 24 hours
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PerformanceStatsPerModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        default:
          $ref: '#/components/responses/Unexpected'
components:
  parameters:
    Timeout:
      name: timeout
      in: query
      description: Timeout in seconds
      schema:
        type: number
        format: double
  schemas:
    ModelAnswer:
      required:
      - content
      - error
      - llm
      type: object
      properties:
        content:
          type: string
        error:
          type: string
        prompt_raw:
          type: string
        llm:
          type: string
        input_tokens:
          type: integer
        output_tokens:
          type: integer
        origin:
          type: string
    UsageStatsPerModel:
      required:
      - llm_name
      - llm_cost
      - call_count
      - input_tokens
      - output_tokens
      type: object
      properties:
        llm_name:
          type: string
        llm_cost:
          type: number
          format: double
        call_count:
          type: integer
        input_tokens:
          type: integer
        output_tokens:
          type: integer
    EmbeddingModel:
      required:
      - id
      - display_name
      - description
      - languages
      type: object
      properties:
        id:
          description: The model identifier.
          type: string
        display_name:
          description: The model name.
          type: string
        description:
          description: The model description.
          type: string
        languages:
          description: Languages supported by the model.
          type: array
          items:
            type: string
    EndpointError:
      required:
      - code
      - message
      properties:
        code:
          type: integer
          format: int32
          description: Error code
        message:
          type: string
          description: Error message
    ExtractionRequest:
      type: object
      additionalProperties: true
      properties:
        text_context_list:
          description: List of raw text strings to be summarized.
          type: array
          items:
            type: string
        system_prompt:
          description: 'Text sent to models which support system prompts. Gives the model

            overall context in how to respond. Use `auto` for the model default or None for h2oGPTe defaults. Defaults

            to '''' for no system prompt.

            '
          type: string
          default: ''
        llm_args:
          $ref: '#/components/schemas/ChatCompletionRequestLLMArgs'
        guardrails_settings:
          $ref: '#/components/schemas/GuardrailsSettings'
        timeout:
          description: Timeout in seconds.
          type: integer
        pre_prompt_extract:
          description: 'Text that is prepended before the list of texts. If not set,

            the inputs will be summarized.

            '
          type: string
        prompt_extract:
          description: Text that is appended after the list of texts. If not set, the inputs will be summarized.
          type: string
    ModelUsageStatsPerUser:
      required:
      - user_id
      - username
      - email
      - llm_cost
      - call_count
      - input_tokens
      - output_tokens
      type: object
      properties:
        user_id:
          type: string
        username:
          type: string
        email:
          type: string
        llm_cost:
          type: number
          format: double
        call_count:
          type: integer
        input_tokens:
          type: integer
        output_tokens:
          type: integer
    UsageStatsPerUser:
      required:
      - user_id
      - username
      - email
      - llm_usage
      type: object
      properties:
        user_id:
          type: string
        username:
          type: string
        email:
          type: string
        llm_usage:
          type: array
          items:
            $ref: '#/components/schemas/UsageStatsPerModel'
    ModelExtractionAnswer:
      required:
      - content
      - error
      - llm
      type: object
      properties:
        content:
          type: array
          items:
            type: string
        error:
          type: string
        llm:
          type: string
        input_tokens:
          type: integer
        output_tokens:
          type: integer
    Model:
      required:
      - id
      - display_name
      type: object
      properties:
        id:
          description: The model identifier.
          type: string
        display_name:
          description: The model name.
          type: string
      additionalProperties: true
    GuardrailsSettings:
      type: object
      properties:
        exception_message:
          description: A message that will be returned in case some guardrails settings are violated.
          type: string
        show_violated_responses:
          description: Admin-only toggle to view the exact content of violated responses. When enabled, admins can see what triggered a guardrail violation. This is disabled by default for privacy and security. Only administrators can enable this setting and view violated content.
          type: boolean
          default: false
        guardrails_on_transcriptions:
          description: When enabled, audio and video transcriptions are checked for content safety violations using the guardrails LLM, in addition to the existing PII detection.
          type: boolean
          default: false
        vision_guardrails_enabled:
          description: When enabled, images and video frames are checked for content safety violations using a vision-capable guardrails LLM during document ingestion.
          type: boolean
          default: false
        guardrails_vision_llm:
          description: Vision-capable LLM for image and video content safety checks. Defaults to auto which selects the best available vision model.
          type: string
          default: auto
        column_redaction_config:
          type: array
          description: List of [column_pattern, redaction_label], both strings.
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: string
        disallowed_regex_patterns:
          description: A list of regular expressions that match custom PII.
          type: array
          items:
            type: string
          example:
          - secret_disallowed_word
          - (?!0{3})(?!6{3})[0-8]\d{2}-(?!0{2})\d{2}-(?!0{4})\d{4}
        presidio_labels_to_flag:
          description: A list of entities to be flagged as PII by the built-in Presidio model.
          type: array
          items:
            type: string
          example:
          - IBAN_CODE
          - US_SSN
        pii_labels_to_flag:
          description: A list of entities to be flagged as PII by the built-in PII model.
          type: array
          items:
            type: string
          example:
          - IBAN
          - SSN
        pii_detection_parse_action:
          description: What to do when PII is detected during parsing of documents. The 'redact' option will replace disallowed content in the ingested documents with redaction bars.
          type: string
          enum:
          - allow
          - redact
          - fail
        pii_detection_llm_input_action:
          description: What to do when PII is detected in the input to the LLM (document content and user prompts). The 'redact' option will replace disallowed content with placeholders.
          type: string
          enum:
          - allow
          - redact
          - fail
        pii_detection_llm_output_action:
          description: What to do when PII is detected in the output of the LLM. The 'redact' option will replace disallowed content with placeholders.
          type: string
          enum:
          - allow
          - redact
          - fail
        prompt_guard_labels_to_flag:
          description: A list of entities to be flagged as safety violations in user prompts by the built-in prompt guard model.
          type: array
          items:
            type: string
          example:
          - JAILBREAK
        guardrails_labels_to_flag:
          description: A list of entities to be flagged as safety violations in user prompts. Must be a subset of guardrails_entities, if provided.
          type: array
          items:
            type: string
          example:
          - Violent Crimes
          - Non-Violent Crimes
          - Intellectual Property
          - Code Interpreter Abuse
        guardrails_llm:
          description: LLM to use for Guardrails and PII detection
          type: string
          example: h2oai/h2o-danube3-4b-chat
        guardrails_safe_category:
          description: Name of the safe category for guardrails. Must be a key in guardrails_entities, if provided. Otherwise uses system defaults.
          type: string
          example: Safe
        guardrails_entities:
          description: Dictionary of entities and their descriptions for the guardrails model to classify. The first entry is the "safe" class, the rest are "unsafe" classes.
          type: object
          additionalProperties:
            type: string
          example:
            Safe: Messages that do not contain any of the following unsafe content
            Violent Crimes: 'Messages that enable, encourage, or endorse the commission of violent crimes, including: (1) unlawful violence toward people (ex: terrorism, genocide, murder, hate-motivated violent crimes, child abuse, assault, battery, kidnapping) and (2) unlawful violence toward animals (ex: animal abuse)'
            Non-Violent Crimes: 'Messages that enable, encourage, or endorse the commission of non-violent crimes, including: (1) personal crimes (ex: labor trafficking, threats, intimidation, hate-motivated non-violent crimes), (2) financial crimes (ex: fraud, scams, money laundering), (3) property crimes (ex: theft, arson, vandalism), (4) drug crimes (ex: creating or using regulated substances), (5) weapons crimes (ex: producing unlicensed firearms), and (6) cyber crimes (ex: hacking)'
            Defamation: Messages that are both verifiably false and likely to injure a living person’s reputation
            Specialized Advice: Messages that contain specialized financial, medical, or legal advice, or that indicate dangerous activities or objects are safe
            Intellectual Property: Messages that may violate the intellectual property rights of any third party
            Code Interpreter Abuse: Messages that seek to abuse code interpreters, including those that enable denial of service attacks, container escapes or privilege escalation exploits
        column_redaction_custom_entities_to_flag:
          description: Deprecated - Use custom_pii_entities_to_flag. A list of entities to redact in tabular data files. Must be a subset of column_redaction_custom_entities, if provided.
          type: array
          items:
            type: string
          example:
          - Mother's Maiden Name
        column_redaction_custom_entities:
          description: (Optional) Deprecated - Use custom_pii_entities. A dictionary of entities and a short description for the LLM to check for and redact columns containing PII in tabular data files.
          type: object
          additionalProperties:
            type: string
          example:
            Mother's Maiden Name: Mother's maiden name
        custom_pii_entities_to_flag:
          description: A list of entities to redact in tabular data files. Must be a subset of custom_pii_entities, if provided.
          type: array
          items:
            type: string
          example:
          - Mother's Maiden Name
        custom_pii_entities:
          description: (Optional) A dictionary of entities and a short description for the LLM to check for and redact columns containing PII in tabular data files.
          type: object
          additionalProperties:
            type: string
          example:
            Mother's Maiden Name: Mother's maiden name
    UsageStatsPerModelAndUser:
      required:
      - llm_name
      - total_cost
      - total_calls
      - total_input_tokens
      - total_output_tokens
      - user_usage
      type: object
      properties:
        llm_name:
          type: string
        total_cost:
          type: number
          format: double
        total_calls:
          type: integer
        total_input_tokens:
          type: integer
        total_output_tokens:
          type: integ

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/h2o-ai/refs/heads/main/openapi/h2o-ai-models-api-openapi.yml