# Advanced Agent
POST https://api.you.com/v1/agents/runs
Content-Type: application/json
This endpoint engages advanced agents that use tools, multi-turn reasoning, and planning to solve complex queries. The agents break down each query into a workflow, execute the steps iteratively, and reflect on the findings before generating a final response.
Use it for answering complex questions that require in depth responses.
The data returns as a JSON payload with a `application/json` content type.
The call only returns when the agent has finished fully responding to the input question.
Reference: https://docs.you.com/custom-solutions/agents/advanced-agent/advanced-agent-runs
## OpenAPI Specification
```yaml
openapi: 3.1.0
info:
title: advanced
version: 1.0.0
paths:
/v1/agents/runs:
post:
operationId: advanced-agent-runs
summary: Advanced Agent
description: >-
This endpoint engages advanced agents that use tools, multi-turn
reasoning, and planning to solve complex queries. The agents break down
each query into a workflow, execute the steps iteratively, and reflect
on the findings before generating a final response.
Use it for answering complex questions that require in depth responses.
The data returns as a JSON payload with a `application/json` content
type.
The call only returns when the agent has finished fully responding
to the input question.
tags:
- ''
parameters:
- name: Authorization
in: header
description: Bearer authentication
required: true
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/type_:AdvancedAgentRunsBatchResponse'
'401':
description: The Authorization Bearer token was missing or invalid
content:
application/json:
schema:
$ref: '#/components/schemas/type_:AgentRuns401Response'
'422':
description: When the request data coming in is invalid
content:
application/json:
schema:
$ref: '#/components/schemas/type_:AgentRuns422Response'
requestBody:
content:
application/json:
schema:
type: object
properties:
agent:
type: string
enum:
- advanced
description: >-
Setting this value to "advanced" is mandatory to use the
advanced agent.
input:
type: string
description: The question you'd like to ask the agent
stream:
type: boolean
enum:
- false
description: >-
Must be set to `true` when you want to stream the agent
response as its being generated, and `false` when you want
the response to return after the agent has finished.
tools:
type: array
items:
$ref: >-
#/components/schemas/type_:AdvancedAgentRunsRequestToolsItem
description: >-
The advanced agent accepts either `compute` or `research`
tools Compute allows your agent to use a Python code
interpreter for tasks such as data analysis, mathematical
calculations, and plot generation.
Research
iteratively searches the web, analyzes the results, and
stops when finished. It then provides a comprehensive report
to your agent with current, cited information.
verbosity:
$ref: '#/components/schemas/type_:AdvancedAgentRunsRequestVerbosity'
description: >-
Controls the level of detail provided by the agent's
response. Choosing high maps to a long-form report while
medium maps to a medium verbosity report that captures most
details but is less comprehensive.
workflow_config:
$ref: >-
#/components/schemas/type_:AdvancedAgentRunsRequestWorkflowConfig
description: >-
Defines the maximum number of steps the agent uses in its
workflow plan to answer your query. Higher values allow for
more tool calls, but it takes longer for the agent to
provide the response. For instance, setting
max_workflow_steps=5 could allow the agent to call the
research tool 3 times and the compute tool 2 times.
required:
- agent
- input
- stream
servers:
- url: https://api.you.com
components:
schemas:
type_:AdvancedAgentRunsRequestToolsItemResearchSearchEffort:
type: string
enum:
- auto
- low
- medium
- high
description: >-
This parameter maps to different configurations regarding the depth of
research the tool can perform. Its values range from `low`, `medium` to
`high`.
Alternatively, use `auto` mode for a more dynamic search approach,
allowing the tool the freedom to adjust its subparameters.
title: AdvancedAgentRunsRequestToolsItemResearchSearchEffort
type_:AdvancedAgentRunsRequestToolsItemResearchReportVerbosity:
type: string
enum:
- medium
- high
description: Select whether to receive a medium or high length model response.
title: AdvancedAgentRunsRequestToolsItemResearchReportVerbosity
type_:AdvancedAgentRunsRequestToolsItem:
oneOf:
- type: object
properties:
type:
type: string
enum:
- compute
description: 'Discriminator value: compute'
required:
- type
- type: object
properties:
type:
type: string
enum:
- research
description: 'Discriminator value: research'
search_effort:
$ref: >-
#/components/schemas/type_:AdvancedAgentRunsRequestToolsItemResearchSearchEffort
description: >-
This parameter maps to different configurations regarding the
depth of research the tool can perform. Its values range from
`low`, `medium` to `high`.
Alternatively, use `auto` mode for a more dynamic search
approach, allowing the tool the freedom to adjust its
subparameters.
report_verbosity:
$ref: >-
#/components/schemas/type_:AdvancedAgentRunsRequestToolsItemResearchReportVerbosity
description: >-
Select whether to receive a medium or high length model
response.
required:
- type
- search_effort
- report_verbosity
discriminator:
propertyName: type
title: AdvancedAgentRunsRequestToolsItem
type_:AdvancedAgentRunsRequestVerbosity:
type: string
enum:
- medium
- high
description: >-
Controls the level of detail provided by the agent's response. Choosing
high maps to a long-form report while medium maps to a medium verbosity
report that captures most details but is less comprehensive.
title: AdvancedAgentRunsRequestVerbosity
type_:AdvancedAgentRunsRequestWorkflowConfig:
type: object
properties:
max_workflow_steps:
type: integer
default: 10
required:
- max_workflow_steps
description: >-
Defines the maximum number of steps the agent uses in its workflow plan
to answer your query. Higher values allow for more tool calls, but it
takes longer for the agent to provide the response. For instance,
setting max_workflow_steps=5 could allow the agent to call the research
tool 3 times and the compute tool 2 times.
title: AdvancedAgentRunsRequestWorkflowConfig
type_:AdvancedAgentRunsBatchResponseInputItemRole:
type: string
enum:
- user
description: The access based role of the user
title: AdvancedAgentRunsBatchResponseInputItemRole
type_:AdvancedAgentRunsBatchResponseInputItem:
type: object
properties:
role:
$ref: >-
#/components/schemas/type_:AdvancedAgentRunsBatchResponseInputItemRole
description: The access based role of the user
content:
type: string
description: The question populated in the request payload
required:
- role
- content
title: AdvancedAgentRunsBatchResponseInputItem
type_:AdvancedAgentRunsResponseOutputType:
type: string
enum:
- message.answer
- web_search.results
description: >-
The type of output. This can either be:
* `message.answer` for text responses
* `web_search.results` for output that contains web links.
`web_search.results` only appear when you use the `research` tool
title: AdvancedAgentRunsResponseOutputType
type_:AgentRunsResponseWebSearchResultSourceType:
type: string
enum:
- web_search
description: The type of content the agent can return outside a text response
title: AgentRunsResponseWebSearchResultSourceType
type_:AgentRunsResponseWebSearchResult:
type: object
properties:
source_type:
$ref: >-
#/components/schemas/type_:AgentRunsResponseWebSearchResultSourceType
description: The type of content the agent can return outside a text response
citation_uri:
type: string
description: The web search result the agent returned along in its response
provider:
type: string
description: This is currently unused
title:
type: string
description: The title of the web site returned under url
snippet:
type: string
description: A textual portion of the web site returned under url
thumbnail_url:
type: string
description: The thumbnail image of the url
url:
type: string
description: The web search result the agent returned along in its response
required:
- source_type
- citation_uri
- title
- snippet
- url
description: >-
The text response of the agent. This field only returns when the type is
`web_search.results`
title: AgentRunsResponseWebSearchResult
type_:AdvancedAgentRunsResponseOutput:
type: object
properties:
text:
type: string
description: >-
The text response of the agent. This field returns when `type ==
message.answer`. The response returns as markdown formatted text.
For an overview of Markdown syntax, see the [Basic Syntax Markdown
Guide](https://www.markdownguide.org/basic-syntax/)
type:
$ref: '#/components/schemas/type_:AdvancedAgentRunsResponseOutputType'
description: >-
The type of output. This can either be:
* `message.answer` for text responses
* `web_search.results` for output that contains web links.
`web_search.results` only appear when you use the `research` tool
content:
type: array
items:
$ref: '#/components/schemas/type_:AgentRunsResponseWebSearchResult'
description: |-
The text response of the agent.
This field returns when `type == web_search.results`
required:
- type
description: The response populated by the agent.
title: AdvancedAgentRunsResponseOutput
type_:AdvancedAgentRunsBatchResponse:
type: object
properties:
agent:
type: string
description: The id of the agent populated in the request.
input:
type: array
items:
$ref: '#/components/schemas/type_:AdvancedAgentRunsBatchResponseInputItem'
description: The users access role and question you asked the agent
output:
type: array
items:
$ref: '#/components/schemas/type_:AdvancedAgentRunsResponseOutput'
description: The agent's response items
required:
- agent
- input
- output
description: The id of the agent populated in the request.
title: AdvancedAgentRunsBatchResponse
type_:AgentRuns401Response:
type: object
properties:
detail:
type: string
description: The message returned by the error
title: AgentRuns401Response
type_:AgentRuns422ResponseDetailItemLocItem:
oneOf:
- type: string
- type: integer
title: AgentRuns422ResponseDetailItemLocItem
type_:AgentRuns422ResponseDetailItem:
type: object
properties:
type:
type: string
loc:
type: array
items:
$ref: '#/components/schemas/type_:AgentRuns422ResponseDetailItemLocItem'
msg:
type: string
input:
type: string
required:
- type
- loc
- msg
- input
title: AgentRuns422ResponseDetailItem
type_:AgentRuns422Response:
type: object
properties:
detail:
type: array
items:
$ref: '#/components/schemas/type_:AgentRuns422ResponseDetailItem'
title: AgentRuns422Response
securitySchemes:
bearerAuth:
type: http
scheme: bearer
```
## SDK Code Examples
```python
# Use our official Python SDK to get an agent response
from youdotcom import You
from youdotcom.models import AdvancedAgentRunsRequest, AgentRunsBatchResponse
with You("api_key") as you:
response = you.agents.runs.create(
request=AdvancedAgentRunsRequest(
input="You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it",
stream=False
)
)
if isinstance(response, AgentRunsBatchResponse) and response.output:
for output in response.output:
if output.text:
print(output.text)
```
```typescript
// Use our official TypeScript SDK to get an agent response
import { You } from "@youdotcom-oss/sdk";
import type { AdvancedAgentRunsRequest } from "@youdotcom-oss/sdk/models";
const you = new You({ apiKeyAuth: "api_key" });
const request: AdvancedAgentRunsRequest = {
agent: "advanced",
stream: false,
input: "You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it",
tools: [{
type: "research",
searchEffort: "low",
reportVerbosity: "medium",
}]
};
const result = await you.agentsRuns(request);
console.log(result);
```
```javascript
// Use our official JavaScript SDK to get an agent response
import { You } from "@youdotcom-oss/sdk";
const you = new You({ apiKeyAuth: "api_key" });
const request = {
agent: "advanced",
stream: false,
input: "You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it",
tools: [{
type: "research",
searchEffort: "low",
reportVerbosity: "medium",
}]
};
const result = await you.agentsRuns(request);
console.log(result);
```
```go
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.you.com/v1/agents/runs"
payload := strings.NewReader("{\n \"agent\": \"advanced\",\n \"input\": \"You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it\",\n \"stream\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer ")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
```
```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse response = Unirest.post("https://api.you.com/v1/agents/runs")
.header("Authorization", "Bearer ")
.header("Content-Type", "application/json")
.body("{\n \"agent\": \"advanced\",\n \"input\": \"You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it\",\n \"stream\": false\n}")
.asString();
```
```csharp
using RestSharp;
var client = new RestClient("https://api.you.com/v1/agents/runs");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer ");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"agent\": \"advanced\",\n \"input\": \"You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it\",\n \"stream\": false\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```
```swift
import Foundation
let headers = [
"Authorization": "Bearer ",
"Content-Type": "application/json"
]
let parameters = [
"agent": "advanced",
"input": "You are a biologist studying the impacts of microplastics. Explain what microplastics are to a group of engineers, explain the impacts of microplastics on the body, and what the common sources and dosages of microplastics are. Highlight what a safe dosage might be and how to achieve it",
"stream": false
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://api.you.com/v1/agents/runs")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
```