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>"
}Create inbox
Creates a new inbox (support channel) to receive and send messages. Supports multiple channels: 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>"
}Authorizations
Token JWT de autenticação
Headers
Target company identifier. Required only for global API keys (type=global). Ignored for company API keys and human users.
Body
Inbox name
1Inbox phone number (international format)
1^\+.*Webhook URL for notifications
1Default agent ID for new conversations
Communication channel (WAP_AUTO_CLOSER, etc.)
WAP_AUTO_CLOSER, WEB_V2, EVOLUTION_API, LINKEDIN, EMAIL WhatsApp Business API settings
Show child attributes
Show child attributes
Evolution API settings
Show child attributes
Show child attributes
Test mode settings
Show child attributes
Show child attributes
General inbox settings
Show child attributes
Show child attributes
Read-only field, automatically synced from Meta.
Allows UNSUPPORTED messages from Meta to follow the agent's normal flow instead of being skipped. Default false.
Opt-in. When true, the AI does not handle organic inbound (new conversations are born for human handling); the AI keeps handling campaign leads. Default false (applied via Mongoose schema).
Opt-in for the hybrid PDF reading mode. When true, the text is extracted locally and the AI receives the TEXT instead of the image (it stays in the loop, just reorganizing it): no size limit and no vision tokens. Falls back to the vision path when local reading doesn't work (scanned PDF, non-PDF, unreadable). Default false.
Opt-in. ID of the default owner user for any new conversation in this inbox (an explicit owner from the caller takes precedence). Null/absent = no default owner.
Response
Inbox created successfully
Inbox name
Inbox's phone number
Company that owns the inbox
Communication channel (WAP_AUTO_CLOSER, etc.)
Inbox status (ACTIVE, DELETED)
ACTIVE, DELETED Inbox ID
Webhook URL for notifications
Test mode settings
Show child attributes
Show child attributes
Default agent for new conversations
WhatsApp Business API settings (channel only)
Show child attributes
Show child attributes
Evolution API settings
Show child attributes
Show child attributes
LinkedIn settings (Unipile)
Show child attributes
Show child attributes
General inbox settings
Show child attributes
Show child attributes
Enables ingestion of smb_message_echoes (WhatsApp Coexistence).
Allows UNSUPPORTED messages from Meta to follow the agent's normal flow.
Opt-in. When true, the AI does not handle organic inbound (new conversations for human handling); the AI keeps handling campaign leads.
Opt-in for the hybrid PDF reading mode. When true, the text is extracted locally and the AI receives the TEXT instead of the image (it stays in the loop, just reorganizing it): no size limit and no vision tokens. Falls back to the vision path when local reading doesn't work (scanned PDF, non-PDF, unreadable). Default false.
ID of the default owner user for new conversations in this inbox (opt-in). Null = no default owner.
Inbox creation date
Inbox update date