Skip to main content
POST

Overview

The Navigator API provides a computer-use model family that predicts actions to interact with a browser. Given a task in natural language, the current screenshot, and the full action history, the model predicts the next action to take to accomplish the task. The API follows the OpenAI chat.completions format. The latest model is:
Want to try Navigator without writing code?
  • Navigator Browser Extension — test and explore in your own local browser
  • Yutori Local — Mac desktop app that gives our agents access to a browser on your computer, enabling login-required workflows and local browsing tasks

Screenshot Requirements

Screenshots should capture only the browser content itself. Do not include the operating system UI, window title bars, browser tabs, URL bars, or other chrome elements. For the best performance, render screenshots in WXGA (1280×800, 16:10). The model should generalize well to most other resolutions, but grounding accuracy may degrade with extreme aspect ratios. We recommend using the WebP format for screenshots, as it offers significantly better compression than PNG — especially for multi-step trajectories with many images. The Python SDK provides helpers that handle resizing, WebP conversion, and base64 encoding:
See yutori.navigator.images for full options (custom resolution, quality settings).

Coordinate System

All Navigator models output normalized coordinates in a 1000×1000 space. Convert to absolute pixel coordinates before executing actions in your browser:
See yutori.navigator.coordinates for the inverse normalize_coordinates function.

Response Format

Actions are returned via the tool_calls field in the response message:
The content field contains the model’s reasoning, tool_calls contains the predicted action(s), and request_id is a unique identifier useful for debugging. When the model intends to stop, it returns a response with only content text and no tool_calls. This content field is the model’s final response to the task.

Multi-Turn Conversations

The model expects full chat history to best predict the next action. We do not recommend removing any messages when constructing requests. For longer trajectories, we suggest dropping only old screenshots while keeping every message intact. Always keep a minimum of the 2 most recent screenshots, and never send a request with no screenshot at all. Requests that carry only stale screenshots (or none) sharply degrade grounding and can cause the model to loop or hallucinate. The Python SDK provides create_trimmed / acreate_trimmed (in yutori.navigator) which strip older screenshots automatically while preserving recent ones and all text — by default keeping the 6 most recent screenshots (and always the latest), and only trimming when a request would otherwise exceed the size limit. Include the assistant’s previous response with its tool_calls, followed by tool results with the new screenshot:
The tool result can be a short description of what the tool did or whether it was successful. Including the current URL in the tool response is important for better attribution of information sources. If the tool extracts additional information (e.g. extract_elements, execute_js), the raw output of the tool can be provided as the tool result so the model also has visibility of the extracted information.

Custom Tools

You can provide additional tools alongside the built-in browser actions using the tools parameter. Custom tools are appended after the default tool set.
Results of custom tool calls should also be provided as a tool response so the model can use it for subsequent decisions:

Tool Choice

Control whether tool calls are parsed into the tool_calls array:
  • "auto" (default): Parses and returns tool calls as a structured tool_calls list
  • "none": Returns the raw model response as content text (tool calls may still appear inside <tool_call> XML tags in content)

Prompting Guidance

We use a default system prompt when none is provided, and generally do not recommend providing custom system prompts — extra behavioral instructions may degrade results. Instead, place additional instructions in the first user message, after the main task description:
We also recommend not interrupting trajectory execution with additional user messages, except to force the model to stop and summarize:

Structured Decoding

By default, the API uses a structural_tag response format to enforce valid tool call generation via guided decoding. You do not need to provide this yourself — the API generates it automatically based on the active model and tool set. If custom tools are included in your request, their schemas are automatically incorporated. We do not recommend overriding the response_format unless you also set tool_choice="none" to work with the raw model output directly.

Authorizations

Authorization
string
header
required

Use Authorization: Bearer <api_key>

Body

application/json
messages
(ChatCompletionDeveloperMessageParam · object | ChatCompletionSystemMessageParam · object | ChatCompletionUserMessageParam · object | ChatCompletionAssistantMessageParam · object | ChatCompletionToolMessageParam · object | ChatCompletionFunctionMessageParam · object | ChatCompletionToolImageMessageParam · object | ChatCompletionObservationMessageParam · object)[]
model
enum<string>
Available options:
n1.5-latest,
n1.5-20260428
max_completion_tokens
integer
default:1572
temperature
number | null
default:0.3
top_p
number | null
repetition_penalty
number | null

Penalizes token repetition. 1.0 = no penalty, >1.0 = less repetition. Only supported by vLLM-backed models.

presence_penalty
number | null
frequency_penalty
number | null
tools
Tools · object[] | null

Additional tools to extend the default browser action tools. Tools are merged with the built-in browser actions (left_click, scroll, type, etc.).

tool_choice
default:auto

Controls whether tool calls are parsed from the response. Model always decides whether to call a tool. 'none' treats the response as text-only, but tool calls may be present inside <tool_call> tags, 'auto' (default) parses tool calls automatically as tool_calls list in response.

response_format
Response Format · object | null

An object specifying the format that the model must output.

tool_set
string | null

Named tool set (n1.5+ models only). 'browser_tools_core-20260403' (default): coordinate-based tools. 'browser_tools_expanded-20260403': adds extract_elements, find, set_element_value, execute_js.

disable_tools
string[] | null

List of tool names to remove from the selected tool set (n1.5+ models only).

json_schema
Json Schema · object | null

JSON Schema for structured output (n1.5+ models only). Appended to your task message. Model returns JSON in ```json fences, parsed and returned as 'parsed_json' in the response.

prev_request_id
string | null

The request_id returned by the previous Navigator call in this conversation. Echo it back on each subsequent call to link the calls into one conversation for usage reporting.

Response

Successful Response