Trainers
Limited access
What a trainer is
A trainer is the instruction run this training plan, on this data, with this configuration, now and maybe
again later. Creating one is the only step a person takes to obtain a model: everything after the 201 β the
export, the training job, the model version, the inference image, the inferencer and its rule β happens on its
own and is described in How it works.
| To | Call |
|---|---|
| Schedule a training | POST /ai/organization/{organizationId}/trainer |
| List the organization’s trainers | GET /ai/organization/{organizationId}/trainer |
| Remove a trainer and its schedule | DELETE /ai/organization/{organizationId}/trainer/{trainerId} |
Creating a trainer
A trainer that learns the sessions of one APN from a time series and retrains every quarter:
The response is 201 Created with a Location header holding the trainer’s identifier.
Field by field
| Field | Required | Meaning |
|---|---|---|
name |
yes | The trainer’s name, unique in the organization. Names the Kubernetes secret that carries your credentials to the job |
description |
no | Free text |
imageExecution.model.name |
yes | The model name: ^[a-z0-9][a-z0-9-]*$. Only one trainer per model name per organization. It becomes the name of the inferencer, the rule and the scheduler entry β see the naming table |
imageExecution.trainingPlan.identifier |
yes | The plan to run, from the catalogue. Must exist |
imageExecution.configuration |
per plan | Keyβvalue pairs, one per entry in the plan’s configFields. Handed to the job as environment variables |
imageExecution.timeout |
yes | Seconds the training job may run before it is killed. The autoencoder and the image plan need far more than the forest |
source |
yes | Exactly one of path or timeserie, below |
schedule |
no | When and how often to run. Absent: once, about a minute from now |
createRule |
no | Whether the first training should create the plan’s rule. Default true |
Read-only fields come back on GET: identifier, orgName, hasRetraining and schedule.schedulerId β the
identifier of the entry the scheduler created, which is also the model name.
Data sources
A file in your file space
path is relative to the root of your organization’s file space, where you upload it
beforehand. Inside the job the file space is mounted at /data, so the plan reads /data/radius/sessions-2026-q2.parquet.
A path may also be a folder, which is what the image plan expects.
A file source schedules a single image execution in the scheduler.
A time series
| Field | Meaning |
|---|---|
id |
The time series to export, from the organization’s time series |
filter |
Optional. A time series filter restricting the rows, for example to a date range |
columns |
Which of your columns feed the plan, and under what name. output.name must be one of the names the plan lists in columnData; output.parquet.type fixes the Parquet type when the default is not right |
timeout |
Seconds to wait for the export. The scheduler waits five seconds more than this for the export’s callback |
A time-series source schedules a pipeline: first the platform’s own
Parquet export of that time series, writing
<model>-<plan>-<time series>.parquet into your file space, then the training image with dataSourcePath
pointing at it. Each retraining exports again, so the model always learns from current data.
Schedules
expressionβ a cron expression. Standard five fields work; the scheduler also accepts a leading seconds field and a trailing year field, and?in the day fields.0 0 0 15 */3 ? *is 00:00:00 on the 15th of every third month. Time zone is UTC.isImmediateExecutionβ also run now, without waiting for the first tick. The console sets it, so a new trainer always produces a first version straight away.
No schedule at all means a single execution about one minute after creation, and hasRetraining: false.
An expression that pins one instant β every field numeric, including the year β is treated the same way.
What the platform does with your request
Knowing this helps when something does not appear where you expect it.
- Rejects the request if another trainer in the organization has the same
nameor the same model name, or if the plan is not in the catalogue. - Creates a Kubernetes secret named
<organization>-<trainer name>-env-secretholding your API key and the organization name. The training job uses it to register the inferencer, create the rule and report back β everything the job does, it does as you. - Asks the scheduler for an image execution (file source) or a pipeline (time-series source) named after the
model, running the plan’s image with these environment variables: your
configurationentries,modelName,createRule,minDataToTrainfrom the plan, anddataSourcePath; plus the secret above and the platform’s shared AI settings. The scheduler waits for the job’s callback fortimeout+ 5 seconds. - Stores the trainer and answers
201.
The trainer record is a schedule, not a status: to know whether a training ran and how it went, read the
scheduler’s history for schedulerId = model name, or open See history in
the console.
Listing trainers
Returns every trainer of the organization, with the read-only fields filled in. An organization with no trainers gets an empty list, not an error.
Removing a trainer
Removes the schedule from the scheduler, the credentials secret and the trainer record, and answers 204. A
training that is running is not interrupted β cancel it through the scheduler
if you need to. The inferencer, its model versions and its rule are not touched: they are separate
resources, removed through the Inferencers API. Deleting the trainer only means no further
version will be trained.
Errors
Errors follow the platform’s usual shape, a list of code, message and context:
| Situation | Status |
|---|---|
A trainer with that name, or that model name, already exists in the organization |
400 |
| The training plan identifier is not in the catalogue | 400 |
The body fails the specification β a model name with uppercase letters, both path and timeserie, a missing timeout |
400 |
| The organization does not exist, or the trainer to delete does not | 404 |