Get product FAQs
curl --request GET \
--url https://api.example.com/api/faqs/{productId} \
--header 'Tenantid: <api-key>'import requests
url = "https://api.example.com/api/faqs/{productId}"
headers = {"Tenantid": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Tenantid: '<api-key>'}};
fetch('https://api.example.com/api/faqs/{productId}', 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.example.com/api/faqs/{productId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Tenantid: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/faqs/{productId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Tenantid", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/faqs/{productId}")
.header("Tenantid", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/faqs/{productId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Tenantid"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"faqs": [
{
"question": "Is this jacket waterproof?",
"answer": "Yes. Its waterproof shell is designed for wet-weather use."
}
],
"faqsGeneratedAt": "2026-08-05T09:30:00Z"
}"Tenant ID Invalid.""Tenant tenant-123 not found #000"Product content
Get product FAQs
Retrieve generated questions and answers for a product.
GET
/
api
/
faqs
/
{productId}
Get product FAQs
curl --request GET \
--url https://api.example.com/api/faqs/{productId} \
--header 'Tenantid: <api-key>'import requests
url = "https://api.example.com/api/faqs/{productId}"
headers = {"Tenantid": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Tenantid: '<api-key>'}};
fetch('https://api.example.com/api/faqs/{productId}', 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.example.com/api/faqs/{productId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Tenantid: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/faqs/{productId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Tenantid", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/api/faqs/{productId}")
.header("Tenantid", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/faqs/{productId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Tenantid"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"faqs": [
{
"question": "Is this jacket waterproof?",
"answer": "Yes. Its waterproof shell is designed for wet-weather use."
}
],
"faqsGeneratedAt": "2026-08-05T09:30:00Z"
}"Tenant ID Invalid.""Tenant tenant-123 not found #000"Retrieve pre-generated shopper questions and answers for a product detail page. FAQ content is scoped to the catalogue selected by the
Use the exact product identifier from your preezie catalogue. URL-encode the identifier when it contains characters that are not safe in a URL path.
Treat an empty array as content unavailable and render your product page without the FAQ section. It is not necessary to show an error to the shopper.
To generate this content for a catalogue, see Configure FAQ and Highlights jobs.
Tenantid header.
This endpoint does not require a Core Intent operation token.
Request example
curl --request GET \
"$PREEZIE_API_URL/api/faqs/product-123" \
--header "Tenantid: $PREEZIE_TENANT_ID"
Response
The endpoint returns a JSON object containing the generated FAQs and their most recent generation time:{
"faqs": [
{
"question": "Is this jacket waterproof?",
"answer": "Yes. Its waterproof shell is designed for wet-weather use."
},
{
"question": "How should I clean this jacket?",
"answer": "Machine wash it on a gentle cycle and follow the care label instructions."
}
],
"faqsGeneratedAt": "2026-08-05T09:30:00Z"
}
| Field | Description |
|---|---|
faqs | Array of generated question and answer objects. |
faqsGeneratedAt | UTC date and time when the FAQs were most recently generated. |
Content not available
A successful request returns200 OK even when FAQ content has not been generated for the product:
{
"faqs": [],
"faqsGeneratedAt": null
}
FAQ content is generated ahead of time. This endpoint retrieves stored content and does not start content generation.
Authorizations
The preezie tenant identifier. This value identifies the catalogue and is not a secret.
Path Parameters
The product identifier used in the tenant's catalogue.
Response
The generated FAQ content for the product.
