The Model tab sets the provider and model, the output limits, and any extra settings the chosen model accepts.
Provider
Which of your Tenant Settings → AI providers to use. Leave blank to auto-detect: the workspace's default provider if one is set, otherwise the first enabled provider with a valid key.
Model
Leave blank to use the default model the workspace set for that provider — the recommended choice for production, since it lets you upgrade the model for every logic block at once by changing the provider setting, rather than hunting down every step that hardcoded a model name.
Which model runs
No model is built into the platform. Each workspace enables providers in Tenant Settings → AI and sets a key and a default model on each. A step runs on the model it selects, otherwise on the workspace's default provider and that provider's default model. A provider with a key but no default model fails with a message asking you to set one.
Three things need a different kind of model from the chat model: audio output (speech), image output, and an audio context field (transcription). For these, the step's Provider and Model still choose the text model. The other model is picked automatically:
The result always says which model ran: modelSource is selected (you named it), default (the workspace's default model) or auto (picked for the task). To pin a model, add taskModels to the step — one entry per task:
"taskModels": [
{ "task": "speech", "provider": "gemini" },
{ "task": "image", "provider": "openai", "model": "<an image model>" }
] A pinned model is never swapped
If you pin a model that can't do the task — a chat model for audio output, say — the builder warns you, and the step fails when it runs with the recommended model in the message. For audio, a voice the speech model doesn't offer falls back to that model's default voice; the result's voice shows the one used.
Max output tokens
Defaults to 2048. Responses cut off past this limit come back with usage.truncated: true on the step output — check that field if output looks incomplete before assuming something else is wrong. Raising it helps for long generations, but a synchronous HTTP call to a logic block is hard-capped around 29 seconds by the API Gateway integration limit regardless of this setting; for long-running generations, turn on Run in the background (runAsync) for the block, trigger it from an automation (up to 5 minutes), or invoke it over the WebSocket connection instead.
Temperature
Leave blank to use the default, 0.3 — deterministic-leaning, right for most classify, extract and generate tasks. Set a value only when you want more variety.
Some models accept only one temperature. Their value is fixed: it is sent whatever the step says. The platform fixes these at 1 out of the box: OpenAI's o-series (o1, o3, o4 and their variants), Kimi's kimi-k3, DeepSeek's deepseek-reasoner, and any model name containing -thinking. An org admin can fix a temperature for any other model, or replace one of these, in Org Settings → AI Providers → Model settings.
A fixed temperature wins, and the step tells you
If the step sets a temperature and the model's is fixed, the fixed value is sent and the step output's usage.overridden lists what you asked for, what was used, and why. The Model tab also notes it next to the field, so you do not have to clear the field when you switch to such a model.
Model parameters
A model can accept extra settings of its own — a vendor's reasoning effort, for example. An org admin lists them under Org Settings → AI Providers → Model settings: the setting's name, its type, the allowed options and a suggested value. When you choose that model, the Model tab shows one optional field for each. They are saved on the step as params:
"model": "muse-wonder-1.0",
"params": { "reasoning_effort": "high" } - Blank means not sent. The suggested value is only a hint in the field; nothing is sent unless you fill the field in.
- A wrong value fails the step with a message naming the setting and what it accepts.
- A setting the model does not declare is ignored, and listed in the output's
usage.ignoredParamsso a typo does not pass silently. - Edits are live. The org's settings are read on every call, so a change applies to the next run with nothing to redeploy.
Listed models only
The fields appear for a model in the provider's model list. A model name typed in by hand still works — its params are sent only if the org's settings declare them.
There's no streaming toggle here — streaming is determined entirely by how the logic block is invoked (the WebSocket customapi_run action streams tokens live; the synchronous HTTP route does not), not by a step config field.