Radient Automatic
Radient Automatic is the routing layer behind the auto model. Set model to "auto" in any chat request and Radient selects the model that serves it, so you do not have to track which model is best or cheapest for each task — the choice is updated for you without code changes.
curl https://api.radienthq.com/v1/chat/completions \
-H "Authorization: Bearer $RADIENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{ "role": "user", "content": "Summarize this release note." }]
}'
#What auto does today
- Text and image requests are served by the current default model. Tool use (function calling) is supported on this route.
- Requests that carry video, audio or file inputs — content the default model cannot read — are routed to a model that accepts every modality, so the request still goes through. That model is billed at its own rate.
- Only the content steers the choice. The routing decision looks at the request's message content, its content-part types, and whether tools are present. Parameters like
temperature,max_tokensand reasoning controls do not influence which model serves the call. - If the route cannot serve a request (for example the serving endpoint is unavailable), the call fails with an error rather than silently switching to a different backend.
#Auto effort
reasoning_effort (and its object form, reasoning: { "effort": … }) accepts the special value "auto":
{
"model": "auto",
"reasoning_effort": "auto",
"messages": [{ "role": "user", "content": "Plan a migration." }]
}
What "auto" means today:
- It is a Radient-defined value, not a model value. The server resolves
"auto"to the service default — currently"max"— before the request is forwarded. It is not adaptive: the server does not inspect your prompt to pick a depth. - Every other value (
"low","medium","high", or a value the serving model understands) is passed through unchanged. - Whether the depth reaches the model depends on the route that serves it; where a model does not accept reasoning controls, the field has no effect.
- The resolved effort is not reported back — no response field and no header carries it.
#Seeing what served your call
There is no header or field reporting the routing decision itself. What you can read from a response:
model— the model that actually served the request (forautothis is the serving model's id, never the string"auto").provider— the serving endpoint, as reported by it.cost— the versionedcostobject: the amount in USD deducted from your balance, top level as a sibling ofusage;usage.costmirrors the same figure. When no figure is present, none was available for the call — it does not mean the call was free. See Cost reporting.
The console's usage view shows the same attribution per request.
#What a call costs
autois deducted 1:1 with the serving model's cost — no markup at inference.- The default route is billed from its published rate card: currently $0.30 per million input tokens, $1.20 per million output tokens, $0.006 per million cached input tokens. The models listing's
autoentry publishes the current figures; if the active route has no published card, its pricing shows-1and the response'scostobject is the record of the charge. - A request served by the all-modality fallback model is billed at that model's own rates.
- Before a call is admitted, the credit gate reserves an estimate for it — for the
autoid the reservation is a flat $1.00. The reservation is released as the call settles; the actual charge is written to your ledger. See the credit gate.
#Streaming
auto supports streaming exactly like a named model: "stream": true returns SSE frames as the model produces them, ending with data: [DONE]. With streaming, the final usage frame carries the same usage object alongside the cost object. Send stream_options: {"include_usage": true} to always receive it. See Chat API.
#Failures
Routing failures surface with the same shape as any chat call:
- A request to
autothat cannot be served answers500 {"error":"Failed to process chat completions request"}(non-streaming). With streaming, headers are sent before the model is contacted, so a later failure cannot change the status — see Chat API. - The credit gate can refuse the call with
402 {"error":"insufficient credits"}before anything is sent.
#Related
- Chat API — the endpoint
autois used on. - API Reference — models, error tables and limits.
- Radient Pass — the balance every call is deducted from.