Update LLM config for a purpose
const url = 'http://localhost:11044/api/v1/config/llms/example';const options = { method: 'PUT', headers: {'X-Embabel-Api-Key': '<X-Embabel-Api-Key>', 'Content-Type': 'application/json'}, body: '{"description":"example","model":"example","reasoningEffort":"example","role":"example","temperature":1}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url http://localhost:11044/api/v1/config/llms/example \ --header 'Content-Type: application/json' \ --header 'X-Embabel-Api-Key: <X-Embabel-Api-Key>' \ --data '{ "description": "example", "model": "example", "reasoningEffort": "example", "role": "example", "temperature": 1 }'Sets model, temperature, and optional reasoning effort for one of: chat, actionCompilerLlm, memoryLlm, apiExplorerLlm, codingLlm, fallbackCodingLlm, rankerLlm, plannerLlm, lensLlm. A JSON null counts as omitted for every field; a blank model or role still names that field. The effort changes only when the body names reasoningEffort: a value sets it, an empty string clears it, and omitting it keeps it. A body whose only named field is reasoningEffort changes just the effort; any other body, even {}, replaces model, role, and temperature, so {} returns them to the deployment default. Nothing reads the actionCompilerLlm, memoryLlm, or apiExplorerLlm setting at runtime, so any reasoningEffort for them, even an empty string, is rejected with 400.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Which purpose to configure: one of the nine the operation description lists
Request Bodyrequired
Section titled “Request Bodyrequired”The settings to apply to that purpose. A body naming only reasoningEffort changes just the effort
How one purpose, or one role override, picks its model: by role or by pinned model, with optional temperature and reasoning effort. Read and written by the /config/llms, /config/chat and /config/llm-roles endpoints
object
What a custom role in llmRoles is for, since built-in roles are described by the catalogue; unused on a purpose setting
Model name to pin. For a purpose, used only when no role is set; in an llmRoles entry, the model the role resolves to. Null or blank pins nothing
Reasoning effort: none, minimal, low, medium, high or xhigh (none turns a thinking model’s reasoning off); null leaves the provider’s default
Role id to select the model by (e.g. chat_best, code_best); for a purpose it takes precedence over model. Not used in an llmRoles entry
Sampling temperature; null keeps the default’s temperature
Example generated
{ "description": "example", "model": "example", "reasoningEffort": "example", "role": "example", "temperature": 1}Responses
Section titled “Responses”Config updated
One purpose’s model settings as saved
object
The pinned model, or null when the purpose inherits one
The purpose that was changed, as named in the path
The reasoning effort the purpose runs at, or null for the model’s default
Always updated
Example
updatedThe sampling temperature, or null for the model’s default
Unknown purpose, unsupported reasoning effort, reasoning effort on a purpose that does not use it, or a model this deployment cannot serve
A refusal from the world administration surface: what went wrong, and the word error so a client reading the body need not consult the status code
object
What was refused and why, written to be shown. Names the offending value where there is one — the unknown mode, the out-of-range threshold, the invalid cron expression
Always error. Present because the map this replaces carried it and a consumer may branch on it
Example
error
