curl -X POST "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"language": "en_US"
}'
import requests
url = "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create"
params = {
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc"
}
payload = {
"language": "en_US"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch(
"https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
{
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
language: "en_US"
})
}
);
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"language": "en_US"
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "992817482910293",
"status": "APPROVED",
"category": "UTILITY"
}
{
"detail": "Failed to create from Meta library: Template already exists for this language."
}
{
"detail": "Unauthorized"
}
Templates
Create from library
Instantaneously provision a pre-approved template from Meta’s library to your WhatsApp Business Account
POST
/
api
/
v1
/
templates
/
library
/
{template_id}
/
create
curl -X POST "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"language": "en_US"
}'
import requests
url = "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create"
params = {
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc"
}
payload = {
"language": "en_US"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch(
"https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
{
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
language: "en_US"
})
}
);
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"language": "en_US"
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "992817482910293",
"status": "APPROVED",
"category": "UTILITY"
}
{
"detail": "Failed to create from Meta library: Template already exists for this language."
}
{
"detail": "Unauthorized"
}
Instantly provision an official template from Meta’s global library into your WhatsApp Business Account (WABA). Because library templates adhere to pre-vetted structures, they bypass manual review wait times and are provisioned directly in
APPROVED status.
Authentication
This endpoint requires Bearer token authentication.Authorization: Bearer <token>
| Header | Type | Required | Description | Format |
|---|---|---|---|---|
Authorization | string | Yes | Scoped organization API key or Bearer JWT token | Bearer <token> |
Input parameters
string
required
The official Meta library template name or slug to provision (e.g.
ecommerce_order_shipped_v1).string
required
UUID of the WhatsApp phone number channel whose connected WABA will own the provisioned template.
string
required
Bearer token for authentication. Format:
Bearer <token>.string
required
Language code for the provisioned template (e.g.
en_US, es_ES).Response Fields
Returns the Meta Graph API response confirming template creation:string
Generated Meta template ID under your WABA.
string
Operational status on Meta (typically
APPROVED).string
Meta category (
MARKETING, UTILITY, or AUTHENTICATION).curl -X POST "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"language": "en_US"
}'
import requests
url = "https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create"
params = {
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc"
}
payload = {
"language": "en_US"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, params=params, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch(
"https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
{
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
language: "en_US"
})
}
);
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates/library/ecommerce_order_shipped_v1/create?channel_id=8f3b0e2a-71d3-4a5f-9e6b-123456789abc"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"language": "en_US"
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "992817482910293",
"status": "APPROVED",
"category": "UTILITY"
}
{
"detail": "Failed to create from Meta library: Template already exists for this language."
}
{
"detail": "Unauthorized"
}
‹ PreviousOverview ›
Templates Overview
Back to Templates documentation hub
Was this page helpful?