> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# InternChatCompletionRequest

An OpenAI-compatible streaming chat completion request for one intern. Other OpenAI fields such as `temperature` or `tools` are ignored. The intern owns its sampling and its tools.

## Fields

| Field          | Type                                                                              | Required             | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | Example           |
| -------------- | --------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| `ApprovalMode` | [\*components.InternApprovalMode](../../models/components/internapprovalmode.mdx) | :heavy\_minus\_sign: | How the run started by this prompt handles tool approvals. `self-drive` (the default when omitted) consents on your behalf and runs the shell unsandboxed. `manual` asks you before an approval-bearing tool runs, as an `openrouter.provide_input` permission request, and keeps the shell sandboxed until an escalation is allowed. The mode applies to the run this prompt starts and is not remembered by the session. Repeat it on each new prompt that should use it. A `tool` reply continues the run under the mode it started with. | manual            |
| `Messages`     | \[][components.InternChatMessage](../../models/components/internchatmessage.mdx)  | :heavy\_check\_mark: | The conversation. Only the last message is read. A last `user` message starts a run. A last `tool` message answers the interaction named by its `tool_call_id` and requires `session_id`.                                                                                                                                                                                                                                                                                                                                                    |                   |
| `Model`        | `*string`                                                                         | :heavy\_minus\_sign: | Echoed as `model` on the streamed chunks; the final chunk may carry the model the intern reported instead. The intern chooses its own model, so this value does not change what runs.                                                                                                                                                                                                                                                                                                                                                        | openrouter/intern |
| `SessionID`    | `*string`                                                                         | :heavy\_minus\_sign: | The daemon session to continue, as returned in `session_id` on the final chunk of an earlier response. Omit it to start a new session. Required when the last message has role `tool`.                                                                                                                                                                                                                                                                                                                                                       | ses\_7f3c9a       |
| `Stream`       | `bool`                                                                            | :heavy\_check\_mark: | Must be `true`. This endpoint only streams.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | true              |
