Create channel
curl --request POST \
--url https://api.omni.z-api.io/v1/channels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My WhatsApp channel",
"type": "META_WHATSAPP"
}
'import requests
url = "https://api.omni.z-api.io/v1/channels"
payload = {
"name": "My WhatsApp channel",
"type": "META_WHATSAPP"
}
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: 'My WhatsApp channel', type: 'META_WHATSAPP'})
};
fetch('https://api.omni.z-api.io/v1/channels', 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.omni.z-api.io/v1/channels",
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' => 'My WhatsApp channel',
'type' => 'META_WHATSAPP'
]),
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.omni.z-api.io/v1/channels"
payload := strings.NewReader("{\n \"name\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\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.omni.z-api.io/v1/channels")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/v1/channels")
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\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\n}"
response = http.request(request)
puts response.read_body{
"id": "019E4C54B1B375A28970B605CA9B03C3",
"token": "F1B29C3D4E5A6B7C8D9E0F1A2B3C4D5E"
}Channels
Create channel
Create a new channel via API
POST
/
v1
/
channels
Create channel
curl --request POST \
--url https://api.omni.z-api.io/v1/channels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "My WhatsApp channel",
"type": "META_WHATSAPP"
}
'import requests
url = "https://api.omni.z-api.io/v1/channels"
payload = {
"name": "My WhatsApp channel",
"type": "META_WHATSAPP"
}
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: 'My WhatsApp channel', type: 'META_WHATSAPP'})
};
fetch('https://api.omni.z-api.io/v1/channels', 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.omni.z-api.io/v1/channels",
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' => 'My WhatsApp channel',
'type' => 'META_WHATSAPP'
]),
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.omni.z-api.io/v1/channels"
payload := strings.NewReader("{\n \"name\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\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.omni.z-api.io/v1/channels")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.omni.z-api.io/v1/channels")
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\": \"My WhatsApp channel\",\n \"type\": \"META_WHATSAPP\"\n}"
response = http.request(request)
puts response.read_body{
"id": "019E4C54B1B375A28970B605CA9B03C3",
"token": "F1B29C3D4E5A6B7C8D9E0F1A2B3C4D5E"
}Overview
Creates a new channel. After creation, the channel needs to be connected (via dashboard or SDK) to start sending and receiving messages. The returnedid is the channelId used in all API calls.
Channel token
When the request is authenticated with the workspace Secret Key, the201 response also includes the channel token:
{
"id": "019E4C54B1B375A28970B605CA9B03C3",
"token": "F1B29C3D4E5A6B7C8D9E0F1A2B3C4D5E"
}
id: the token key is left out. Treat the field as optional.
Error responses do not change and carry no token.
The same applies to the equivalent routes
POST /v1/instances and POST /v1/devices.Available types
| Type | Platform |
|---|---|
META_WHATSAPP | WhatsApp (Meta Official API) |
Z_API_WHATSAPP | WhatsApp Web |
META_INSTAGRAM | |
META_MESSENGER | Messenger |
BOT_TELEGRAM | Telegram |
Authorizations
Secret Key generated in the Omni Z-API Security panel
Body
application/json
Response
Channel created successfully. With the Secret Key, the response has id and token; with the OAuth token of an authorized app, only id.
Created channel ID (channelId)
Channel token, the same one returned by GET /v1/channels/{channelId}. Use it on the channel's QR Code and status routes. Present only when the request is authenticated with the workspace Secret Key; with an app's OAuth token, the key is left out of the response.