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: 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