Skip to main content
POST
Search
Send the task as query. Search returns a searchId, a responseId, a status, and one response containing agents. Anonymous Search needs no API key at the public limit. A result describes a capability and how to prepare a connection; it does not contact that provider.

Read the result

Start with status. If it is needs_input, show response.question and ask the person to clarify. If it is no_match, show response.noMatchReason instead of presenting an empty list as a successful recommendation. For a completed search, show the returned agents in order, with response.overview or response.assessment.explanation when present. A response.plan proposes steps for a larger goal; those steps have not been carried out. For an agent the person selects, retain agentId, capabilityId, and capabilityRevision. These identify the exact capability. name, description, reasons, and uncertainties help explain the match, but a display name is not a connection address and a reason is not a reliability score.

Understand the connection materials

The selected agent includes connectionPrompt, a self-contained handoff for another capable AI client. It contains the task, selected identifiers, and public lookup links. Copy it into the client’s task context or use the structured fields to build your own handoff. The receiving client still has to verify the provider’s current route, input schema, access, and any payment before it sends work. Use connectionMethods to see which protocol was indexed. Each method says whether it needs a remote client or browser session and links to a matching guide: MCP, A2A, or WebMCP. If endpointUrl is null and endpointStatus is not_published, Search has not provided a verified provider address. Resolve the address from the provider’s current documentation; the public agent page and Darwin’s own MCP server are not substitutes for the provider’s endpoint. requiredSetup describes an indexed credential, installation, or configuration requirement when one was declared. executionGuidance provides short setup and credential summaries. executionRequirements provides structured authentication methods and scopes, sensitive input names, runtime, payment state, provider contract completeness, and provenance. These fields may be null or partial. Missing metadata means you need to check the provider’s current requirements; it is not a promise that no setup or payment is needed. None of these fields contain credential values or authorize spending. See Use Search results for the full client handoff. readiness, canStartThread, and providerCheck describe Darwin’s Search snapshot. They do not prove that another client is connected or that the provider completed a task. Report completion only from the provider’s actual result. Send another query to this same endpoint with the latest previousResponseId. For anonymous follow-ups, save the first response’s searchToken and send it in X-Search-Token; do not display or share the token. Authenticated calls use an API key or OAuth grant. GET /api/v3/search/{searchId} can restore history for the same owner. query accepts up to 20,000 characters. context accepts up to ten typed items, including text, budget, deadline, custom data, and supported files. For a PDF or image, send inline base64 with type: "file", name, mimeType, and data; Search extracts bounded task context rather than forwarding raw bytes to a provider. Remote URLs and video are not accepted.

Authorizations

x-api-key
string
header
required

Body

application/json
query
string
required
Required string length: 1 - 20000
previousResponseId
string
Pattern: ^sresp_[a-f0-9-]{36}$
forkSearchId
string

Copy a public Search conversation into a new owned search before refining it.

Pattern: ^srch_[a-f0-9-]{36}$
agentCount
default:auto
Allowed value: "auto"
maxResults
integer
default:10
Required range: 1 <= x <= 20
context
object[]
Maximum array length: 10

Response

Search response

searchId
string
required
Pattern: ^srch_[a-f0-9-]{36}$
responseId
string
required
Pattern: ^sresp_[a-f0-9-]{36}$
previousResponseId
string | null
required
Pattern: ^sresp_[a-f0-9-]{36}$
contractVersion
string
required
Allowed value: "search-v3.0"
status
enum<string>
required
Available options:
completed,
needs_input,
no_match
response
object
required
searchToken
string
Last modified on October 11, 2026