Skip to main content

AutoML

Create, manage, and monitor automated machine learning jobs. AutoML automatically selects the best model architecture, hyperparameters, and feature engineering for your dataset and prediction task.

All endpoints require authentication via X-API-Key header and the appropriate scope.


AutoMLJob Object

{
"id": "aml_abc123",
"name": "Churn Prediction Model",
"status": "running",
"description": "Predicting customer churn from usage and billing data",
"dataset": "ds_customers_001",
"problemType": "binary_classification",
"predictorType": "tabular",
"owner": "user_456",
"organizationId": "org_xyz",
"targetColumn": "churned",
"preset": "best_quality",
"timeLimit": 3600,
"startedAt": "2025-02-01T10:00:00Z",
"finishedAt": null,
"error": null,
"createdAt": "2025-02-01T09:55:00Z",
"updatedAt": "2025-02-01T12:30:00Z"
}

GET /api/v1/automl/jobs

List all AutoML jobs accessible to the authenticated user.

Scope: ml-workbench:read

Query Parameters

ParameterTypeRequiredDescription
statusstringNoFilter by status: queued, running, completed, failed, stopped
searchstringNoSearch by job name or description
limitintegerNoNumber of results to return (default: 20)
offsetintegerNoNumber of results to skip (default: 0)
sortstringNoSort field and direction, e.g. createdAt:desc

Response 200 OK

{
"count": 10,
"limit": 20,
"offset": 0,
"jobs": [
{
"id": "aml_abc123",
"name": "Churn Prediction Model",
"status": "running",
"description": "Predicting customer churn from usage and billing data",
"dataset": "ds_customers_001",
"problemType": "binary_classification",
"predictorType": "tabular",
"owner": "user_456",
"organizationId": "org_xyz",
"targetColumn": "churned",
"preset": "best_quality",
"startedAt": "2025-02-01T10:00:00Z",
"finishedAt": null,
"createdAt": "2025-02-01T09:55:00Z",
"updatedAt": "2025-02-01T12:30:00Z"
}
]
}

POST /api/v1/automl/jobs

Create a new AutoML job.

Scope: ml-workbench:write

Datasets are S3-backed project volumes (uploaded through the UI or attached to a project). Reference one by its volume id (from GET /automl/datasets); a volume is a directory, so when it holds more than one data file, pass datasetFile with the file key (discover files with GET /automl/datasets/:id/files). You may also pass an s3:// path or a URL directly as dataset.

Request Body

{
"name": "Churn Prediction Model",
"dataset": "vol_customers_001",
"datasetFile": "data/customers.csv",
"targetColumn": "churned",
"featureColumns": ["usage_days", "monthly_spend", "support_tickets", "plan_type"],
"problemType": "tabular",
"predictorType": "auto",
"preset": "medium_quality",
"timeLimit": 600,
"metric": "accuracy",
"hardware": { "cpu_count": 4, "memory_gb": 16, "disk_gb": 20, "gpu_count": 0 },
"environmentId": "custom",
"advanced": { "excludeModels": ["KNN"] }
}
FieldTypeRequiredDescription
namestringYesHuman-readable job name
datasetstringYesProject dataset volume id (from GET /automl/datasets), an s3:// path, or a URL
targetColumnstringYesName of the column to predict
datasetFilestringNoFile key within the volume, when it holds more than one data file
featureColumnsstring[]NoSpecific columns to use as features. All non-target columns used if omitted
problemTypestringNoData modality: tabular (default), multimodal, timeseries
predictorTypestringNoauto (default, AutoGluon infers), BinaryClassifier, MultiClassifier, Regressor
presetstringNoAutoGluon quality preset: best_quality, high_quality, medium_quality (default: medium_quality)
timeLimitintegerNoMaximum training time in seconds (default: 600)
metricstringNoOptimization metric (e.g. accuracy, f1, rmse). Default: accuracy
hardwareobjectYesPod sizing: { cpu_count, memory_gb, disk_gb, gpu_count } (gpu_count optional)
environmentIdstringNoTraining environment: custom (default) or an existing environment id
advancedobjectNoAdvanced AutoGluon options

Response 201 Created

{
"id": "aml_abc123",
"name": "Churn Prediction Model",
"status": "queued",
"createdAt": "2025-02-01T09:55:00Z"
}

GET /api/v1/automl/jobs/:id

Get a single AutoML job by ID.

Scope: ml-workbench:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesAutoML job ID

Response 200 OK

Returns the full AutoMLJob object.


DELETE /api/v1/automl/jobs/:id

Delete an AutoML job. Running jobs must be stopped before deletion.

Scope: ml-workbench:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesAutoML job ID

Response 204 No Content


POST /api/v1/automl/jobs/:id/stop

Stop a running AutoML job. The job will be marked as stopped and training will be terminated.

Scope: ml-workbench:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesAutoML job ID

Response 200 OK

{
"id": "aml_abc123",
"status": "stopped",
"message": "AutoML job stopped successfully"
}

POST /api/v1/automl/jobs/:id/deploy

Deploy the best model from a completed AutoML job. Makes the model available for inference via the model registry.

Scope: ml-workbench:write

Path Parameters

ParameterTypeRequiredDescription
idstringYesAutoML job ID

Response 200 OK

{
"id": "aml_abc123",
"modelId": "model_xyz789",
"modelName": "Churn Prediction Model - Best",
"status": "deployed",
"message": "Best model deployed successfully"
}

GET /api/v1/automl/jobs/:id/logs

Retrieve training logs for an AutoML job.

Scope: ml-workbench:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesAutoML job ID

Query Parameters

ParameterTypeRequiredDescription
linesintegerNoNumber of log lines to return (default: 100)
sincestringNoReturn logs after this ISO 8601 timestamp

Response 200 OK

{
"jobId": "aml_abc123",
"logs": [
{
"timestamp": "2025-02-01T10:00:05Z",
"level": "info",
"message": "AutoML job started - problem type: binary_classification"
},
{
"timestamp": "2025-02-01T10:02:15Z",
"level": "info",
"message": "Feature engineering completed - 12 features generated"
},
{
"timestamp": "2025-02-01T10:15:30Z",
"level": "info",
"message": "Model training: LightGBM completed - f1: 0.891"
}
]
}

GET /api/v1/automl/stats

Get aggregate statistics for AutoML jobs in the organization.

Scope: ml-workbench:read

Response 200 OK

{
"total": 10,
"running": 1,
"completed": 6,
"failed": 2,
"queued": 1
}

GET /api/v1/automl/datasets

List the project dataset volumes (S3-backed) the authenticated user can train on. A volume is a directory; use GET /automl/datasets/:id/files to list the files inside it.

Scope: ml-workbench:read

Response 200 OK

{
"datasets": [
{
"_id": "vol_customers_001",
"name": "Customer Data Q4 2024",
"s3Location": "s3://strongly/projects/proj_1/volumes/vol_customers_001",
"sizeGB": 0.045,
"format": "csv",
"dataType": "structured",
"projectId": "proj_1",
"projectName": "Churn Analysis"
}
],
"projects": [
{ "_id": "proj_1", "name": "Churn Analysis", "isOwner": true }
]
}

POST /api/v1/automl/datasets/upload-url

Get a presigned URL to upload a local training dataset file. PUT the file bytes to the returned uploadUrl, then reference the returned s3Path as the dataset in POST /automl/jobs. This is the programmatic equivalent of the UI's dataset uploader.

Scope: ml-workbench:write

Request Body

FieldTypeRequiredDescription
filenamestringYesDataset file name (e.g. titanic.csv)
contentTypestringNoMIME type (default text/csv)

Response 201 Created

{
"datasetId": "f22a9764e2ed836b9799a50b",
"uploadUrl": "https://s3.amazonaws.com/strongly-dev/mlops/automl/jobs/.../input/titanic.csv?X-Amz-...",
"s3Path": "mlops/automl/jobs/f22a9764e2ed836b9799a50b/input/titanic.csv",
"bucket": "strongly-dev"
}

Then PUT the raw file bytes to uploadUrl and create the job:

curl -X PUT "$uploadUrl" -H "Content-Type: text/csv" --data-binary @titanic.csv
# then POST /automl/jobs with { "dataset": "<s3Path>", "targetColumn": "Survived", ... }

GET /api/v1/automl/datasets/:id/files

List the data files inside a project dataset volume, so you can pick which one to train on (pass its key as datasetFile to POST /automl/jobs).

Scope: ml-workbench:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesDataset volume id (from GET /automl/datasets)

Response 200 OK

{
"volumeId": "vol_customers_001",
"s3Location": "s3://strongly/projects/proj_1/volumes/vol_customers_001",
"files": [
{ "key": "projects/proj_1/volumes/vol_customers_001/customers.csv", "name": "customers.csv", "size": 45000, "isDirectory": false }
]
}

GET /api/v1/automl/datasets/:id/columns

Get the column headers of a dataset file in a project volume (to choose the target and feature columns). Reads only the header row.

Scope: ml-workbench:read

Path Parameters

ParameterTypeRequiredDescription
idstringYesDataset volume id

Query Parameters

ParameterTypeRequiredDescription
filestringNoFile key within the volume. Optional when the volume has exactly one data file

Response 200 OK

{
"volumeId": "vol_customers_001",
"file": "projects/proj_1/volumes/vol_customers_001/customers.csv",
"columns": ["usage_days", "monthly_spend", "support_tickets", "plan_type", "churned"]
}