Headless API Access

Recipe Kit provides a public API for headless Shopify stores and custom integrations.

Available on: Enterprise plan only

To get started: Contact support at [email protected] to request API access.

API Overview

The Recipe Kit API allows you to:

  • Fetch recipes for custom frontends
  • Build headless commerce experiences
  • Integrate recipes into mobile apps
  • Create custom recipe displays

Base URL

All API endpoints are accessed via:

https://app.getrecipekit.com/api/public/

Available Endpoints

List Recipes

Endpoint: GET /api/public/recipes

Parameters:

Parameter Type Description
limit number Results per page (default: 20, max: 50)
cursor string Recipe ID for pagination
category string Filter by category
dietary string Filter by dietary tags (comma-separated)
q string Search title and description
sort string Sort order: recent, popular, alphabetical

Valid Dietary Tags:

  • vegan
  • vegetarian
  • gluten-free
  • dairy-free
  • keto
  • paleo
  • low-carb
  • nut-free
  • sugar-free

Example Response:

{
  "success": true,
  "recipes": [
    {
      "id": "12345",
      "title": "Chocolate Chip Cookies",
      "description": "Classic homemade cookies",
      "image": "https://...",
      "imageAlt": "Chocolate chip cookies on a plate",
      "category": "Desserts",
      "cuisine": "American",
      "tags": ["vegetarian"],
      "prepTime": "15",
      "cookTime": "12",
      "servingSize": "24",
      "store": {
        "name": "Example Bakery",
        "domain": "example-bakery.myshopify.com"
      }
    }
  ],
  "pagination": {
    "nextCursor": "12344",
    "hasNextPage": true,
    "limit": 20
  },
  "filters": {
    "category": null,
    "dietary": [],
    "search": null,
    "sort": "recent"
  }
}

Get Single Recipe

Endpoint: GET /api/public/recipes/:id

Returns full recipe details including ingredients, directions, nutrition, and equipment.

Example Response:

{
  "success": true,
  "recipe": {
    "id": "12345",
    "title": "Chocolate Chip Cookies",
    "description": "Classic homemade cookies",
    "author": "Jane Baker",
    "image": "https://...",
    "imageAlt": "Chocolate chip cookies",
    "category": "Desserts",
    "cuisine": "American",
    "tags": ["vegetarian"],
    "prepTime": "15",
    "cookTime": "12",
    "servingSize": "24",
    "calories": "150",
    "ingredients": [
      { "text": "butter", "quantity": "1", "unit": "cup" },
      { "text": "sugar", "quantity": "1", "unit": "cup" }
    ],
    "directions": [
      { "text": "Preheat oven to 375°F" },
      { "text": "Cream butter and sugar together" }
    ],
    "nutrition": { ... },
    "equipment": ["mixing bowl", "baking sheet"],
    "note": "Best served warm",
    "video": null,
    "customFields": {},
    "store": {
      "name": "Example Bakery",
      "domain": "example-bakery.myshopify.com",
      "url": "https://example-bakery.com"
    }
  }
}

List Categories

Endpoint: GET /api/public/categories

Returns available recipe categories with recipe counts.

Example Response:

{
  "success": true,
  "categories": [
    { "name": "Desserts", "count": 45 },
    { "name": "Main Course", "count": 32 },
    { "name": "Appetizers", "count": 18 }
  ]
}

Pagination

The API uses cursor-based pagination:

  1. First request: No cursor parameter
  2. Response includes nextCursor if more results exist
  3. Pass cursor parameter for next page
  4. Continue until hasNextPage is false

Example:

GET /api/public/recipes?limit=20
GET /api/public/recipes?limit=20&cursor=12344

Filtering Examples

By Category

GET /api/public/recipes?category=Italian

By Dietary Tags

GET /api/public/recipes?dietary=vegan
GET /api/public/recipes?dietary=vegan,gluten-free

Search

GET /api/public/recipes?q=chocolate

Combined Filters

GET /api/public/recipes?category=Desserts&dietary=vegan&q=cake&sort=alphabetical

Rate Limiting

The API is rate limited to 100 requests per minute per IP address.

When exceeded:

  • 429 status code returned
  • Wait before retrying

Caching

  • Recipe list: cached for 5 minutes
  • Single recipe: cached for 5 minutes
  • Categories: cached for 15 minutes

Responses include cache headers (X-Cache: HIT or X-Cache: MISS).

Error Responses

Status Meaning
200 Success
400 Invalid request parameters
404 Recipe not found
405 Method not allowed (only GET supported)
429 Rate limit exceeded
500 Server error

What's Next?

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us