Skip to main content
Hosted web tools execute through the inference backend. Availability and tool-specific settings depend on the selected model. They are separate from custom functions, which your application executes. Use the same OpenAI client as the quickstart:
Accepted types are web_search, web_search_preview, web_search_2025_08_26, and web_search_preview_2025_03_11. tool_choice can be auto, required, none, or { "type": "web_search" }. Domain values contain a hostname, without a URL scheme. Streaming Responses can contain web_search_call output items alongside text events. Reconcile items by ID; do not append the final response’s text to text already displayed from deltas. Handle terminal errors and incomplete responses. Chat uses a top-level web_search_options object:
Do not combine web_search_options with a non-empty tools array. Read any returned citation annotations when presenting sources.

Messages search and fetch

Messages accepts native hosted tool definitions:
Domain filters belong directly on the Messages tool, unlike Responses’ filters.allowed_domains. Hosted results can contain server_tool_use, web_search_tool_result, and web_fetch_tool_result blocks. These are not requests for your application to execute a function. The current backend may reject replayed hosted tool blocks; retain supported conversational content when constructing another turn. Limitless currently charges the reported model tokens at your configured rates. It does not add a separate search or fetch fee. Search results can increase token usage. This release does not expose per-project web-domain settings in its administration API.