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 pending request past its expires_at is marked expired. The page you get back was read before that, so it can still show them as pending.

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