curl -X GET "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012", {
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/3a4b5c6d-7e8f-9012-3456-789abcdef012"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"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}}, thank you for being a valued customer! Enjoy 20% off your next purchase with code {{2}}."
},
{
"type": "FOOTER",
"text": "Reply STOP to unsubscribe"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Shop Now",
"url": "https://example.com/shop"
}
]
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Template not found or does not belong to this organization."
}
Templates
Get template
Retrieve comprehensive configuration, components, and approval status for a template
GET
/
api
/
v1
/
templates
/
{template_id}
curl -X GET "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012", {
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/3a4b5c6d-7e8f-9012-3456-789abcdef012"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"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}}, thank you for being a valued customer! Enjoy 20% off your next purchase with code {{2}}."
},
{
"type": "FOOTER",
"text": "Reply STOP to unsubscribe"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Shop Now",
"url": "https://example.com/shop"
}
]
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Template not found or does not belong to this organization."
}
Retrieve full metadata for a message template by its UUID identifier, including component structures, Meta review status, quality rating, and associated channel bindings.
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
Unique UUID identifier of the template. Example:
3a4b5c6d-7e8f-9012-3456-789abcdef012.string
required
Bearer token for authentication. Format:
Bearer <token>.Response Fields
string
Template UUID in Sayvy AI.
string
Internal system account identifier.
string
Associated WhatsApp phone number channel UUID.
string
Meta WhatsApp Business Account identifier.
string
Meta Graph API template ID.
string
Unique template slug name.
string
BCP-47 language tag (e.g.
en_US).string
Category:
MARKETING, UTILITY, or AUTHENTICATION.string
Current operational status:
PENDING, APPROVED, or REJECTED.object[]
Structured header, body, footer, and button components.
string
Meta quality score:
GREEN, YELLOW, RED, or UNKNOWN.string
Creation timestamp.
string
Last modification timestamp.
curl -X GET "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/templates/3a4b5c6d-7e8f-9012-3456-789abcdef012", {
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/3a4b5c6d-7e8f-9012-3456-789abcdef012"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"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}}, thank you for being a valued customer! Enjoy 20% off your next purchase with code {{2}}."
},
{
"type": "FOOTER",
"text": "Reply STOP to unsubscribe"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Shop Now",
"url": "https://example.com/shop"
}
]
}
],
"quality_score": "GREEN",
"created_at": "2026-09-07T11:20:00Z",
"updated_at": "2026-09-07T11:25:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Template not found or does not belong to this organization."
}
‹ PreviousNext ›
Delete template
DELETE /api/v1/templates/{template_id}
Was this page helpful?