curl --request POST \
--url https://dust.tt/api/v1/w/{wId}/assistant/conversations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"content": "This is my message",
"mentions": [
{
"configurationId": "7f3a9c2b1e"
}
]
},
"contentFragments": [
{
"title": "My content fragment",
"content": "This is my content fragment extracted text",
"contentType": "text/plain",
"url": "https://example.com/content",
"fileId": "fil_123456",
"path": "conversation/report.csv",
"skipDataSourceIndexing": true,
"skipFileProcessing": true,
"nodeId": "node_123456",
"nodeDataSourceViewId": "dsv_123456"
}
],
"title": "My conversation",
"skipToolsValidation": false,
"blocking": true,
"spaceId": "space_abc123"
}
'import requests
url = "https://dust.tt/api/v1/w/{wId}/assistant/conversations"
payload = {
"message": {
"content": "This is my message",
"mentions": [{ "configurationId": "7f3a9c2b1e" }]
},
"contentFragments": [
{
"title": "My content fragment",
"content": "This is my content fragment extracted text",
"contentType": "text/plain",
"url": "https://example.com/content",
"fileId": "fil_123456",
"path": "conversation/report.csv",
"skipDataSourceIndexing": True,
"skipFileProcessing": True,
"nodeId": "node_123456",
"nodeDataSourceViewId": "dsv_123456"
}
],
"title": "My conversation",
"skipToolsValidation": False,
"blocking": True,
"spaceId": "space_abc123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: {content: 'This is my message', mentions: [{configurationId: '7f3a9c2b1e'}]},
contentFragments: [
{
title: 'My content fragment',
content: 'This is my content fragment extracted text',
contentType: 'text/plain',
url: 'https://example.com/content',
fileId: 'fil_123456',
path: 'conversation/report.csv',
skipDataSourceIndexing: true,
skipFileProcessing: true,
nodeId: 'node_123456',
nodeDataSourceViewId: 'dsv_123456'
}
],
title: 'My conversation',
skipToolsValidation: false,
blocking: true,
spaceId: 'space_abc123'
})
};
fetch('https://dust.tt/api/v1/w/{wId}/assistant/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dust.tt/api/v1/w/{wId}/assistant/conversations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'message' => [
'content' => 'This is my message',
'mentions' => [
[
'configurationId' => '7f3a9c2b1e'
]
]
],
'contentFragments' => [
[
'title' => 'My content fragment',
'content' => 'This is my content fragment extracted text',
'contentType' => 'text/plain',
'url' => 'https://example.com/content',
'fileId' => 'fil_123456',
'path' => 'conversation/report.csv',
'skipDataSourceIndexing' => true,
'skipFileProcessing' => true,
'nodeId' => 'node_123456',
'nodeDataSourceViewId' => 'dsv_123456'
]
],
'title' => 'My conversation',
'skipToolsValidation' => false,
'blocking' => true,
'spaceId' => 'space_abc123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dust.tt/api/v1/w/{wId}/assistant/conversations"
payload := strings.NewReader("{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dust.tt/api/v1/w/{wId}/assistant/conversations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/v1/w/{wId}/assistant/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"id": 67890,
"created": 1625097600,
"sId": "3d8f6a2c1b",
"owner": {
"regionalModelsOnly": false,
"id": 67890,
"sId": "dQFf9l5FQY",
"name": "My Awesome Workspace",
"role": "admin",
"segmentation": "enterprise",
"flags": [
"advanced_analytics",
"beta_features"
],
"ssoEnforced": true,
"whiteListedProviders": [
"google",
"github"
],
"defaultEmbeddingProvider": "openai"
},
"title": "Customer Inquiry #1234",
"visibility": "private",
"content": [
[
{
"id": 1,
"sId": "9e7d5c3a1f",
"type": "human",
"visibility": "visible",
"version": 1,
"created": 1625097700,
"user": {
"sId": "0ec9852c2f",
"id": 12345,
"createdAt": 1625097600,
"username": "johndoe",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"fullName": "John Doe",
"provider": "google",
"image": "https://example.com/profile/johndoe.jpg"
},
"mentions": [
{
"configurationId": "7f3a9c2b1e"
}
],
"content": "Hello, I need help with my order.",
"context": {
"username": "johndoe123",
"timezone": "America/New_York",
"fullName": "John Doe",
"email": "john.doe@example.com",
"profilePictureUrl": "https://example.com/profiles/johndoe123.jpg",
"agenticMessageData": {
"originMessageId": "2b8e4f6a0c"
}
},
"agentMessageId": 1,
"parentMessageId": "2b8e4f6a0c",
"status": "completed",
"actions": [
{
"generatedFiles": [
{
"fileId": "<string>",
"filePath": "<string>",
"title": "<string>",
"contentType": "<string>",
"snippet": "<string>",
"hidden": true,
"isInProjectContext": true
}
]
}
],
"chainOfThought": "The user is asking about their order. I should first greet them and then ask for their order number.",
"rawContents": [
{
"step": 1,
"content": "Hello! I'd be happy to help you with your order. Could you please provide your order number?"
}
],
"error": null,
"configuration": {
"id": 12345,
"sId": "7f3a9c2b1e",
"version": 2,
"versionCreatedAt": "2023-06-15T14:30:00Z",
"versionAuthorId": "0ec9852c2f",
"name": "Customer Support Agent",
"description": "An AI agent designed to handle customer support inquiries",
"instructions": "Always greet the customer politely and try to resolve their issue efficiently.",
"pictureUrl": "https://example.com/agent-images/support-agent.png",
"status": "active",
"scope": "workspace",
"userFavorite": true,
"model": {
"providerId": "openai",
"modelId": "gpt-4",
"temperature": 0.7
},
"actions": [],
"maxStepsPerRun": 10,
"templateId": "b4e2f1a9c7"
}
}
]
]
}
}Create a new conversation
Create a new conversation in the workspace identified by .
curl --request POST \
--url https://dust.tt/api/v1/w/{wId}/assistant/conversations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"message": {
"content": "This is my message",
"mentions": [
{
"configurationId": "7f3a9c2b1e"
}
]
},
"contentFragments": [
{
"title": "My content fragment",
"content": "This is my content fragment extracted text",
"contentType": "text/plain",
"url": "https://example.com/content",
"fileId": "fil_123456",
"path": "conversation/report.csv",
"skipDataSourceIndexing": true,
"skipFileProcessing": true,
"nodeId": "node_123456",
"nodeDataSourceViewId": "dsv_123456"
}
],
"title": "My conversation",
"skipToolsValidation": false,
"blocking": true,
"spaceId": "space_abc123"
}
'import requests
url = "https://dust.tt/api/v1/w/{wId}/assistant/conversations"
payload = {
"message": {
"content": "This is my message",
"mentions": [{ "configurationId": "7f3a9c2b1e" }]
},
"contentFragments": [
{
"title": "My content fragment",
"content": "This is my content fragment extracted text",
"contentType": "text/plain",
"url": "https://example.com/content",
"fileId": "fil_123456",
"path": "conversation/report.csv",
"skipDataSourceIndexing": True,
"skipFileProcessing": True,
"nodeId": "node_123456",
"nodeDataSourceViewId": "dsv_123456"
}
],
"title": "My conversation",
"skipToolsValidation": False,
"blocking": True,
"spaceId": "space_abc123"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
message: {content: 'This is my message', mentions: [{configurationId: '7f3a9c2b1e'}]},
contentFragments: [
{
title: 'My content fragment',
content: 'This is my content fragment extracted text',
contentType: 'text/plain',
url: 'https://example.com/content',
fileId: 'fil_123456',
path: 'conversation/report.csv',
skipDataSourceIndexing: true,
skipFileProcessing: true,
nodeId: 'node_123456',
nodeDataSourceViewId: 'dsv_123456'
}
],
title: 'My conversation',
skipToolsValidation: false,
blocking: true,
spaceId: 'space_abc123'
})
};
fetch('https://dust.tt/api/v1/w/{wId}/assistant/conversations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://dust.tt/api/v1/w/{wId}/assistant/conversations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'message' => [
'content' => 'This is my message',
'mentions' => [
[
'configurationId' => '7f3a9c2b1e'
]
]
],
'contentFragments' => [
[
'title' => 'My content fragment',
'content' => 'This is my content fragment extracted text',
'contentType' => 'text/plain',
'url' => 'https://example.com/content',
'fileId' => 'fil_123456',
'path' => 'conversation/report.csv',
'skipDataSourceIndexing' => true,
'skipFileProcessing' => true,
'nodeId' => 'node_123456',
'nodeDataSourceViewId' => 'dsv_123456'
]
],
'title' => 'My conversation',
'skipToolsValidation' => false,
'blocking' => true,
'spaceId' => 'space_abc123'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://dust.tt/api/v1/w/{wId}/assistant/conversations"
payload := strings.NewReader("{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://dust.tt/api/v1/w/{wId}/assistant/conversations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://dust.tt/api/v1/w/{wId}/assistant/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"message\": {\n \"content\": \"This is my message\",\n \"mentions\": [\n {\n \"configurationId\": \"7f3a9c2b1e\"\n }\n ]\n },\n \"contentFragments\": [\n {\n \"title\": \"My content fragment\",\n \"content\": \"This is my content fragment extracted text\",\n \"contentType\": \"text/plain\",\n \"url\": \"https://example.com/content\",\n \"fileId\": \"fil_123456\",\n \"path\": \"conversation/report.csv\",\n \"skipDataSourceIndexing\": true,\n \"skipFileProcessing\": true,\n \"nodeId\": \"node_123456\",\n \"nodeDataSourceViewId\": \"dsv_123456\"\n }\n ],\n \"title\": \"My conversation\",\n \"skipToolsValidation\": false,\n \"blocking\": true,\n \"spaceId\": \"space_abc123\"\n}"
response = http.request(request)
puts response.read_body{
"conversation": {
"id": 67890,
"created": 1625097600,
"sId": "3d8f6a2c1b",
"owner": {
"regionalModelsOnly": false,
"id": 67890,
"sId": "dQFf9l5FQY",
"name": "My Awesome Workspace",
"role": "admin",
"segmentation": "enterprise",
"flags": [
"advanced_analytics",
"beta_features"
],
"ssoEnforced": true,
"whiteListedProviders": [
"google",
"github"
],
"defaultEmbeddingProvider": "openai"
},
"title": "Customer Inquiry #1234",
"visibility": "private",
"content": [
[
{
"id": 1,
"sId": "9e7d5c3a1f",
"type": "human",
"visibility": "visible",
"version": 1,
"created": 1625097700,
"user": {
"sId": "0ec9852c2f",
"id": 12345,
"createdAt": 1625097600,
"username": "johndoe",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"fullName": "John Doe",
"provider": "google",
"image": "https://example.com/profile/johndoe.jpg"
},
"mentions": [
{
"configurationId": "7f3a9c2b1e"
}
],
"content": "Hello, I need help with my order.",
"context": {
"username": "johndoe123",
"timezone": "America/New_York",
"fullName": "John Doe",
"email": "john.doe@example.com",
"profilePictureUrl": "https://example.com/profiles/johndoe123.jpg",
"agenticMessageData": {
"originMessageId": "2b8e4f6a0c"
}
},
"agentMessageId": 1,
"parentMessageId": "2b8e4f6a0c",
"status": "completed",
"actions": [
{
"generatedFiles": [
{
"fileId": "<string>",
"filePath": "<string>",
"title": "<string>",
"contentType": "<string>",
"snippet": "<string>",
"hidden": true,
"isInProjectContext": true
}
]
}
],
"chainOfThought": "The user is asking about their order. I should first greet them and then ask for their order number.",
"rawContents": [
{
"step": 1,
"content": "Hello! I'd be happy to help you with your order. Could you please provide your order number?"
}
],
"error": null,
"configuration": {
"id": 12345,
"sId": "7f3a9c2b1e",
"version": 2,
"versionCreatedAt": "2023-06-15T14:30:00Z",
"versionAuthorId": "0ec9852c2f",
"name": "Customer Support Agent",
"description": "An AI agent designed to handle customer support inquiries",
"instructions": "Always greet the customer politely and try to resolve their issue efficiently.",
"pictureUrl": "https://example.com/agent-images/support-agent.png",
"status": "active",
"scope": "workspace",
"userFavorite": true,
"model": {
"providerId": "openai",
"modelId": "gpt-4",
"temperature": 0.7
},
"actions": [],
"maxStepsPerRun": 10,
"templateId": "b4e2f1a9c7"
}
}
]
]
}
}Authorizations
Your DUST API key is a Bearer token.
Path Parameters
ID of the workspace
Body
Show child attributes
Show child attributes
The list of content fragments to attach to this conversation (optional)
Show child attributes
Show child attributes
The title of the conversation
"My conversation"
Whether to skip the tools validation of the agent messages triggered by this user message (optional, defaults to false)
false
Whether to wait for the agent to generate the initial message. If true the query will wait for the agent's answer. If false (default), the API will return a conversation ID directly and you will need to use streaming events to get the messages.
true
The sId of the space (project) in which to create the conversation (optional). If not provided, the conversation is created outside projects
"space_abc123"
Response
Conversation created successfully.
Show child attributes
Show child attributes