curl --request POST \
--url https://api.nuvia.ai/v1/inboxes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"number": "<string>",
"webhook_url": "<string>",
"default_agent": "<string>",
"test_mode": {
"enabled": true,
"test_numbers": [
"<string>"
]
},
"coexistence_enabled": "<unknown>",
"process_unsupported_messages": true,
"disable_inbound_ai": true,
"pdf_local_text_extraction": true,
"default_owner": "<string>"
}
'import requests
url = "https://api.nuvia.ai/v1/inboxes"
payload = {
"name": "<string>",
"number": "<string>",
"webhook_url": "<string>",
"default_agent": "<string>",
"test_mode": {
"enabled": True,
"test_numbers": ["<string>"]
},
"coexistence_enabled": "<unknown>",
"process_unsupported_messages": True,
"disable_inbound_ai": True,
"pdf_local_text_extraction": True,
"default_owner": "<string>"
}
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: '<string>',
number: '<string>',
webhook_url: '<string>',
default_agent: '<string>',
test_mode: {enabled: true, test_numbers: ['<string>']},
coexistence_enabled: '<unknown>',
process_unsupported_messages: true,
disable_inbound_ai: true,
pdf_local_text_extraction: true,
default_owner: '<string>'
})
};
fetch('https://api.nuvia.ai/v1/inboxes', 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/inboxes",
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' => '<string>',
'number' => '<string>',
'webhook_url' => '<string>',
'default_agent' => '<string>',
'test_mode' => [
'enabled' => true,
'test_numbers' => [
'<string>'
]
],
'coexistence_enabled' => '<unknown>',
'process_unsupported_messages' => true,
'disable_inbound_ai' => true,
'pdf_local_text_extraction' => true,
'default_owner' => '<string>'
]),
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/inboxes"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\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/inboxes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nuvia.ai/v1/inboxes")
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\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"number": "<string>",
"company": "<unknown>",
"channel": "<string>",
"status": "ACTIVE",
"_id": "<string>",
"webhook_url": "<string>",
"test_mode": {
"enabled": true,
"test_numbers": [
"<string>"
]
},
"default_agent": "<unknown>",
"api_wap_config": {
"phone_number_id": "<string>",
"business_id": "<string>",
"business_token": "<string>",
"waba_id": "<string>"
},
"evolution_api_config": {
"base_url": "<string>",
"api_key": "<string>",
"instance_name": "<string>"
},
"linkedin_config": {
"account_id": "<string>",
"provider": "<string>",
"display_name": "<string>",
"profile_url": "<string>",
"public_identifier": "<string>"
},
"general_config": {
"include_operator_name_on_message": true
},
"coexistence_enabled": true,
"process_unsupported_messages": true,
"disable_inbound_ai": true,
"pdf_local_text_extraction": true,
"default_owner": "<string>",
"createdAt": "<unknown>",
"updatedAt": "<unknown>"
}Crear inbox
Crea un nuevo inbox (canal de atención) para recibir y enviar mensajes. Admite múltiples canales: WhatsApp Business API, Evolution API, etc.
curl --request POST \
--url https://api.nuvia.ai/v1/inboxes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"number": "<string>",
"webhook_url": "<string>",
"default_agent": "<string>",
"test_mode": {
"enabled": true,
"test_numbers": [
"<string>"
]
},
"coexistence_enabled": "<unknown>",
"process_unsupported_messages": true,
"disable_inbound_ai": true,
"pdf_local_text_extraction": true,
"default_owner": "<string>"
}
'import requests
url = "https://api.nuvia.ai/v1/inboxes"
payload = {
"name": "<string>",
"number": "<string>",
"webhook_url": "<string>",
"default_agent": "<string>",
"test_mode": {
"enabled": True,
"test_numbers": ["<string>"]
},
"coexistence_enabled": "<unknown>",
"process_unsupported_messages": True,
"disable_inbound_ai": True,
"pdf_local_text_extraction": True,
"default_owner": "<string>"
}
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: '<string>',
number: '<string>',
webhook_url: '<string>',
default_agent: '<string>',
test_mode: {enabled: true, test_numbers: ['<string>']},
coexistence_enabled: '<unknown>',
process_unsupported_messages: true,
disable_inbound_ai: true,
pdf_local_text_extraction: true,
default_owner: '<string>'
})
};
fetch('https://api.nuvia.ai/v1/inboxes', 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/inboxes",
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' => '<string>',
'number' => '<string>',
'webhook_url' => '<string>',
'default_agent' => '<string>',
'test_mode' => [
'enabled' => true,
'test_numbers' => [
'<string>'
]
],
'coexistence_enabled' => '<unknown>',
'process_unsupported_messages' => true,
'disable_inbound_ai' => true,
'pdf_local_text_extraction' => true,
'default_owner' => '<string>'
]),
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/inboxes"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\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/inboxes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nuvia.ai/v1/inboxes")
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\": \"<string>\",\n \"number\": \"<string>\",\n \"webhook_url\": \"<string>\",\n \"default_agent\": \"<string>\",\n \"test_mode\": {\n \"enabled\": true,\n \"test_numbers\": [\n \"<string>\"\n ]\n },\n \"coexistence_enabled\": \"<unknown>\",\n \"process_unsupported_messages\": true,\n \"disable_inbound_ai\": true,\n \"pdf_local_text_extraction\": true,\n \"default_owner\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"number": "<string>",
"company": "<unknown>",
"channel": "<string>",
"status": "ACTIVE",
"_id": "<string>",
"webhook_url": "<string>",
"test_mode": {
"enabled": true,
"test_numbers": [
"<string>"
]
},
"default_agent": "<unknown>",
"api_wap_config": {
"phone_number_id": "<string>",
"business_id": "<string>",
"business_token": "<string>",
"waba_id": "<string>"
},
"evolution_api_config": {
"base_url": "<string>",
"api_key": "<string>",
"instance_name": "<string>"
},
"linkedin_config": {
"account_id": "<string>",
"provider": "<string>",
"display_name": "<string>",
"profile_url": "<string>",
"public_identifier": "<string>"
},
"general_config": {
"include_operator_name_on_message": true
},
"coexistence_enabled": true,
"process_unsupported_messages": true,
"disable_inbound_ai": true,
"pdf_local_text_extraction": true,
"default_owner": "<string>",
"createdAt": "<unknown>",
"updatedAt": "<unknown>"
}Autorizaciones
Token JWT de autenticação
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 inbox
1Número de teléfono del inbox (formato internacional)
1^\+.*URL del webhook para notificaciones
1ID del agente predeterminado para conversaciones nuevas
Canal de comunicación (WAP_AUTO_CLOSER, etc.)
WAP_AUTO_CLOSER, WEB_V2, EVOLUTION_API, LINKEDIN, EMAIL Configuración de la API de WhatsApp Business
Show child attributes
Show child attributes
Configuración de la Evolution API
Show child attributes
Show child attributes
Configuración del modo de prueba
Show child attributes
Show child attributes
Configuración general del inbox
Show child attributes
Show child attributes
Campo de solo lectura, sincronizado automáticamente desde Meta.
Permite que los mensajes UNSUPPORTED de Meta sigan el flujo normal del agente en lugar de ser omitidos. Default false.
Opt-in. Cuando es true, la IA no atiende inbound orgánico (las conversaciones nuevas nacen para atención humana); la IA sigue atendiendo leads de campaña. Default false (aplicado vía Mongoose schema).
Habilitación (opt-in) del modo híbrido de lectura de PDF. Cuando es true, el texto se extrae localmente y la IA recibe el TEXTO en lugar de la imagen (sigue en el circuito, solo reorganiza): sin límite de tamaño y sin tokens de visión. Vuelve al camino de visión cuando la lectura local no sirve (PDF escaneado, no PDF, ilegible). Valor predeterminado: false.
Opt-in. ID del usuario propietario predeterminado de cualquier conversación nueva de este inbox (el propietario explícito del caller tiene precedencia). Null/ausente = sin propietario predeterminado.
Respuesta
Inbox creado correctamente
Nombre del inbox
Número de teléfono del inbox
Empresa propietaria del inbox
Canal de comunicación (WAP_AUTO_CLOSER, etc.)
Status del inbox (ACTIVE, DELETED)
ACTIVE, DELETED ID del inbox
URL del webhook para notificaciones
Configuración del modo de prueba
Show child attributes
Show child attributes
Agente predeterminado para conversaciones nuevas
Configuración de la API de WhatsApp Business (solo para el canal)
Show child attributes
Show child attributes
Configuración de la Evolution API
Show child attributes
Show child attributes
Configuración de LinkedIn (Unipile)
Show child attributes
Show child attributes
Configuración general del inbox
Show child attributes
Show child attributes
Habilita la ingesta de smb_message_echoes (WhatsApp Coexistence).
Permite que los mensajes UNSUPPORTED de Meta sigan el flujo normal del agent.
Opt-in. Cuando es true, la IA no atiende inbound orgánico (conversaciones nuevas para atención humana); la IA sigue atendiendo leads de campaña.
Habilitación (opt-in) del modo híbrido de lectura de PDF. Cuando es true, el texto se extrae localmente y la IA recibe el TEXTO en lugar de la imagen (sigue en el circuito, solo reorganiza): sin límite de tamaño y sin tokens de visión. Vuelve al camino de visión cuando la lectura local no sirve (PDF escaneado, no PDF, ilegible). Valor predeterminado: false.
ID del usuario propietario predeterminado de las conversaciones nuevas de este inbox (opt-in). Null = sin propietario predeterminado.
Fecha de creación del inbox
Fecha de actualización del inbox