Create campaign
curl --request POST \
--url https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"campaignChannel": "<string>",
"campaignName": "<string>",
"campaignModelID": "<string>",
"campaignPluginConnectionID": "<string>"
}
'import requests
url = "https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns"
payload = {
"campaignChannel": "<string>",
"campaignName": "<string>",
"campaignModelID": "<string>",
"campaignPluginConnectionID": "<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({
campaignChannel: '<string>',
campaignName: '<string>',
campaignModelID: '<string>',
campaignPluginConnectionID: '<string>'
})
};
fetch('https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns', 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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns",
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([
'campaignChannel' => '<string>',
'campaignName' => '<string>',
'campaignModelID' => '<string>',
'campaignPluginConnectionID' => '<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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns"
payload := strings.NewReader("{\n \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns")
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 \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"campaign": {
"campaignChannel": "urn:talqui:whatsapp-gup:0",
"campaignContactAttributes": [
"<unknown>"
],
"campaignContactIDs": [
"<string>"
],
"campaignContactTags": [
"<string>"
],
"campaignID": "<string>",
"campaignInboxID": "<string>",
"campaignMeta": {},
"campaignModelID": "<string>",
"campaignName": "<string>",
"campaignPluginConnectionID": "<string>",
"campaignSessionTags": [
"<string>"
],
"campaignSessionType": "auto",
"campaignStatus": "draft",
"campaignTag": "<string>",
"campaignVariables": "<unknown>",
"canceledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"dispatchAt": "2023-11-07T05:31:56Z",
"organizationID": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>",
"campaignMetrics": {
"pending": 123,
"sended": 123,
"total": 123
}
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "UnauthorizedError",
"error_code": 1003,
"message": "You are not authorized to perform this request.",
"statusCode": 401
}
]
}{
"errors": [
{
"error": "ForbiddenError",
"error_code": 1004,
"message": "You do not have access to this resource.",
"statusCode": 403
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}Campaigns
Create campaign
Creates a new campaign in draft status. Migrated from
talqui-core-api’s campaignCreate.js — createdBy/updatedBy are the
real authenticated operator here, not the legacy’s hardcoded ‘TBD’.
POST
/
v1
/
tenants
/
{tenantID}
/
campaigns
Create campaign
curl --request POST \
--url https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"campaignChannel": "<string>",
"campaignName": "<string>",
"campaignModelID": "<string>",
"campaignPluginConnectionID": "<string>"
}
'import requests
url = "https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns"
payload = {
"campaignChannel": "<string>",
"campaignName": "<string>",
"campaignModelID": "<string>",
"campaignPluginConnectionID": "<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({
campaignChannel: '<string>',
campaignName: '<string>',
campaignModelID: '<string>',
campaignPluginConnectionID: '<string>'
})
};
fetch('https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns', 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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns",
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([
'campaignChannel' => '<string>',
'campaignName' => '<string>',
'campaignModelID' => '<string>',
'campaignPluginConnectionID' => '<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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns"
payload := strings.NewReader("{\n \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<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://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://services-api.talqui.chat/v1/tenants/{tenantID}/campaigns")
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 \"campaignChannel\": \"<string>\",\n \"campaignName\": \"<string>\",\n \"campaignModelID\": \"<string>\",\n \"campaignPluginConnectionID\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"campaign": {
"campaignChannel": "urn:talqui:whatsapp-gup:0",
"campaignContactAttributes": [
"<unknown>"
],
"campaignContactIDs": [
"<string>"
],
"campaignContactTags": [
"<string>"
],
"campaignID": "<string>",
"campaignInboxID": "<string>",
"campaignMeta": {},
"campaignModelID": "<string>",
"campaignName": "<string>",
"campaignPluginConnectionID": "<string>",
"campaignSessionTags": [
"<string>"
],
"campaignSessionType": "auto",
"campaignStatus": "draft",
"campaignTag": "<string>",
"campaignVariables": "<unknown>",
"canceledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"dispatchAt": "2023-11-07T05:31:56Z",
"organizationID": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z",
"updatedBy": "<string>",
"campaignMetrics": {
"pending": 123,
"sended": 123,
"total": 123
}
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "UnauthorizedError",
"error_code": 1003,
"message": "You are not authorized to perform this request.",
"statusCode": 401
}
]
}{
"errors": [
{
"error": "ForbiddenError",
"error_code": 1004,
"message": "You do not have access to this resource.",
"statusCode": 403
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}Authorizations
Behalf of an Operator (default). A JWT issued by Talqui Core when an operator signs in, scoped to every tenant that operator belongs to. Send as Authorization: Bearer <jwt-token>.
Path Parameters
Body
application/json
The channel this campaign dispatches through.
Operator-facing name of the campaign.
Minimum string length:
1The approved template this campaign will use.
Which specific PluginConnection (e.g. WhatsApp number) sends this campaign.
Response
Response for status 200.
The newly created campaign.
Show child attributes
Show child attributes
⌘I