Model lifecycle
On this page: how to see which base models are current, what happens to the models you trained on a base that ReOpenly retires, and how to move them to a current base.
Current base models
GET /api/v1/base-models lists the base models you can train and call, and
GET /api/openai/v1/models lists the base models you can call. Read these
lists rather than hard-coding model ids: a base that is not listed cannot be
trained on or called. ReOpenly/Qwen3.5-9B is the text base today.
When a base model is retired
A retired base leaves the catalog. The earlier Qwen3.5 text bases (0.8B, 2B and 4B) are retired. This is what the API does for a retired text base and for the models trained on it:
| What you do | What happens |
|---|---|
Call the retired base by its id, or a hosted model or training-job#<job-id> trained on it | 410 with error.code model_deprecated and error.param model. The message names the retired base. The request is refused before the model runs, so it is not charged. |
| Start a training job on the retired base | 422 with code unsupported_model. |
| Retry a job trained on it | 409: the job's frozen base is no longer available. |
| Host, re-point, share or enable a hosted model whose job was trained on it | 409, with a message that names the retired base. |
| Read the job or the hosted model | Both stay. Their responses carry deprecated: true, and GET /api/v1/models?status=deprecated lists your affected hosted models. |
| Download the trained adapter | Still works: GET .../training-jobs/{job_id}/download keeps returning the adapter, so you can keep it, audit it or run it elsewhere. |
Move to a current base
A retry reuses the job's frozen settings, base included, so it cannot move a model to a new base. Instead:
- Start a new training job on a current base with the same data, with
POST .../training-jobs. See Training jobs. - When its
model_availableistrue, re-point your existing hosted model at it withPUT .../models/{model_slug}and a newsource. See Point it at a new training result.
The hosted model keeps its slug, so your code keeps calling the same model
name.
Notice before a retirement
ReOpenly gives at least 14 days' notice before it retires a base model. If you have models trained on that base, you get an email, and the changelog announces the retirement. The notice gives the date and a current base to move to. Until that date, the base and the models trained on it keep working as before.
To check whether your models are affected, read deprecated on your training
jobs and hosted models, or list GET /api/v1/models?status=deprecated.