> This page is also available as Markdown: append .md to its URL. The full index of Sikaru docs is at https://docs.sikaru.ai/llms.txt. Code examples use only operations from the public API reference at https://docs.sikaru.ai/api-reference.

# Models and output

Managed agents use the **project default model** unless a request selects another supported catalog model. Sikaru manages model-serving credentials for you.

| Setting               | Where you set it  | What it controls                                                                     |
| --------------------- | ----------------- | ------------------------------------------------------------------------------------ |
| `model`               | A run request     | The catalog model for that run. Omit it to inherit the project default.              |
| `final_output_schema` | A session request | The JSON shape of the session's final answer.                                        |
| `reasoning_effort`    | A session request | `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`, where the model supports it. |

## Discover available models

Use the client and project from the [Quickstart](/get-started/quickstart):

```python
settings = client.model_settings.get_model_settings(project)
print(settings)
```

Read the returned catalog and current default. Put an exact catalog ID in the `model` field. Do not construct a model name or pass an external endpoint.

```python
model_id = os.environ["SIKARU_MODEL_ID"]  # An ID from your project's catalog.
run = client.runs.start(
    project, "support-quickstart",
    tenant_id="demo-customer", user_id="demo-user",
    input={"text": "Summarize this case using the supplied facts."},
    product_context={}, policy={}, model=model_id,
)
```

* Omit `model` to inherit the project default.
* A per-run choice does not change the project default.
* Unknown IDs are rejected before the run is created.
* Existing execution sessions keep their selected model. Selecting a different default does not migrate active conversations.

## Request structured output

Set a final-output schema when you create a session:

```python
session = client.execution_sessions.create(
    project, "support-quickstart",
    tenant_id="demo-customer", user_id="demo-user",
    reasoning_effort="medium",
    final_output_schema={
        "type": "object",
        "properties": {
            "summary": {"type": "string"},
            "missing_information": {"type": "array", "items": {"type": "string"}},
            "next_step": {"type": "string"},
        },
        "required": ["summary", "missing_information", "next_step"],
        "additionalProperties": False,
    },
)["session"]
```

Append a turn to this session using [Sessions and steering](/run/sessions-and-steering). The service validates the schema before it admits it.

Check the terminal status and final output before you parse a result. An intermediate event is not the completed schema-constrained answer.

> **Warning**
>
> A schema checks shape. It does not show that the answer is correct, complete, or safe to use for an external action. Use application validation and [evaluations](/improve/evaluations) for those checks.

## Set reasoning effort

The session request accepts `none`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Support depends on the selected model and service configuration.

Start with the default. Then compare task quality, latency, and measured usage before you choose a different setting.

## Compare behavior deliberately

* Use representative tasks with the same inputs and evaluation criteria.
* Inspect failures as well as passing results.
* Tell missing usage apart from measured zero usage.

Model selection, release promotion, and automatic improvement are separate decisions. Changing a model does not promote a release.

## Next steps

#### [Sessions and steering](/run/sessions-and-steering)

Append turns to a session and steer work in progress.

#### [Evaluations](/improve/evaluations)

Check whether answers are correct, not only well-shaped.

#### [Quickstart](/get-started/quickstart)

Create the client and agent used in these examples.