Name ~lab/family-latest as the model, and always run the newest model of that family.
A ~lab/family-latest name always runs the newest model of a family. When a lab ships a new version, the name moves to it; code that calls the name keeps working, on the new version.
curl https://opendunes.com/v1/chat/completions \
-H "Authorization: Bearer $OPENDUNES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "~anthropic/claude-sonnet-latest",
"messages": [{ "role": "user", "content": "Marhba!" }]
}'The answer's model is the model that served, not the name you sent — so you can log when the name moves.
They are in the catalogue, each as its own entry: GET /v1/models lists them among the models, such as ~anthropic/claude-opus-latest, ~anthropic/claude-sonnet-latest, ~google/gemini-flash-latest, ~openai/gpt-mini-latest or ~x-ai/grok-latest. A name the catalogue does not carry answers 404.
An entry reports the price, context length and modalities of the model it points to today, and a request is billed at that model's price, in DA.
Your request keeps working even if the new model does not take every parameter you send. Where the new model requires reasoning and the request turns it off — reasoning: { effort: "none" }, enabled: false, max_tokens: 0 — reasoning runs at the lowest effort the model supports.
Pin an exact model name where you need the same answer tomorrow; use -latest where you want the newest.