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>"
}
]
}Crear agente
Crea un nuevo agente de atención.
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>"
}
]
}Autorizaciones
Token JWT de autenticación
Encabezados
Identificador de la empresa objetivo. Obligatorio solo para API keys globales (type=global). Se ignora para API keys de empresa y usuarios humanos.
Cuerpo
Nombre del agente en la plataforma.
1Prompts que definen la identidad y el comportamiento del agente.
Show child attributes
Show child attributes
ID del flujo de ejecución del agente, entre los habilitados para la empresa.
1Configuración general del agente
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Configuración del specialist (calificación e ICP)
Show child attributes
Show child attributes
Color del avatar del agente.
Iniciales que se muestran en el avatar (hasta 2 caracteres).
2Perfiles de personalidad predefinidos (hasta 3).
3FRIENDLY, DIDACTIC, CURIOUS, FORMAL, PLAYFUL, PERSUASIVE Respuesta
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
ACTIVE, DRAFT, INACTIVE, DELETED FRIENDLY, DIDACTIC, CURIOUS, FORMAL, PLAYFUL, PERSUASIVE Show child attributes
Show child attributes