CMF Server API Referenceยค
CMF Server is a key interface for users to explore and track their ML training runs by storing metadata files on the CMF Server. Users can retrieve the saved metadata files and view their content using the UI provided by the CMF Server.
For CMF Server installation and setup instructions, see the Installation & Setup guide.
API Referenceยค
CMF Server APIs are implemented with FastAPI. The server registers routes under /v1; when accessed through the default CMF server/nginx setup, the public URL prefix is usually /api/v1.
Use the following parameter convention when adding or calling APIs:
- Required identifiers belong in the path, for example
{pipeline_name},{execution_uuid},{model_id},{server_id},{schedule_id}, and{file_name}. - Optional filters, search values, sorting, paging, or flags belong in query parameters, for example
server_id,skip_logging, andlist_of_files. - Request bodies are used for structured create, sync, push, pull, or paginated query payloads.
Response Formatยค
Successful endpoints return a common response envelope:
{
"status": "success",
"code": 200,
"data": {},
"message": "Pipelines retrieved successfully",
"errors": [],
"meta": {
"timestamp": "2026-01-04T15:00:00Z",
"pagination": null
}
}
Error responses use the same envelope with status: "error" and field-level details in errors.
Exception:
POST /v1/mlmd/pulldoes not use this envelope. It returns the raw MLMD JSON payload directly as its response body.
REST APIsยค
| Method | Route | Parameters | Description |
|---|---|---|---|
GET |
/v1/pipelines |
None | Discovers all pipelines present in the MLMD store. No parameters required. |
GET |
/v1/pipelines/{pipeline_name}/stages |
Path: pipeline_name |
Retrieves unique stages for a pipeline. |
GET |
/v1/pipelines/{pipeline_name}/artifacts |
Path: pipeline_name |
Discovers all artifacts for a pipeline. pipeline_name is a required path parameter. |
POST |
/v1/pipelines/{pipeline_name}/stages/{stage}/artifacts/types |
Path: pipeline_name, stage |
Retrieves artifact types available in a pipeline stage. |
POST |
/v1/pipelines/{pipeline_name}/stages/{stage}/artifacts |
Path: pipeline_name, stage; body: artifact stage query options |
Retrieves artifacts filtered by pipeline stage, artifact type, search, sort, and pagination options. |
GET |
/v1/pipelines/{pipeline_name}/executions |
Path: pipeline_name |
Discovers all executions in a pipeline. pipeline_name is a required path parameter. |
GET |
/v1/pipelines/{pipeline_name}/executions/list |
Path: pipeline_name |
Retrieves a short list of executions for a pipeline. |
POST |
/v1/pipelines/{pipeline_name}/stages/{stage}/executions |
Path: pipeline_name, stage; body: execution stage query options |
Retrieves executions filtered by pipeline stage, search, sort, and pagination options. |
GET |
/v1/pipelines/{pipeline_name}/executions/{execution_uuid}/python-env |
Path: pipeline_name, execution_uuid |
Retrieves the Python environment file associated with an execution. Uses pipeline_name and execution_uuid so MCP does not need the raw environment file name. |
GET |
/v1/pipelines/{pipeline_name}/executions/{uuid}/lineage |
Path: pipeline_name, uuid |
Retrieves execution lineage for a selected execution UUID. |
GET |
/v1/pipelines/{pipeline_name}/artifacts/lineage |
Path: pipeline_name |
Retrieves artifact lineage for a pipeline. |
GET |
/v1/pipelines/{pipeline_name}/artifact-executions/lineage |
Path: pipeline_name |
Retrieves combined artifact and execution lineage for a pipeline. |
GET |
/v1/artifacts/types |
None | Retrieves available artifact types. |
GET |
/v1/artifacts/models/{model_id}/card |
Path: model_id |
Retrieves model card data for a Model artifact. model_id is a required path parameter; MCP should first discover Model artifacts and use the selected artifact ID. |
POST |
/v1/mlmd/push |
Body: pipeline_name, json_payload, optional exec_uuid |
Pushes MLMD metadata to the CMF Server. |
POST |
/v1/mlmd/pull |
Body: optional pipeline_name, optional exec_uuid, optional last_sync_time |
Pulls MLMD metadata from the CMF Server. Returns the raw MLMD JSON payload directly, not the standard response envelope. |
POST |
/v1/python-env |
Multipart file: file |
Uploads a Python environment file to the CMF Server. |
GET |
/v1/python-env/{file_name} |
Path: file_name |
Retrieves a Python environment file by file name. |
GET |
/v1/python-env/download |
Optional query: list_of_files |
Downloads Python environment files as a ZIP archive. |
GET |
/v1/model-card |
Query: modelId |
Retrieves model card data for the UI by model artifact ID. |
POST |
/v1/label |
Multipart file: file |
Uploads a label file to the CMF Server. |
GET |
/v1/label-data |
Query: file_name |
Retrieves label file content by file name. |
POST |
/v1/tensorboard |
Query: pipeline_name; multipart file: file |
Uploads TensorBoard logs for a pipeline. |
POST |
/v1/acknowledge |
Body: server_name, server_url |
Acknowledges a peer server during registration or liveness checks. |
POST |
/v1/servers/register |
Body: server_name, server_url |
Registers a peer CMF Server. |
POST |
/v1/servers/sync |
Body: server_name, server_url; optional query: skip_logging |
Synchronizes metadata from a registered server. |
GET |
/v1/servers |
None | Lists registered servers. |
GET |
/v1/servers/{server_id}/completed-logs |
Path: server_id |
Retrieves completed sync logs for a registered server. |
POST |
/v1/schedules |
Body: schedule creation details | Creates a sync schedule. |
GET |
/v1/schedules |
Optional query: server_id |
Retrieves active schedules, optionally filtered by server. |
GET |
/v1/schedules/{schedule_id}/logs |
Path: schedule_id |
Retrieves run history logs for a schedule. |
DELETE |
/v1/schedules/{schedule_id} |
Path: schedule_id |
Deactivates a sync schedule. |
HTTP Response Status Codesยค
| Code | Title | Description |
|---|---|---|
200 |
OK |
Request completed successfully. |
201 |
Created |
Resource or uploaded file was created successfully. |
400 |
Bad Request |
Request parameters or body are invalid, such as using a non-Model artifact ID for a model card. |
404 |
Not Found |
Requested resource was not found, such as a pipeline, execution, artifact, file, server, or schedule. |
406 |
Not Acceptable |
POST /v1/mlmd/pull could not find the requested pipeline. |
422 |
Unprocessable Entity |
Request validation failed or a metadata schema version update is required. |
500 |
Internal Server Error |
Server error occurred, such as file read failure, sync failure, or an unexpected backend error. |