curl --request POST \
--url https://api.eqho.ai/v1/chat-widget \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'x-org-id: <api-key>' \
--data '
{
"campaign_id": "<string>",
"name": "Chat Widget",
"version": "v1",
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_close_minutes": 5,
"inactivity_prompt_text": "<string>",
"additional_config": {
"allowed_origins": [
"http://localhost",
"https://example.com"
],
"themeColor": "#000000"
}
}
'import requests
url = "https://api.eqho.ai/v1/chat-widget"
payload = {
"campaign_id": "<string>",
"name": "Chat Widget",
"version": "v1",
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_close_minutes": 5,
"inactivity_prompt_text": "<string>",
"additional_config": {
"allowed_origins": ["http://localhost", "https://example.com"],
"themeColor": "#000000"
}
}
headers = {
"X-API-KEY": "<api-key>",
"x-org-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'x-org-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
campaign_id: '<string>',
name: 'Chat Widget',
version: 'v1',
agent_id: '<string>',
session_timeout_minutes: 30,
inactivity_prompt_minutes: 720,
inactivity_close_minutes: 5,
inactivity_prompt_text: '<string>',
additional_config: {
allowed_origins: ['http://localhost', 'https://example.com'],
themeColor: '#000000'
}
})
};
fetch('https://api.eqho.ai/v1/chat-widget', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eqho.ai/v1/chat-widget"
payload := strings.NewReader("{\n \"campaign_id\": \"<string>\",\n \"name\": \"Chat Widget\",\n \"version\": \"v1\",\n \"agent_id\": \"<string>\",\n \"session_timeout_minutes\": 30,\n \"inactivity_prompt_minutes\": 720,\n \"inactivity_close_minutes\": 5,\n \"inactivity_prompt_text\": \"<string>\",\n \"additional_config\": {\n \"allowed_origins\": [\n \"http://localhost\",\n \"https://example.com\"\n ],\n \"themeColor\": \"#000000\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("x-org-id", "<api-key>")
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))
}{
"account_id": "<string>",
"campaign_id": "<string>",
"id": "<string>",
"name": "Chat Widget",
"version": "v1",
"enabled": true,
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_prompt_text": "<string>",
"inactivity_close_minutes": 5,
"additional_config": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Create Widget Config
curl --request POST \
--url https://api.eqho.ai/v1/chat-widget \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--header 'x-org-id: <api-key>' \
--data '
{
"campaign_id": "<string>",
"name": "Chat Widget",
"version": "v1",
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_close_minutes": 5,
"inactivity_prompt_text": "<string>",
"additional_config": {
"allowed_origins": [
"http://localhost",
"https://example.com"
],
"themeColor": "#000000"
}
}
'import requests
url = "https://api.eqho.ai/v1/chat-widget"
payload = {
"campaign_id": "<string>",
"name": "Chat Widget",
"version": "v1",
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_close_minutes": 5,
"inactivity_prompt_text": "<string>",
"additional_config": {
"allowed_origins": ["http://localhost", "https://example.com"],
"themeColor": "#000000"
}
}
headers = {
"X-API-KEY": "<api-key>",
"x-org-id": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-KEY': '<api-key>',
'x-org-id': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
campaign_id: '<string>',
name: 'Chat Widget',
version: 'v1',
agent_id: '<string>',
session_timeout_minutes: 30,
inactivity_prompt_minutes: 720,
inactivity_close_minutes: 5,
inactivity_prompt_text: '<string>',
additional_config: {
allowed_origins: ['http://localhost', 'https://example.com'],
themeColor: '#000000'
}
})
};
fetch('https://api.eqho.ai/v1/chat-widget', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eqho.ai/v1/chat-widget"
payload := strings.NewReader("{\n \"campaign_id\": \"<string>\",\n \"name\": \"Chat Widget\",\n \"version\": \"v1\",\n \"agent_id\": \"<string>\",\n \"session_timeout_minutes\": 30,\n \"inactivity_prompt_minutes\": 720,\n \"inactivity_close_minutes\": 5,\n \"inactivity_prompt_text\": \"<string>\",\n \"additional_config\": {\n \"allowed_origins\": [\n \"http://localhost\",\n \"https://example.com\"\n ],\n \"themeColor\": \"#000000\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("x-org-id", "<api-key>")
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))
}{
"account_id": "<string>",
"campaign_id": "<string>",
"id": "<string>",
"name": "Chat Widget",
"version": "v1",
"enabled": true,
"agent_id": "<string>",
"session_timeout_minutes": 30,
"inactivity_prompt_minutes": 720,
"inactivity_prompt_text": "<string>",
"inactivity_close_minutes": 5,
"additional_config": {}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your API key for authentication.
Org impersonation via x-org-id. Superadmins may impersonate any org; admins may impersonate their direct sub-organizations. Enter the target organization ID to act as that org.
Body
24Version of the widget configuration schema
v1, v2 Optional. Overrides the agent for this widget configuration. If not provided, an agent will be selected according to the campaign's agent distribution.
24Minutes of inactivity before the chat session expires and is automatically closed
1 <= x <= 1440Minutes of user inactivity before an inactivity prompt is sent. Set to null to disable the inactivity prompt timeout.
1 <= x <= 1440Minutes to wait after sending the inactivity prompt before the chat is automatically closed. The total timeout until closure is inactivity_prompt_minutes + inactivity_close_minutes. Only applicable when inactivity_prompt_minutes is set; ignored otherwise.
1 <= x <= 1440The text to display in the inactivity prompt. Required when inactivity_prompt_minutes is set.
Additional configuration options for the chat widget
{
"allowed_origins": ["http://localhost", "https://example.com"],
"themeColor": "#000000"
}
Response
Successful Response
24Version of the widget configuration schema
v1, v2 241 <= x <= 14401 <= x <= 14401 <= x <= 1440Was this page helpful?