Create agent
curl --request POST \
--url https://api.nuvia.ai/v1/agents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "SDR Inbound",
"agent_flow": "6650f1a2b3c4d5e6f7a8b9c0",
"prompts": {
"name": "Ana",
"role": "SDR",
"mission": "Qualificar o lead e agendar uma reunião com o time comercial.",
"communication_style": [
{
"type": "text",
"content": "Cordial e objetiva, em frases curtas."
}
],
"rules": [
{
"type": "text",
"content": "Nunca prometa prazos ou descontos."
}
]
}
}
'import requests
url = "https://api.nuvia.ai/v1/agents"
payload = {
"name": "SDR Inbound",
"agent_flow": "6650f1a2b3c4d5e6f7a8b9c0",
"prompts": {
"name": "Ana",
"role": "SDR",
"mission": "Qualificar o lead e agendar uma reunião com o time comercial.",
"communication_style": [
{
"type": "text",
"content": "Cordial e objetiva, em frases curtas."
}
],
"rules": [
{
"type": "text",
"content": "Nunca prometa prazos ou descontos."
}
]
}
}
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({
name: 'SDR Inbound',
agent_flow: '6650f1a2b3c4d5e6f7a8b9c0',
prompts: {
name: 'Ana',
role: 'SDR',
mission: 'Qualificar o lead e agendar uma reunião com o time comercial.',
communication_style: [{type: 'text', content: 'Cordial e objetiva, em frases curtas.'}],
rules: [{type: 'text', content: 'Nunca prometa prazos ou descontos.'}]
}
})
};
fetch('https://api.nuvia.ai/v1/agents', 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://api.nuvia.ai/v1/agents",
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([
'name' => 'SDR Inbound',
'agent_flow' => '6650f1a2b3c4d5e6f7a8b9c0',
'prompts' => [
'name' => 'Ana',
'role' => 'SDR',
'mission' => 'Qualificar o lead e agendar uma reunião com o time comercial.',
'communication_style' => [
[
'type' => 'text',
'content' => 'Cordial e objetiva, em frases curtas.'
]
],
'rules' => [
[
'type' => 'text',
'content' => 'Nunca prometa prazos ou descontos.'
]
]
]
]),
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://api.nuvia.ai/v1/agents"
payload := strings.NewReader("{\n \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\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://api.nuvia.ai/v1/agents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nuvia.ai/v1/agents")
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 \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"_id": {},
"name": "<string>",
"agent_flow": {
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
},
"prompts": {
"service_prompt": "<string>",
"name": "<string>",
"role": "<string>",
"mission": "<string>",
"personality": [
{}
],
"communication_style": [
{}
],
"rules": [
{}
],
"use_sender_name": true
},
"company": {
"_id": {},
"name": "<string>",
"channels": [
"WAP_AUTO_CLOSER"
],
"agent_flows": [
{
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
}
],
"description": "<string>",
"status": "ACTIVE",
"domains": [
"<string>"
],
"site": "<string>",
"general_config": {},
"agent_builder_mcp_enabled": true,
"client_mcp_servers_enabled": true,
"auto_join_enabled": true,
"subscription": {},
"document_type": "br_cnpj",
"document_number": "<string>",
"stripe_customer_id": "<string>",
"billing_external": true,
"billing_partner": true,
"onboarding": {},
"attribution": {}
},
"model_config": {},
"status": "ACTIVE",
"general_config": {},
"specialist_config": {},
"knowledge_base": [
{}
],
"avatar_color": "<string>",
"avatar_initials": "<string>",
"personality_presets": [
"FRIENDLY"
],
"steps": [
{
"_id": {},
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"order": 123,
"type": "INITIAL",
"agent": "<unknown>",
"company": {
"_id": {},
"name": "<string>",
"channels": [
"WAP_AUTO_CLOSER"
],
"agent_flows": [
{
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
}
],
"description": "<string>",
"status": "ACTIVE",
"domains": [
"<string>"
],
"site": "<string>",
"general_config": {},
"agent_builder_mcp_enabled": true,
"client_mcp_servers_enabled": true,
"auto_join_enabled": true,
"subscription": {},
"document_type": "br_cnpj",
"document_number": "<string>",
"stripe_customer_id": "<string>",
"billing_external": true,
"billing_partner": true,
"onboarding": {},
"attribution": {}
},
"mentions": [
{}
],
"general_config": {
"disable_followups": true,
"should_auto_run_on_enter": true,
"disable_ai_response": true
},
"meta_event_name": "ViewContent",
"stage_criteria": "<string>"
}
]
}Agentes
Create agent
Creates a new support agent.
POST
/
v1
/
agents
Create agent
curl --request POST \
--url https://api.nuvia.ai/v1/agents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "SDR Inbound",
"agent_flow": "6650f1a2b3c4d5e6f7a8b9c0",
"prompts": {
"name": "Ana",
"role": "SDR",
"mission": "Qualificar o lead e agendar uma reunião com o time comercial.",
"communication_style": [
{
"type": "text",
"content": "Cordial e objetiva, em frases curtas."
}
],
"rules": [
{
"type": "text",
"content": "Nunca prometa prazos ou descontos."
}
]
}
}
'import requests
url = "https://api.nuvia.ai/v1/agents"
payload = {
"name": "SDR Inbound",
"agent_flow": "6650f1a2b3c4d5e6f7a8b9c0",
"prompts": {
"name": "Ana",
"role": "SDR",
"mission": "Qualificar o lead e agendar uma reunião com o time comercial.",
"communication_style": [
{
"type": "text",
"content": "Cordial e objetiva, em frases curtas."
}
],
"rules": [
{
"type": "text",
"content": "Nunca prometa prazos ou descontos."
}
]
}
}
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({
name: 'SDR Inbound',
agent_flow: '6650f1a2b3c4d5e6f7a8b9c0',
prompts: {
name: 'Ana',
role: 'SDR',
mission: 'Qualificar o lead e agendar uma reunião com o time comercial.',
communication_style: [{type: 'text', content: 'Cordial e objetiva, em frases curtas.'}],
rules: [{type: 'text', content: 'Nunca prometa prazos ou descontos.'}]
}
})
};
fetch('https://api.nuvia.ai/v1/agents', 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://api.nuvia.ai/v1/agents",
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([
'name' => 'SDR Inbound',
'agent_flow' => '6650f1a2b3c4d5e6f7a8b9c0',
'prompts' => [
'name' => 'Ana',
'role' => 'SDR',
'mission' => 'Qualificar o lead e agendar uma reunião com o time comercial.',
'communication_style' => [
[
'type' => 'text',
'content' => 'Cordial e objetiva, em frases curtas.'
]
],
'rules' => [
[
'type' => 'text',
'content' => 'Nunca prometa prazos ou descontos.'
]
]
]
]),
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://api.nuvia.ai/v1/agents"
payload := strings.NewReader("{\n \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\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://api.nuvia.ai/v1/agents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nuvia.ai/v1/agents")
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 \"name\": \"SDR Inbound\",\n \"agent_flow\": \"6650f1a2b3c4d5e6f7a8b9c0\",\n \"prompts\": {\n \"name\": \"Ana\",\n \"role\": \"SDR\",\n \"mission\": \"Qualificar o lead e agendar uma reunião com o time comercial.\",\n \"communication_style\": [\n {\n \"type\": \"text\",\n \"content\": \"Cordial e objetiva, em frases curtas.\"\n }\n ],\n \"rules\": [\n {\n \"type\": \"text\",\n \"content\": \"Nunca prometa prazos ou descontos.\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"_id": {},
"name": "<string>",
"agent_flow": {
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
},
"prompts": {
"service_prompt": "<string>",
"name": "<string>",
"role": "<string>",
"mission": "<string>",
"personality": [
{}
],
"communication_style": [
{}
],
"rules": [
{}
],
"use_sender_name": true
},
"company": {
"_id": {},
"name": "<string>",
"channels": [
"WAP_AUTO_CLOSER"
],
"agent_flows": [
{
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
}
],
"description": "<string>",
"status": "ACTIVE",
"domains": [
"<string>"
],
"site": "<string>",
"general_config": {},
"agent_builder_mcp_enabled": true,
"client_mcp_servers_enabled": true,
"auto_join_enabled": true,
"subscription": {},
"document_type": "br_cnpj",
"document_number": "<string>",
"stripe_customer_id": "<string>",
"billing_external": true,
"billing_partner": true,
"onboarding": {},
"attribution": {}
},
"model_config": {},
"status": "ACTIVE",
"general_config": {},
"specialist_config": {},
"knowledge_base": [
{}
],
"avatar_color": "<string>",
"avatar_initials": "<string>",
"personality_presets": [
"FRIENDLY"
],
"steps": [
{
"_id": {},
"name": "<string>",
"slug": "<string>",
"description": "<string>",
"order": 123,
"type": "INITIAL",
"agent": "<unknown>",
"company": {
"_id": {},
"name": "<string>",
"channels": [
"WAP_AUTO_CLOSER"
],
"agent_flows": [
{
"_id": {},
"name": "<string>",
"url": "<string>",
"specialist_url": "<string>",
"type": "N8N"
}
],
"description": "<string>",
"status": "ACTIVE",
"domains": [
"<string>"
],
"site": "<string>",
"general_config": {},
"agent_builder_mcp_enabled": true,
"client_mcp_servers_enabled": true,
"auto_join_enabled": true,
"subscription": {},
"document_type": "br_cnpj",
"document_number": "<string>",
"stripe_customer_id": "<string>",
"billing_external": true,
"billing_partner": true,
"onboarding": {},
"attribution": {}
},
"mentions": [
{}
],
"general_config": {
"disable_followups": true,
"should_auto_run_on_enter": true,
"disable_ai_response": true
},
"meta_event_name": "ViewContent",
"stage_criteria": "<string>"
}
]
}Authorizations
JWT authentication token
Headers
Target company identifier. Required only for global API keys (type=global). Ignored for company API keys and human users.
Body
application/json
The agent's name on the platform.
Minimum string length:
1Prompts that define the agent's identity and behavior.
Show child attributes
Show child attributes
ID of the agent's execution flow, among those enabled for the company.
Minimum string length:
1General settings of the agent
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Specialist settings (qualification and ICP)
Show child attributes
Show child attributes
The agent's avatar color.
Initials shown on the avatar (up to 2 characters).
Maximum string length:
2Ready-made personality profiles (up to 3).
Maximum array length:
3Available options:
FRIENDLY, DIDACTIC, CURIOUS, FORMAL, PLAYFUL, PERSUASIVE Response
201 - application/json
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
ACTIVE, DRAFT, INACTIVE, DELETED Available options:
FRIENDLY, DIDACTIC, CURIOUS, FORMAL, PLAYFUL, PERSUASIVE Show child attributes
Show child attributes