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-extractors-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 Extractors 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: Extractors
paths:
/extractors/{extractor_id}/permissions:
get:
tags:
- Extractors
summary: Returns a list of users having access to given extractor.
description: The returned list of permissions denotes who has access to the extractor.
operationId: get_extractor_permissions
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SharePermission'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/Unexpected'
put:
tags:
- Extractors
summary: Resets and shares an extractor to a new list of users.
description: Resets and shares an extractor to a new list of users.
operationId: reset_and_share_extractor
parameters:
- name: extractor_id
in: path
description: Id of an extractor.
required: true
schema:
type: string
requestBody:
required: true
description: List of usernames the extractor should be shared with.
content:
application/json:
schema:
$ref: '#/components/schemas/ResetAndShareRequest'
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
delete:
tags:
- Extractors
summary: Removes sharing of an extractor to all other users except the original owner.
description: Removes sharing of an extractor to all other users except the original owner.
operationId: unshare_extractor_for_all
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/group_permissions:
get:
tags:
- Extractors
summary: Returns a list of group access permissions for a given extractor.
description: The returned list of group permissions denoting which groups have access to the extractor.
operationId: get_extractor_group_permissions
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
responses:
'200':
description: Successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/GroupSharePermission'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/Unexpected'
put:
tags:
- Extractors
summary: Resets and shares an extractor to a new list of groups.
description: Resets and shares an extractor to a new list of groups.
operationId: reset_and_share_extractor_with_groups
parameters:
- name: extractor_id
in: path
description: Id of an extractor
required: true
schema:
type: string
requestBody:
required: true
description: List of group ids the extractor should be shared with.
content:
application/json:
schema:
$ref: '#/components/schemas/ResetAndShareWithGroupsRequest'
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/is_public:
post:
tags:
- Extractors
summary: Updates a flag specifying whether an extractor is private or public.
description: Updates a flag specifying whether an extractor is private or public.
operationId: update_extractor_privacy
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
required:
- is_public
properties:
is_public:
description: A flag specifying whether a extractor is private or public.
type: boolean
required: true
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/permissions/{username}:
put:
tags:
- Extractors
summary: Shares an extractor to a user.
description: Shares an extractor to a user.
operationId: share_extractor
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
- name: username
in: path
description: User name that will obtain access to the extractor
required: true
schema:
type: string
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
delete:
tags:
- Extractors
summary: Removes sharing of an extractor to a user.
description: Removes sharing of an extractor to a user.
operationId: unshare_extractor
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
- name: username
in: path
description: User name that will lose access to the extractor
required: true
schema:
type: string
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/group_permissions/{group_id}:
put:
tags:
- Extractors
summary: Shares an extractor to a group.
description: Shares an extractor to a group. The extractor_id attribute denotes the extractor to be shared.
operationId: share_extractor_with_group
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
- name: group_id
in: path
description: Id of a group that will obtain access to the extractor.
required: true
schema:
type: string
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
delete:
tags:
- Extractors
summary: Removes sharing of an extractor from a group.
description: Removes sharing of an extractor from a group.
operationId: unshare_extractor_from_group
parameters:
- name: extractor_id
in: path
description: Id of the extractor.
required: true
schema:
type: string
- name: group_id
in: path
description: Id of a group that will lose access to the extractor.
required: true
schema:
type: string
responses:
'204':
description: Successful operation
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}:
get:
operationId: get_extractor
summary: Fetch an extractor by ID
description: 'This endpoint retrieves information about a specific extractor based on its unique ID. It requires an authenticated user and returns a JSON response containing the extractor''s details.
'
tags:
- Extractors
parameters:
- name: extractor_id
in: path
description: ID of the extractor to get.
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Extractor'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/Unexpected'
delete:
tags:
- Extractors
summary: Deletes extractor.
description: Deletes extractor.
operationId: delete_extractor
parameters:
- name: extractor_id
in: path
description: ID of the extractor to delete.
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'
/extractors:
get:
operationId: list_extractors
summary: List extractors.
description: List extractors. The output is sorted by create time in descending order.
tags:
- Extractors
parameters:
- name: offset
in: query
description: How many extractors to skip before returning.
required: false
schema:
type: integer
default: 0
- name: limit
in: query
description: How many extractors to return.
required: false
schema:
type: integer
default: 100
- name: name_filter
in: query
description: Filter extractors by name.
required: false
schema:
type: string
responses:
'200':
description: Successful operation. Fields llm and schema are not populated.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Extractor'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/Unexpected'
post:
operationId: create_extractor
summary: Creates extractor.
tags:
- Extractors
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractorCreateRequest'
examples:
sample:
summary: Example 1
value:
description: Extracts medical data using Meta Llama 3.1-8B
llm: meta-llama/Meta-Llama-3.1-8B-Instruct
name: Medical data extractor
schema: "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"H2O Field Editor Generated Schema\",\n \"type\": \"object\",\n \"properties\": {\n \"fields\": {\n \"type\": \"object\",\n \"properties\": {\n \"clinic_name\": {\n \"type\": \"string\"\n },\n \"patient_surname\": {\n \"type\": \"string\"\n },\n \"patient_first_name\": {\n \"type\": \"string\"\n }\n }\n }\n },\n \"required\": [\n \"fields\"\n ]\n}\n"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Extractor'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/run:
post:
tags:
- Extractors
summary: Run an extractor on a collection, document, or uploaded files (synchronous)
description: 'Executes the specified extractor synchronously and returns results with a 200 OK response.
Exactly one of the following must be provided:
- `collection_id` — run on all documents in a collection
- `document_id` — run on a single document in a collection
- `files` — one or more files uploaded directly in the request body (multipart/form-data) without adding them to a collection
This endpoint blocks and waits for the extraction to complete, then returns the results.
This endpoint is primarily intended for short-running extractions where immediate
results are desired.
For very long running extractions use the async endpoint
`/extractors/{extractor_id}/job` instead.
'
operationId: run_extractor
parameters:
- $ref: '#/components/parameters/ExtractorId'
- $ref: '#/components/parameters/ExtractorCollectionId'
- $ref: '#/components/parameters/ExtractorDocumentId'
- $ref: '#/components/parameters/Timeout'
requestBody:
required: false
content:
multipart/form-data:
schema:
type: object
properties:
files:
type: array
description: 'One or more files to run the extractor on directly, without adding them
to a collection. Mutually exclusive with collection_id and document_id.
'
items:
type: string
format: binary
responses:
'200':
description: 'Extraction completed successfully. Returns an array of extraction results,
one for each document processed.
'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DocumentExtractionResult'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/job:
post:
tags:
- Extractors
summary: Create a job to run an extractor on a collection or document
description: 'Creates a job to execute the specified extractor by running it on all documents
in a collection, or on a single document when document_id is specified.
This endpoint is designed for long-running extractions.
The endpoint immediately returns a 201 Created response with job details.
Exactly one of collection_id or document_id must be provided.
'
operationId: create_extractor_run_job
parameters:
- $ref: '#/components/parameters/ExtractorId'
- $ref: '#/components/parameters/ExtractorCollectionId'
- $ref: '#/components/parameters/ExtractorDocumentId'
- $ref: '#/components/parameters/Timeout'
responses:
'201':
description: 'Job created successfully. The job has been accepted and is being processed.
Use GET /jobs/{job_id} to check progress. Once completed, retrieve results
using `/extractors/{extractor_id}/results?job_id={job_id}`.
'
content:
application/json:
schema:
$ref: '#/components/schemas/JobDetails'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/Unexpected'
/extractors/{extractor_id}/results:
get:
operationId: list_extractor_results
summary: Retrieve extraction results
description: 'Retrieves extraction results produced by this extractor. If job_id is specified,
returns results for that specific extraction run. If job_id is omitted, returns all
results produced by this extractor across all runs.
'
tags:
- Extractors
parameters:
- name: extractor_id
in: path
description: ID of the extractor
required: true
schema:
type: string
- name: job_id
in: query
description: Optional job ID to retrieve results for a specific extraction run. If omitted, returns all results for this extractor.
required: false
schema:
type: string
- name: offset
in: query
description: How many extraction results to skip before returning.
required: false
schema:
type: integer
default: 0
- name: limit
in: query
description: How many extraction results to return.
required: false
schema:
type: integer
responses:
'200':
description: 'Extraction results retrieved successfully. Returns an array of extraction results.
'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/DocumentExtractionResult'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/Unexpected'
components:
parameters:
Timeout:
name: timeout
in: query
description: Timeout in seconds
schema:
type: number
format: double
ExtractorDocumentId:
name: document_id
in: query
description: ID of the single document to run the extractor on. Exactly one of collection_id or document_id must be provided.
required: false
schema:
type: string
ExtractorId:
name: extractor_id
in: path
description: ID of the extractor to run
required: true
schema:
type: string
ExtractorCollectionId:
name: collection_id
in: query
description: ID of the collection to run the extractor on. Exactly one of collection_id or document_id must be provided.
required: false
schema:
type: string
responses:
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
BadRequest:
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
NotFound:
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
Unauthorized:
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
Unexpected:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/EndpointError'
schemas:
DocumentExtractionResult:
type: object
required:
- id
- document_name
- content
- error
properties:
id:
type: string
description: ID of the document extraction result
document_id:
type:
- string
- 'null'
description: ID of the document that was processed. Null when the extraction was run on uploaded files without a collection.
document_name:
type: string
description: Name of the document that was processed
content:
description: The extracted content as JSON object
type: object
error:
type: string
description: Contains error in case extraction failed for this document. Otherwise empty.
EndpointError:
required:
- code
- message
properties:
code:
type: integer
format: int32
description: Error code
message:
type: string
description: Error message
ExtractorCreateRequest:
type: object
required:
- name
- description
- llm
- schema
properties:
name:
type: string
description: Human-readable name
description:
type: string
description: What this extractor does
llm:
type: string
description: Identifier or version of the language model the extractor uses
schema:
type: string
description: JSONSchema (or other spec) that the extractor outputs. When schema is valid and not empty, the output will be always returned as JSON object.
prompt:
type: string
description: Custom prompt text for the extractor. If empty, default prompt will be used. If combined with schema, prompt can customize the output, but cannot change its format as it will always be JSON object.
pre_prompt_summary:
type: string
description: (Optional) Pre-prompt summary text for the extractor
keep_intermediate_results:
type: boolean
description: (Optional) Flag indicating whether to keep intermediate results during extraction
system_prompt:
type: string
description: (Optional) System prompt text for the extractor
max_num_chunks:
type: integer
description: (Optional) Maximum number of chunks to process
vision:
type: string
description: (Optional) Vision mode setting
vision_llm:
type: string
description: (Optional) Vision LLM model identifier
image_batch_image_prompt:
type: string
description: (Optional) Image batch processing prompt
image_batch_final_prompt:
type: string
description: (Optional) Final prompt for image batch processing
guardrails_settings:
$ref: '#/components/schemas/GuardrailsSettings'
GroupSharePermission:
required:
- group_id
type: object
properties:
group_id:
type: string
permissions:
type: array
items:
type: string
JobDetailsStatus:
required:
- id
- status
type: object
properties:
id:
type: string
status:
type: string
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 reg
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/h2o-ai/refs/heads/main/openapi/h2o-ai-extractors-api-openapi.yml