Send order
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-order \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"order": {
"currency": "<string>",
"products": [
{
"name": "<string>",
"value": 123,
"quantity": 123,
"productId": "<string>"
}
],
"discount": 123,
"tax": 123,
"shipping": 123
}
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-order"
payload = {
"phone": "<string>",
"order": {
"currency": "<string>",
"products": [
{
"name": "<string>",
"value": 123,
"quantity": 123,
"productId": "<string>"
}
],
"discount": 123,
"tax": 123,
"shipping": 123
}
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '<string>',
order: {
currency: '<string>',
products: [{name: '<string>', value: 123, quantity: 123, productId: '<string>'}],
discount: 123,
tax: 123,
shipping: 123
}
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-order', 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.z-api.io/instances/{instanceId}/token/{token}/send-order",
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([
'phone' => '<string>',
'order' => [
'currency' => '<string>',
'products' => [
[
'name' => '<string>',
'value' => 123,
'quantity' => 123,
'productId' => '<string>'
]
],
'discount' => 123,
'tax' => 123,
'shipping' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/send-order"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<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.z-api.io/instances/{instanceId}/token/{token}/send-order")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}"
response = http.request(request)
puts response.read_bodyMessages
Send order
Send an order message with catalog or custom products
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
send-order
Send order
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-order \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"order": {
"currency": "<string>",
"products": [
{
"name": "<string>",
"value": 123,
"quantity": 123,
"productId": "<string>"
}
],
"discount": 123,
"tax": 123,
"shipping": 123
}
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-order"
payload = {
"phone": "<string>",
"order": {
"currency": "<string>",
"products": [
{
"name": "<string>",
"value": 123,
"quantity": 123,
"productId": "<string>"
}
],
"discount": 123,
"tax": 123,
"shipping": 123
}
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone: '<string>',
order: {
currency: '<string>',
products: [{name: '<string>', value: 123, quantity: 123, productId: '<string>'}],
discount: 123,
tax: 123,
shipping: 123
}
})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-order', 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.z-api.io/instances/{instanceId}/token/{token}/send-order",
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([
'phone' => '<string>',
'order' => [
'currency' => '<string>',
'products' => [
[
'name' => '<string>',
'value' => 123,
'quantity' => 123,
'productId' => '<string>'
]
],
'discount' => 123,
'tax' => 123,
'shipping' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/send-order"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Client-Token", "<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.z-api.io/instances/{instanceId}/token/{token}/send-order")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-order")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"order\": {\n \"currency\": \"<string>\",\n \"products\": [\n {\n \"name\": \"<string>\",\n \"value\": 123,\n \"quantity\": 123,\n \"productId\": \"<string>\"\n }\n ],\n \"discount\": 123,\n \"tax\": 123,\n \"shipping\": 123\n }\n}"
response = http.request(request)
puts response.read_bodyOverview
With this method you can send order messages, containing products from your catalog or customized at the time of sending. This message is the same as the one sent when you click the “Accept order” or “Send invoice” button.Available only for WhatsApp business accounts. Products without
productId are treated as custom items.Example on WhatsApp

Attributes
Header
Your instance ID. Available in the Z-API panel under Instances.
Your Z-API instance token.
Required
Recipient’s phone number in DDI DDD NUMBER format. E.g.: 551199999999
Order data
Show Properties
Show Properties
Currency code (e.g.: BRL)
Discount amount
Tax amount
Shipping amount
Optional
Request Body
With catalog products and payment:{
"phone": "554499999999",
"order": {
"currency": "BRL",
"discount": 10,
"tax": 10,
"shipping": 5,
"products": [
{
"productId": "23940797548900636",
"name": "Product name",
"value": 10,
"quantity": 2
}
]
},
"paymentSettings": {
"pix": {
"key": "PIX Key",
"keyType": "cpf",
"name": "Key name"
},
"card": {
"enabled": true
}
}
}
{
"phone": "554499999999",
"order": {
"currency": "BRL",
"products": [
{
"name": "Product name",
"value": 150,
"quantity": 1
}
]
}
}
Response
200
{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}
405
Make sure you are correctly sending the method specification, that is, verify that you sent POST or GET as specified at the beginning of this topic.415
If you receive a 415 error, make sure to add the “Content-Type” header to your request, which in most cases is “application/json”.⌘I