Contents
On this page
List Requests - Plugixa Testimonial
GET /plugixatestimonial/v1/requests
List the testimonial requests sent by e-mail, one page at a time. See Testimonial requests.
Administrators only: the user needs WordPress’s manage_options capability. No plugin capability opens this route.
Listing expires requests. After the page is read, every
pendingrequest past itsexpires_atis markedexpired. The page you get back was read before that, so it can still show them aspending.
Request
GET https://your-site.example/wp-json/plugixatestimonial/v1/requests?status=pending
Query parameters
| Name | Type | Default | Description |
|---|---|---|---|
status |
string |
pending, submitted or expired. Any other value is ignored. |
|
search |
string |
Text found in the recipient’s e-mail or name. |
limit, offset, orderby and order work as described in list parameters; filter[...] is not read. orderby accepts created_at, recipient_email, recipient_name, status and sent_at; anything else falls back to created_at.
Responses
200 OK. data.items is one page of requests.
{
"success": true,
"message": "",
"data": {
"items": [
{
"id": "15",
"recipient_email": "lucas@example.com",
"recipient_name": "Lucas Bernard",
"subject": "We'd love your feedback!",
"message": "Hi {recipient_name},\n\nCould you share a few words about working with us?\n\n{submission_link}\n\nThank you!\n{site_name}",
"status": "pending",
"testimonial_id": null,
"sent_at": "2026-11-12 09:30:00",
"submitted_at": null,
"expires_at": "2026-12-12 08:30:00",
"created_by": "1",
"created_at": "2026-11-12 09:30:00"
}
],
"total": 1
}
}
| Field | Type | Meaning |
|---|---|---|
data.items[].id |
string |
The request’s id |
data.items[].recipient_email |
string |
Who it was sent to |
data.items[].recipient_name |
string|null |
Their name |
data.items[].subject |
string|null |
The e-mail subject |
data.items[].message |
string|null |
The message, with its {recipient_name}, {site_name} and {submission_link} placeholders |
data.items[].status |
string |
pending, submitted or expired |
data.items[].testimonial_id |
string|null |
The testimonial the recipient submitted |
data.items[].sent_at |
string|null |
Site-time datetime the e-mail last went out, null if it never did |
data.items[].submitted_at |
string|null |
Site-time datetime of the submission |
data.items[].expires_at |
string|null |
UTC datetime after which the link stops working |
data.items[].created_at |
string|null |
Site-time datetime |
data.total |
integer |
Requests matching the filters, before paging |
Unlike the other lists, data has no state.
Errors
Plus the errors every endpoint can return.
Examples
curl -s "https://your-site.example/wp-json/plugixatestimonial/v1/requests?status=pending" \
-u "admin:$WP_APP_PASSWORD"
<?php
$query = http_build_query([
'status' => 'pending',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixatestimonial/v1/requests?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => 'admin:' . getenv('WP_APP_PASSWORD'),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const query = new URLSearchParams({ status: 'pending' });
const response = await fetch(`https://your-site.example/wp-json/plugixatestimonial/v1/requests?${query}`, {
headers: {
'Authorization': 'Basic ' + btoa(`admin:${process.env.WP_APP_PASSWORD}`),
},
});
const { data } = await response.json();
Quick Links
Share