curl --request POST \
--url https://api.sandbox.asapp.com/conversation/v1/conversations \
--header 'Content-Type: application/json' \
--header 'asapp-api-id: <api-key>' \
--header 'asapp-api-secret: <api-key>' \
--data '
{
"externalId": "id-111",
"agent": {
"externalId": "agent-111",
"name": "agent-x"
},
"customer": {
"externalId": "customer-x",
"name": "customer-name-x"
},
"metadata": {
"organizationalGroup": "some-group",
"subdivision": "some-division",
"queue": "some-queue"
},
"timestamp": "2021-11-23T12:13:14.555Z"
}
'import requests
url = "https://api.sandbox.asapp.com/conversation/v1/conversations"
payload = {
"externalId": "id-111",
"agent": {
"externalId": "agent-111",
"name": "agent-x"
},
"customer": {
"externalId": "customer-x",
"name": "customer-name-x"
},
"metadata": {
"organizationalGroup": "some-group",
"subdivision": "some-division",
"queue": "some-queue"
},
"timestamp": "2021-11-23T12:13:14.555Z"
}
headers = {
"asapp-api-id": "<api-key>",
"asapp-api-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'asapp-api-id': '<api-key>',
'asapp-api-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'id-111',
agent: {externalId: 'agent-111', name: 'agent-x'},
customer: {externalId: 'customer-x', name: 'customer-name-x'},
metadata: {
organizationalGroup: 'some-group',
subdivision: 'some-division',
queue: 'some-queue'
},
timestamp: '2021-11-23T12:13:14.555Z'
})
};
fetch('https://api.sandbox.asapp.com/conversation/v1/conversations', 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.sandbox.asapp.com/conversation/v1/conversations",
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([
'externalId' => 'id-111',
'agent' => [
'externalId' => 'agent-111',
'name' => 'agent-x'
],
'customer' => [
'externalId' => 'customer-x',
'name' => 'customer-name-x'
],
'metadata' => [
'organizationalGroup' => 'some-group',
'subdivision' => 'some-division',
'queue' => 'some-queue'
],
'timestamp' => '2021-11-23T12:13:14.555Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"asapp-api-id: <api-key>",
"asapp-api-secret: <api-key>"
],
]);
$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.sandbox.asapp.com/conversation/v1/conversations"
payload := strings.NewReader("{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("asapp-api-id", "<api-key>")
req.Header.Add("asapp-api-secret", "<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))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.asapp.com/conversation/v1/conversations")
.header("asapp-api-id", "<api-key>")
.header("asapp-api-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.asapp.com/conversation/v1/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["asapp-api-id"] = '<api-key>'
request["asapp-api-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "01BX5ZZKBKACTAV9WEVGEMMVRZ"
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "400-01",
"message": "Bad request"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "401-01",
"message": "Unauthorized"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "403-01",
"message": "Forbidden Response"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "404-01",
"message": "Not Found"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "409-01",
"message": "Conflict"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "413-01",
"message": "Request Entity Too Large"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "422-01",
"message": "Unprocessable Entity"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "429-01",
"message": "Too Many Requests"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "503-01",
"message": "Service Unavailable"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "500-01",
"message": "Internal server error"
}
}Create or update a conversation
Creates a new conversation or updates an existing one based on the provided externalId.
Use this endpoint when:
- Starting a new conversation
- Updating conversation details (e.g., reassigning to a different agent)
If the externalId is not found, a new conversation will be created. Otherwise, the existing conversation will be updated.
curl --request POST \
--url https://api.sandbox.asapp.com/conversation/v1/conversations \
--header 'Content-Type: application/json' \
--header 'asapp-api-id: <api-key>' \
--header 'asapp-api-secret: <api-key>' \
--data '
{
"externalId": "id-111",
"agent": {
"externalId": "agent-111",
"name": "agent-x"
},
"customer": {
"externalId": "customer-x",
"name": "customer-name-x"
},
"metadata": {
"organizationalGroup": "some-group",
"subdivision": "some-division",
"queue": "some-queue"
},
"timestamp": "2021-11-23T12:13:14.555Z"
}
'import requests
url = "https://api.sandbox.asapp.com/conversation/v1/conversations"
payload = {
"externalId": "id-111",
"agent": {
"externalId": "agent-111",
"name": "agent-x"
},
"customer": {
"externalId": "customer-x",
"name": "customer-name-x"
},
"metadata": {
"organizationalGroup": "some-group",
"subdivision": "some-division",
"queue": "some-queue"
},
"timestamp": "2021-11-23T12:13:14.555Z"
}
headers = {
"asapp-api-id": "<api-key>",
"asapp-api-secret": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'asapp-api-id': '<api-key>',
'asapp-api-secret': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
externalId: 'id-111',
agent: {externalId: 'agent-111', name: 'agent-x'},
customer: {externalId: 'customer-x', name: 'customer-name-x'},
metadata: {
organizationalGroup: 'some-group',
subdivision: 'some-division',
queue: 'some-queue'
},
timestamp: '2021-11-23T12:13:14.555Z'
})
};
fetch('https://api.sandbox.asapp.com/conversation/v1/conversations', 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.sandbox.asapp.com/conversation/v1/conversations",
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([
'externalId' => 'id-111',
'agent' => [
'externalId' => 'agent-111',
'name' => 'agent-x'
],
'customer' => [
'externalId' => 'customer-x',
'name' => 'customer-name-x'
],
'metadata' => [
'organizationalGroup' => 'some-group',
'subdivision' => 'some-division',
'queue' => 'some-queue'
],
'timestamp' => '2021-11-23T12:13:14.555Z'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"asapp-api-id: <api-key>",
"asapp-api-secret: <api-key>"
],
]);
$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.sandbox.asapp.com/conversation/v1/conversations"
payload := strings.NewReader("{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("asapp-api-id", "<api-key>")
req.Header.Add("asapp-api-secret", "<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))
}HttpResponse<String> response = Unirest.post("https://api.sandbox.asapp.com/conversation/v1/conversations")
.header("asapp-api-id", "<api-key>")
.header("asapp-api-secret", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.asapp.com/conversation/v1/conversations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["asapp-api-id"] = '<api-key>'
request["asapp-api-secret"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": \"id-111\",\n \"agent\": {\n \"externalId\": \"agent-111\",\n \"name\": \"agent-x\"\n },\n \"customer\": {\n \"externalId\": \"customer-x\",\n \"name\": \"customer-name-x\"\n },\n \"metadata\": {\n \"organizationalGroup\": \"some-group\",\n \"subdivision\": \"some-division\",\n \"queue\": \"some-queue\"\n },\n \"timestamp\": \"2021-11-23T12:13:14.555Z\"\n}"
response = http.request(request)
puts response.read_body{
"id": "01BX5ZZKBKACTAV9WEVGEMMVRZ"
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "400-01",
"message": "Bad request"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "401-01",
"message": "Unauthorized"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "403-01",
"message": "Forbidden Response"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "404-01",
"message": "Not Found"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "409-01",
"message": "Conflict"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "413-01",
"message": "Request Entity Too Large"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "422-01",
"message": "Unprocessable Entity"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "429-01",
"message": "Too Many Requests"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "503-01",
"message": "Service Unavailable"
}
}{
"error": {
"requestId": "8e033668-9f1a-11ec-b909-0242ac120002",
"code": "500-01",
"message": "Internal server error"
}
}Body
Conversation between an agent and a customer that requires a timestamp of creation
Your unique identifier for a conversation.
Information about the customer participating in the conversation.
Show child attributes
Show child attributes
The time when the conversation was created. Include the timezone, otherwise UTC will be assumed.
The identifier of the conversation.
Information about the agent participating in the conversation.
Show child attributes
Show child attributes
Additional key-value pairs to store custom metadata about the conversation. Use this for filtering or categorization purposes.
Show child attributes
Show child attributes
Response
Successfully created or updated conversation
Response for conversation
The identifier of the conversation.
Was this page helpful?