API Reference#
Version: 1.1.0
This document describes all REST API endpoints, request/response formats, and examples.
Health Check#
curl http://localhost:8200/api/v1/health
{
"status": "ok"
}
Models#
List Models from a Hub - POST /api/v1/models/list#
Lists models available on a hub using hub-specific filters and pagination. Supported hubs: huggingface, ultralytics, pipeline-zoo-models, geti.
# List HuggingFace models by author
curl -X POST http://localhost:8200/api/v1/models/list \
-H "Content-Type: application/json" \
-d '{
"hub": "huggingface",
"filters": {"author": "microsoft", "search": "phi"},
"limit": 10,
"offset": 0
}'
# List Ultralytics models
curl -X POST http://localhost:8200/api/v1/models/list \
-H "Content-Type: application/json" \
-d '{
"hub": "ultralytics",
"filters": {"search": "yolov8"},
"limit": 10
}'
# List Geti™ models
curl -X POST http://localhost:8200/api/v1/models/list \
-H "Content-Type: application/json" \
-d '{
"hub": "geti",
"filters": {"project_name": "detection", "precision": "FP16"},
"limit": 10
}'
Request Fields:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Hub to list models from ( |
|
object |
no |
Hub-specific listing filters (see below) |
|
int |
no |
Max items to return (1–200, default 50) |
|
int |
no |
Items to skip for pagination (default 0) |
|
object |
no |
Base64-encoded per-request credential overrides |
Supported Filters by Hub:
Hub |
Filter Fields |
|---|---|
|
|
|
|
|
|
|
|
Response:
{
"hub": "huggingface",
"items": [
{
"name": "microsoft/Phi-3.5-mini-instruct",
"owner": "microsoft",
"tags": ["text-generation"],
"license": "mit",
"gated": false,
"requires_token": false
}
],
"total": 100,
"limit": 10,
"offset": 0
}
Download Models - POST /api/v1/models/download#
Downloads one or more models from supported hubs and optionally converts them to OpenVINO IR format. Requests are processed asynchronously; job IDs are returned immediately.
Query Parameter:
Parameter |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Base path/subdirectory for model downloads (relative to |
# Download a HuggingFace model
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=my-models" \
-H "Content-Type: application/json" \
-d '{
"models": [
{
"name": "microsoft/Phi-3.5-mini-instruct",
"hub": "huggingface",
"type": "llm",
"is_ovms": false
}
]
}'
# Download and convert to OpenVINO
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=my-models" \
-H "Content-Type: application/json" \
-d '{
"models": [
{
"name": "microsoft/Phi-3.5-mini-instruct",
"hub": "openvino",
"type": "llm",
"is_ovms": true,
"config": {
"precision": "int8",
"device": "CPU",
"cache_size": 10
}
}
]
}'
# Download an Ollama model
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=my-models" \
-H "Content-Type: application/json" \
-d '{
"models": [{"name": "deepseek-r1", "hub": "ollama"}]
}'
# Download from a remote URL
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=my-models" \
-H "Content-Type: application/json" \
-d '{
"models": [
{
"name": "wind-turbine-anomaly-detection",
"hub": "remote-url",
"config": {
"url": "https://github.com/open-edge-platform/edge-ai-resources/raw/main/timeseries-udf-deployment-packages/{name}.tar"
}
}
]
}'
# Download multiple models in parallel
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=my-models" \
-H "Content-Type: application/json" \
-d '{
"models": [
{"name": "microsoft/Phi-3.5-mini-instruct", "hub": "huggingface", "type": "llm"},
{"name": "deepseek-r1", "hub": "ollama"}
],
"parallel_downloads": true
}'
Model Request Fields:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
yes |
Model name/ID (format is hub-specific) |
|
string |
yes |
Source hub (see Supported Hubs below) |
|
string |
no |
Model type (determines conversion behavior) |
|
boolean |
no |
Convert to OpenVINO IR format (default |
|
string |
no |
Specific model revision/version to download |
|
object |
no |
Configuration for OpenVINO conversion (required if |
|
object |
no |
Per-request credential overrides (takes precedence over env vars) |
|
boolean |
no |
Validate credentials before starting (default |
Supported Hubs:
Hub |
Description |
|---|---|
|
HuggingFace model hub |
|
Ollama model registry |
|
Ultralytics YOLO models |
|
Pipeline Zoo Models |
|
Open Model Zoo |
|
OpenVINO model export |
|
Intel Geti™ |
|
HLS model source |
|
Download from a remote URL |
Model Types:
Type |
Description |
|---|---|
|
Large language model |
|
Vision-language model |
|
Embedding model |
|
Reranking model |
|
Image generation model |
|
Text-to-speech model |
|
Speech-to-text model |
|
Vision model |
|
3D pose estimation model |
|
Remote photoplethysmography |
|
AI ECG model |
Conversion Config Fields:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
string |
no |
Weight precision: |
|
string |
no |
Target device: |
|
int |
no |
Cache size for model optimization |
|
string |
no |
Ultralytics quantization dataset for INT8 export |
|
boolean |
no |
Overwrite an existing exported model (OpenVINO) |
|
object |
no |
Post-processing overrides for OMZ model-specific workflows |
name Format by Hub:
huggingface,ollama,openvino,geti,hls,remote-url: single model nameultralytics: single name, comma-separated names, orallpipeline-zoo-models: single name, comma-separated names, orallomz: single name or comma-separated names (allis not supported)
Response:
{
"message": "Started processing 1 model(s)",
"job_ids": ["download_abc123", "convert_def456"],
"status": "processing"
}
Authentication Notes:
HUGGINGFACEHUB_API_TOKENis optional for public HuggingFace modelsHUGGINGFACEHUB_API_TOKENis required for gated/private HuggingFace models and for conversionNo authentication needed for Ollama, Ultralytics, Pipeline Zoo Models, Geti™, or HLS models
Upload Custom Model - POST /api/v1/models/upload#
Upload a ZIP file containing model.xml and model.bin at the ZIP root.
curl -X POST http://localhost:8200/api/v1/models/upload \
-F "file=@my_model.zip" \
-F "model_name=my_custom_model" \
-F "provider=geti" \
-F "framework=openvino" \
-F "precision=FP16"
Form Fields:
Field |
Type |
Required |
Description |
|---|---|---|---|
|
binary |
yes |
ZIP file containing |
|
string |
yes |
Model name (alphanumeric, |
|
string |
no |
Provider segment in target path |
|
string |
no |
Framework segment in target path |
|
string |
no |
Precision folder (e.g., |
Validation:
model_nameallowsA-Z a-z 0-9 . _ - <space>. Spaces are replaced with underscores. Must not start/end with.or contain..File size limit enforced (default 500 MB via
MAX_UPLOAD_SIZE_MB)Files are read in chunks (default 8 KB via
UPLOAD_CHUNK_SIZE_KB)Returns
409if the target model path already exists
Response:
{
"status": "success",
"message": "Model 'my_custom_model' uploaded successfully.",
"job_id": "upload_abc123",
"model_name": "my_custom_model",
"model_path": "/opt/models/custom_uploaded_models/geti/openvino/my_custom_model/FP16"
}
Get Completed Model Results - GET /api/v1/models/results#
Retrieve all completed model downloads and conversions.
curl http://localhost:8200/api/v1/models/results
{
"results": [
{
"job_id": "download_abc123",
"model_name": "BAAI/bge-small-en-v1.5",
"hub": "huggingface",
"operation_type": "download",
"status": "completed",
"model_path": "/opt/models/preloaded/BAAI/bge-small-en-v1.5",
"is_ovms": false,
"completion_time": "2026-07-16T08:31:10.000000"
}
]
}
Get Jobs for a Model - GET /api/v1/models/jobs#
Retrieve all jobs related to a specific model.
curl "http://localhost:8200/api/v1/models/jobs?model_name=microsoft/Phi-3.5-mini-instruct"
{
"jobs": [
{
"id": "5f0d4eba-c79c-4d02-97a6-43c3d0168ca0",
"operation_type": "download",
"model_name": "microsoft/Phi-3.5-mini-instruct",
"hub": "huggingface",
"status": "completed",
"output_dir": "/opt/models/preloaded",
"start_time": "2026-07-16T08:30:00.000000",
"completion_time": "2026-07-16T08:31:10.000000"
}
]
}
Jobs#
List All Jobs - GET /api/v1/jobs#
Retrieve all in-memory jobs.
curl http://localhost:8200/api/v1/jobs
{
"jobs": [
{
"id": "5f0d4eba-c79c-4d02-97a6-43c3d0168ca0",
"operation_type": "download",
"model_name": "BAAI/bge-small-en-v1.5",
"hub": "huggingface",
"output_dir": "/opt/models/preloaded",
"status": "completed",
"start_time": "2026-07-16T08:30:00.000000",
"completion_time": "2026-07-16T08:31:10.000000",
"plugin_name": "huggingface",
"model_type": "embeddings"
}
]
}
Get Job Status - GET /api/v1/jobs/{job_id}#
Retrieve the status and details of a specific job.
curl http://localhost:8200/api/v1/jobs/5f0d4eba-c79c-4d02-97a6-43c3d0168ca0
{
"id": "5f0d4eba-c79c-4d02-97a6-43c3d0168ca0",
"operation_type": "download",
"model_name": "BAAI/bge-small-en-v1.5",
"hub": "huggingface",
"output_dir": "/opt/models/preloaded",
"status": "downloading",
"start_time": "2026-07-16T08:30:00.000000",
"plugin_name": "huggingface",
"model_type": "embeddings"
}
Cancel a Job - POST /api/v1/jobs/{job_id}/cancel#
Cancel a job that is in a cancellable state (queued, downloading, or converting).
curl -X POST http://localhost:8200/api/v1/jobs/download_abc123/cancel
{
"message": "Job download_abc123 has been cancelled",
"job_id": "download_abc123",
"status": "canceled"
}
Job Statuses:
Status |
Description |
|---|---|
|
Job is waiting to be processed |
|
Model download in progress |
|
Model conversion in progress |
|
Job finished successfully |
|
Job encountered an error |
|
Job was cancelled by the user |
Plugins#
List Available Plugins - GET /api/v1/plugins#
Retrieve information about all available plugins, their capabilities, and status.
curl http://localhost:8200/api/v1/plugins
{
"available_plugins": {
"hub": [
{
"name": "huggingface",
"type": "hub",
"description": "Download models from HuggingFace",
"capabilities": {
"supports_parallel_downloads": true,
"supports_listing": true,
"listing_filter_fields": ["author", "search", "tags"]
},
"available": true
}
]
},
"total_count": 8,
"available_count": 6,
"activation_instructions": "Enable/disable plugins via environment variables"
}
Endpoint Summary#
Models (POST)#
Endpoint |
Description |
|---|---|
|
List models available on a hub |
|
Download and optionally convert models |
|
Upload a custom model ZIP file |
Models (GET)#
Endpoint |
Description |
|---|---|
|
Get completed model operations |
|
Get jobs for a specific model |
Jobs#
Endpoint |
Description |
|---|---|
|
List all jobs |
|
Get job status |
|
Cancel a running or queued job |
Other#
Endpoint |
Description |
|---|---|
|
Health check |
|
List available plugins |
Response Models#
Endpoint |
Response Model |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HTTP Status Codes#
Code |
Scenario |
|---|---|
|
Request successful |
|
Invalid hub, missing dependencies, or plugin not available |
|
Authentication failed for the hub |
|
Job or model not found |
|
Model already exists (upload) |
|
Uploaded file exceeds configured size limit |
|
Validation error — malformed JSON, missing required fields |
|
Rate limit exceeded |
|
Server error (unexpected exception) |
|
Hub does not support the requested operation (e.g., listing) |
|
Upstream hub request failed |
License#
Copyright (C) 2025-2026 Intel Corporation
SPDX-License-Identifier: Apache-2.0