curl -X GET "https://api.sayvy.ai/api/v1/templates?limit=20&page=1" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates"
params = {
"limit": 20,
"page": 1
}
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, params=params, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates?limit=20&page=1", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates?limit=20&page=1"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"has_more": false,
"total": 1,
"page": 1,
"limit": 20,
"items": [
{
"id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"account_id": "act_88492019",
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"waba_id": "104928374829102",
"meta_template_id": "992817482910293",
"name": "summer_promo_2026",
"language": "en_US",
"category": "MARKETING",
"status": "APPROVED",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Exclusive Summer VIP Offer"
},
{
"type": "BODY",
"text": "Hi {{1}}, enjoy 20% off your next order with code {{2}}."
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
]
}
{
"detail": "Unauthorized"
}
Templates
List templates
Retrieve a paginated list of WhatsApp message templates for your organization
GET
/
api
/
v1
/
templates
curl -X GET "https://api.sayvy.ai/api/v1/templates?limit=20&page=1" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates"
params = {
"limit": 20,
"page": 1
}
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, params=params, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates?limit=20&page=1", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates?limit=20&page=1"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"has_more": false,
"total": 1,
"page": 1,
"limit": 20,
"items": [
{
"id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"account_id": "act_88492019",
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"waba_id": "104928374829102",
"meta_template_id": "992817482910293",
"name": "summer_promo_2026",
"language": "en_US",
"category": "MARKETING",
"status": "APPROVED",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Exclusive Summer VIP Offer"
},
{
"type": "BODY",
"text": "Hi {{1}}, enjoy 20% off your next order with code {{2}}."
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
]
}
{
"detail": "Unauthorized"
}
Returns paginated message templates configured within your organization, including their current review status (
PENDING, APPROVED, REJECTED), languages, categories, and component structures.
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
Bearer token for authentication. Format:
Bearer <token>.number
default:"100"
Maximum number of templates to retrieve per page (min
1, max 100).number
default:"1"
Page number (starts at
1).Response Fields
boolean
Whether additional pages exist.
number
Total number of templates across all pages.
number
Current page number.
number
Items per page limit applied.
MessageTemplateResponse[]
Array of message templates:
Show Template object attributes
Show Template object attributes
string
Template UUID.
string
WhatsApp phone number channel UUID.
string
Meta WABA identifier.
string
Meta remote ID.
string
Template identifier name.
string
Language tag (e.g.
en_US).string
Category (
MARKETING, UTILITY, AUTHENTICATION).string
Review status (
APPROVED, PENDING, REJECTED).object[]
Array of component structures.
string
Quality rating (
GREEN, YELLOW, RED).string
Creation timestamp.
string
Last modification timestamp.
curl -X GET "https://api.sayvy.ai/api/v1/templates?limit=20&page=1" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates"
params = {
"limit": 20,
"page": 1
}
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, params=params, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates?limit=20&page=1", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/templates?limit=20&page=1"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"has_more": false,
"total": 1,
"page": 1,
"limit": 20,
"items": [
{
"id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"account_id": "act_88492019",
"channel_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"waba_id": "104928374829102",
"meta_template_id": "992817482910293",
"name": "summer_promo_2026",
"language": "en_US",
"category": "MARKETING",
"status": "APPROVED",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Exclusive Summer VIP Offer"
},
{
"type": "BODY",
"text": "Hi {{1}}, enjoy 20% off your next order with code {{2}}."
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
]
}
{
"detail": "Unauthorized"
}
‹ PreviousNext ›
Get template
GET /api/v1/templates/{template_id}
Was this page helpful?