The recipes API provides full CRUD for a user’s recipe library. All endpoints are scoped to the authenticated user — each request only accesses that user’s data. Ingredient names are stored in lowercase and are deduplicated per user, so the same ingredient name shared across multiple recipes references a single record.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/viet2811/ocipe/llms.txt
Use this file to discover all available pages before exploring further.
List recipes
GET /api/recipes/
Returns all recipes belonging to the authenticated user. Supports ordering and filtering by ingredient match.
Authentication: Required — Authorization: Bearer <access_token>
Query parameters
Sort order for results. Use
-added_date for newest-first (default) or added_date for oldest-first.Comma-separated list of ingredient names (e.g.
chicken,garlic). When provided, recipes are ranked by how many of their ingredients appear in the supplied list. Recipes with zero matches are excluded. The accuracy field in each returned object contains an integer from 0–100 representing the percentage of the recipe’s ingredients matched.Response
Returns an array of recipe objects. Theaccuracy field is only present when the ingredients filter is used.
Unique recipe identifier.
Recipe name.
The meat type category for the recipe.
How many days the cooked meal stays fresh.
Intended cooking frequency:
weekday, weekend, or rarely.Optional freeform notes about the recipe.
Current lifecycle state:
active or used.ISO 8601 timestamp of when the recipe was created.
Array of ingredient objects, each with
name (string) and quantity (string).Integer from 0–100 representing the percentage of the recipe’s ingredients that matched the
ingredients filter query. Only present when ingredients is supplied.Create a recipe
POST /api/recipes/
Creates a single recipe for the authenticated user. Ingredient names are automatically lowercased and deduplicated.
Authentication: Required — Authorization: Bearer <access_token>
Request body
Recipe name.
Meat type category (e.g.
Chicken, Beef, Pork, Seafood, Vegetarian).Number of days the cooked meal stays fresh.
Intended cooking frequency. Must be one of
weekday, weekend, or rarely.Initial lifecycle state. Must be
active or used.Array of ingredient objects. Each object must have a
name (string, required) and may include a quantity (string, optional).Optional freeform notes.
Response
Returns the newly created recipe object (same shape as the list endpoint).Delete all recipes
DELETE /api/recipes/
Deletes all recipes belonging to the authenticated user.
Authentication: Required — Authorization: Bearer <access_token>
Response
Returns204 No Content on success with an empty body.
Retrieve a single recipe
GET /api/recipes/{id}/
Returns a single recipe by its ID.
Authentication: Required — Authorization: Bearer <access_token>
Path parameters
The unique ID of the recipe.
Response
Returns a single recipe object (same shape as the list endpoint, withoutaccuracy).
Update a recipe
PUT /api/recipes/{id}/
Fully replaces an existing recipe. All required fields must be supplied. Any omitted ingredients array causes existing ingredients to be left unchanged; if the array is provided, all previous ingredients are replaced.
Authentication: Required — Authorization: Bearer <access_token>
Path parameters
The unique ID of the recipe to update.
Request body
Same fields as Create a recipe. All required fields must be included.Response
Returns the updated recipe object.Delete a single recipe
DELETE /api/recipes/{id}/
Deletes a single recipe by its ID.
Authentication: Required — Authorization: Bearer <access_token>
Path parameters
The unique ID of the recipe to delete.
Response
Returns204 No Content on success.
Bulk create recipes
POST /api/recipes/bulk/
Creates multiple recipes in a single request. Useful for importing another user’s exported recipe library.
Authentication: Required — Authorization: Bearer <access_token>
Request body
An array of recipe objects. Each object follows the same schema as Create a recipe. The request fails with
400 Bad Request if list is missing or is not an array.Response
Returns201 Created with an array of all created recipe objects.
Get recipe statistics
GET /api/recipes/stats/
Returns aggregated statistics across all of the authenticated user’s recipes, broken down by meat type and cooking frequency. Each bucket includes both the total count and the count of recipes currently in the active state.
Authentication: Required — Authorization: Bearer <access_token>
Response
Array of objects, each with
meat_type (string), total (integer), and active (integer).Array of objects, each with
frequency (string), total (integer), and active (integer).AI autofill from URL
POST /api/recipes/genai/
Scrapes a recipe webpage and uses Google Gemini to extract structured recipe data. The returned object is not saved — the front end uses it to pre-fill the recipe creation form, giving the user a chance to review and edit before saving.
Authentication: Required — Authorization: Bearer <access_token>
Video URLs (YouTube, TikTok, and similar platforms) are not supported. Only standard recipe article pages can be parsed. Submitting a video URL may result in an error or an empty response.
Request body
The full URL of the recipe page to parse (e.g.
https://some-recipe-site.com/pasta). The request fails with 400 Bad Request if url is missing.Response
Returns a recipe object in the same shape as the create/list endpoints. The recipe is not persisted to the database.Refresh all recipe states
POST /api/recipes/refresh/
Resets the state field of all recipes belonging to the authenticated user back to active. Use this at the start of a new meal planning cycle to make previously used recipes available again.
Authentication: Required — Authorization: Bearer <access_token>
Response
The number of recipes whose state was updated to
active.