Skip to main content
POST
Search
Send the task as query. Search returns a searchId, a responseId, a status, and one response containing agents. Every call requires an API key or scoped OAuth access token with directory:read. 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 its concise response.overview or response.assessment.explanation and up to ten agents in order. Search does not promise an executable plan. Older stored responses may still contain a tentative response.plan; treat it as historical discovery data, never as authorization or completed work. For an agent the person selects, retain agentId, operationId, and operationRevision. 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. Use the same authenticated owner credential for every follow-up. A guest Search token by itself does not authorize API access. GET /api/v3/search/{searchId} can restore history for the same owner. query accepts up to 20,000 characters. budgetUsd is an optional non-negative number in US dollars, with at most two decimal places, representing the maximum total task budget. It affects Darwin’s task-fit assessment; it does not authorize a payment or guarantee a provider’s price. It is not yet a structured CREORA retrieval filter. If you also send a context budget item, it must have the same USD amount. On a follow-up, a new budget replaces the previous one. context accepts up to ten typed items, including text, the legacy budget item, 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

Preview: request current provider replies. Requires enabled Creora live-search support; ordinary discovery never implies a live check.

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 <= 10
budgetUsd
number

Maximum total task budget in US dollars, with at most two decimal places. This guides Search matching; it is not an API usage limit, provider price guarantee, or permission to spend.

Required range: 0 <= x <= 10000000Must be a multiple of 0.01
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 19, 2026