curl --request POST \
--url https://lazyapp.in/v1/messages/direct-send \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "<string>",
"to": "<string>",
"recipient": {
"value": "<string>"
},
"context": {
"message_id": "<string>"
},
"idempotency_key": "<string>",
"phone_number_id": "<string>",
"connection_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"ttl_seconds": 21615,
"template_name": "<string>"
}
'import requests
url = "https://lazyapp.in/v1/messages/direct-send"
payload = {
"body": "<string>",
"to": "<string>",
"recipient": { "value": "<string>" },
"context": { "message_id": "<string>" },
"idempotency_key": "<string>",
"phone_number_id": "<string>",
"connection_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"ttl_seconds": 21615,
"template_name": "<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({
body: JSON.stringify('<string>'),
to: '<string>',
recipient: {value: '<string>'},
context: {message_id: '<string>'},
idempotency_key: '<string>',
phone_number_id: '<string>',
connection_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
metadata: {},
ttl_seconds: 21615,
template_name: '<string>'
})
};
fetch('https://lazyapp.in/v1/messages/direct-send', 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://lazyapp.in/v1/messages/direct-send",
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([
'body' => '<string>',
'to' => '<string>',
'recipient' => [
'value' => '<string>'
],
'context' => [
'message_id' => '<string>'
],
'idempotency_key' => '<string>',
'phone_number_id' => '<string>',
'connection_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'metadata' => [
],
'ttl_seconds' => 21615,
'template_name' => '<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://lazyapp.in/v1/messages/direct-send"
payload := strings.NewReader("{\n \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<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://lazyapp.in/v1/messages/direct-send")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://lazyapp.in/v1/messages/direct-send")
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 \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"request_id": "<string>",
"status": "queued",
"acceptance_status": "<string>",
"type": "text",
"provider_message_id": "<string>",
"error_message": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>"
}Send without an approved template
For numbers enrolled in Meta’s direct-send programme. category must be utility or authentication; marketing is not eligible.
Required scope: messages:send
curl --request POST \
--url https://lazyapp.in/v1/messages/direct-send \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body": "<string>",
"to": "<string>",
"recipient": {
"value": "<string>"
},
"context": {
"message_id": "<string>"
},
"idempotency_key": "<string>",
"phone_number_id": "<string>",
"connection_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"ttl_seconds": 21615,
"template_name": "<string>"
}
'import requests
url = "https://lazyapp.in/v1/messages/direct-send"
payload = {
"body": "<string>",
"to": "<string>",
"recipient": { "value": "<string>" },
"context": { "message_id": "<string>" },
"idempotency_key": "<string>",
"phone_number_id": "<string>",
"connection_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"metadata": {},
"ttl_seconds": 21615,
"template_name": "<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({
body: JSON.stringify('<string>'),
to: '<string>',
recipient: {value: '<string>'},
context: {message_id: '<string>'},
idempotency_key: '<string>',
phone_number_id: '<string>',
connection_uuid: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
metadata: {},
ttl_seconds: 21615,
template_name: '<string>'
})
};
fetch('https://lazyapp.in/v1/messages/direct-send', 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://lazyapp.in/v1/messages/direct-send",
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([
'body' => '<string>',
'to' => '<string>',
'recipient' => [
'value' => '<string>'
],
'context' => [
'message_id' => '<string>'
],
'idempotency_key' => '<string>',
'phone_number_id' => '<string>',
'connection_uuid' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'metadata' => [
],
'ttl_seconds' => 21615,
'template_name' => '<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://lazyapp.in/v1/messages/direct-send"
payload := strings.NewReader("{\n \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<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://lazyapp.in/v1/messages/direct-send")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://lazyapp.in/v1/messages/direct-send")
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 \"body\": \"<string>\",\n \"to\": \"<string>\",\n \"recipient\": {\n \"value\": \"<string>\"\n },\n \"context\": {\n \"message_id\": \"<string>\"\n },\n \"idempotency_key\": \"<string>\",\n \"phone_number_id\": \"<string>\",\n \"connection_uuid\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"metadata\": {},\n \"ttl_seconds\": 21615,\n \"template_name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"request_id": "<string>",
"status": "queued",
"acceptance_status": "<string>",
"type": "text",
"provider_message_id": "<string>",
"error_message": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"code": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>"
}Authorizations
Your API key, e.g. sk_live_... or sk_test_....
Headers
Optional. Makes this write safe to retry: the same key replays the first response instead of acting twice.
255Body
1024utility, authentication 32Show child attributes
Show child attributes
Show child attributes
Show child attributes
12864Show child attributes
Show child attributes
How long WhatsApp keeps trying to deliver. Authentication allows at most 900 (Meta default 600).
30 <= x <= 43200Utility only: Meta files every message with this name under one generated template, so insights group them.
512^[a-z0-9_]+$Utility only. One of a link button, up to three reply buttons, or a Call on WhatsApp button, with an optional media header.
Show child attributes
Show child attributes
Response
Sent.
LazyApp's stable id for the message.
Correlation id, echoed as X-Request-Id.
queued, sent, delivered, read, played, failed text, template, image, document, audio, video, sticker, location, contacts, interactive, reaction Meta's wamid.
Set only when status is failed.