Contents
On this page

List Recipes - Plugixa Recipe

GET /plugixa-recipe/v1/recipes

List recipes in every status, one page at a time, with filters for status, taxonomy, difficulty, rating and diet.

Needs a signed-in user who can open Plugixa Recipe: the plugixa_recipe_manage capability, or WordPress’s edit_posts (Contributor and up).

Note. List rows are the stored recipe rows: tags, equipment and gallery stay JSON text here, and numbers are numeric strings. Get Recipe decodes them and adds ingredients, instructions and nutrition.

Request

GET https://your-site.example/wp-json/plugixa-recipe/v1/recipes?status=published&filter[difficulty]=easy&limit=10

Query parameters

Name Type Default Description
search string Matches the title, the description or the author name.
status string Exact status: draft, pending, published or archived.
category_id integer|string Recipes in this category, or uncategorized for recipes in none.
filter[cuisine_id] integer Recipes in this cuisine.
filter[course_id] integer Recipes in this course.
filter[difficulty] string easy, medium, hard or expert.
filter[is_featured] integer 1 for featured recipes only, 0 for the others.
filter[min_rating] number Average rating at least this.
filter[is_vegetarian], filter[is_vegan], filter[is_gluten_free], filter[is_dairy_free], filter[is_keto], filter[is_low_carb] integer 1 for recipes with the flag, 0 for recipes without it.

Plus the list parameters every list accepts. orderby accepts title, created_at (the default), modified_at, display_order, rating_average, view_count, total_time and published_at; anything else sorts by created_at.

Responses

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

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": "12",
        "language_code": "",
        "translation_group": "",
        "title": "Lemon Pancakes",
        "slug": "lemon-pancakes",
        "description": "<p>Light, fluffy pancakes with lemon zest.</p>",
        "excerpt": "",
        "notes": "",
        "tips": "",
        "image_id": "345",
        "gallery": null,
        "tags": "[\"breakfast\",\"brunch\"]",
        "equipment": "[\"Frying pan\"]",
        "video_url": "",
        "servings": "4",
        "servings_unit": "servings",
        "yield_amount": "",
        "yield_unit": "",
        "prep_time": "10",
        "cook_time": "15",
        "rest_time": null,
        "total_time": "25",
        "difficulty": "easy",
        "cost": "budget",
        "season": "",
        "status": "published",
        "is_featured": "0",
        "is_editor_pick": "0",
        "display_order": "0",
        "source": "",
        "source_url": "",
        "author_name": "",
        "view_count": "0",
        "rating_average": "0.00",
        "rating_count": "0",
        "like_count": "0",
        "enable_schema": "1",
        "canonical_post_id": null,
        "seo_score": null,
        "seo_title": null,
        "seo_description": null,
        "seo_keywords": null,
        "focus_keyword": null,
        "is_vegetarian": "1",
        "is_vegan": "0",
        "is_gluten_free": "0",
        "is_dairy_free": "0",
        "is_keto": "0",
        "is_low_carb": "0",
        "is_nut_free": "0",
        "is_paleo": "0",
        "is_sugar_free": "0",
        "is_halal": "0",
        "is_kosher": "0",
        "published_at": "2026-11-12 09:30:00",
        "created_at": "2026-11-12 09:30:00",
        "created_by": "1",
        "submission_ip": null,
        "modified_at": null,
        "modified_by": null,
        "image_url": "https://your-site.example/wp-content/uploads/2026/11/lemon-pancakes-300x200.jpg",
        "image_thumbnail": "https://your-site.example/wp-content/uploads/2026/11/lemon-pancakes-150x150.jpg",
        "categories": [
          {
            "id": "3",
            "name": "Breakfast",
            "slug": "breakfast"
          }
        ],
        "cuisines": [],
        "courses": [
          {
            "id": "8",
            "name": "Breakfast",
            "slug": "breakfast"
          }
        ],
        "category_name": "Breakfast",
        "cuisine_name": null,
        "course_name": "Breakfast",
        "category_id": 3,
        "category_ids": [
          3
        ],
        "cuisine_id": 0,
        "course_id": 8,
        "average_rating": 0.0
      }
    ],
    "total": 1,
    "limit": 10,
    "offset": 0
  }
}
Field Type Meaning
data.items[] object A stored recipe row, plus the fields below
data.items[].categories, cuisines, courses object[] id, name and slug of each linked term
data.items[].category_name string|null Every category name, comma separated
data.items[].cuisine_name, course_name string|null The first linked cuisine and course
data.items[].category_ids integer[] Ids of the linked categories
data.items[].average_rating number rating_average as a number
data.items[].image_url string Medium-size image, only when the recipe has one
data.total integer Recipes matching the filters, before paging
data.limit, data.offset integer The page size and offset used

Errors

Plus the errors every endpoint can return.

Examples

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

Quick Links

Share