Contents
On this page

List FAQs - Plugixa FAQ

GET /plugixa-faq/v1/faqs

List FAQs one page at a time, in any status, with filters for status, category, dates, author and helpful votes.

Any signed-in user with the plugixa_faq_manage capability or WordPress’s edit_posts (Contributors and up, by default).

Request

GET https://your-site.example/wp-json/plugixa-faq/v1/faqs?status=published&orderby=menu_order&order=ASC

Query parameters

Name Type Default Description
search string Text found in the question or the answer. Same as filter[search].
status string draft or published. Same as filter[status]; send filter[status][] several times for more than one.
category_id integer FAQs in this category. For FAQs with no category send filter[category_id]=0 (the top-level category_id=0 is ignored).
filter[categories][] integer[] FAQs in any of these categories.
filter[visibility][] string[] public, private or password. Only the array form is read.
filter[date_from] string Created on or after this day, YYYY-MM-DD.
filter[date_to] string Created on or before this day, YYYY-MM-DD.
filter[helpful_min] integer At least this many “helpful” votes.
filter[helpful_max] integer At most this many “helpful” votes.
filter[author] integer Created by this WordPress user id.
filter[language] string One language code. Only with WPML or Polylang active.
group_by_translation boolean false With WPML or Polylang active: only rows in the default language (plus rows with no translation group), each with a translations list of { id, language_code }.
with_content boolean false Send 1 to add every other column of the FAQ (answer, slug, visibility, counters, …) plus category_slug and category_description to each row.

Plus the list parameters every paged list accepts. orderby accepts id, question, status, menu_order, view_count, created_at and modified_at; anything else falls back to created_at.

Responses

200 OK. data.items is one page of FAQs.

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": "42",
        "question": "How long does shipping take?",
        "category_id": "3",
        "status": "published",
        "parent_id": null,
        "view_count": "128",
        "created_at": "2026-11-12 09:30:00",
        "language_code": null,
        "translation_group": null,
        "category_name": "Shipping"
      }
    ],
    "total": 1,
    "state": {
      "filter": {
        "status": "published"
      },
      "limit": 20,
      "offset": 0,
      "orderby": "menu_order",
      "order": "ASC"
    }
  }
}
Field Type Meaning
data.items[].id string The FAQ’s id
data.items[].question string The question
data.items[].category_id string|null null when the FAQ has no category
data.items[].category_name string|null The category’s name
data.items[].status string draft, published, or pending for some form submissions
data.items[].parent_id string|null The parent FAQ when nested
data.items[].view_count string Times the answer was viewed
data.items[].created_at string Site-time datetime
data.total integer FAQs matching the filters, before paging
data.state object The filters, paging and sorting that were applied

List rows leave out the answer. Read one FAQ with Get FAQ, or send with_content=1.

Errors

Plus the errors every endpoint can return.

Examples

curl -s "https://your-site.example/wp-json/plugixa-faq/v1/faqs?status=published&orderby=menu_order&order=ASC" \
  -u "admin:$WP_APP_PASSWORD"
<?php
$query = http_build_query([
    'status'  => 'published',
    'orderby' => 'menu_order',
    'order'   => 'ASC',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixa-faq/v1/faqs?' . $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: 'published', orderby: 'menu_order', order: 'ASC' });
const response = await fetch(`https://your-site.example/wp-json/plugixa-faq/v1/faqs?${query}`, {
  headers: {
    'Authorization': 'Basic ' + btoa(`admin:${process.env.WP_APP_PASSWORD}`),
  },
});
const { data } = await response.json();

Quick Links

Share