### GET /clip Source: https://docs.recipesage.com/api Clips a recipe from a URL using a GET request. ```APIDOC ## GET /clip ### Description Clips a recipe from a URL. ### Method GET ### Endpoint https://api.recipesage.com/clip ### Parameters #### Query Parameters - **url** (string) - Required - The URL of the recipe to clip. ### Response #### Success Response (200) Returns the clipped recipe data. #### Response Example ```json { "title": "string", "description": "string", "yield": "string", "activeTime": "string", "totalTime": "string", "source": "string", "url": "string", "notes": "string", "ingredients": "string", "instructions": "string", "folder": "string", "rating": 0, "lastMadeAt": "string", "nutritionInfo": "string", "nutritionServingSize": "string", "nutritionCalories": 0, "nutritionTotalFat": 0, "nutritionSaturatedFat": 0, "nutritionTransFat": 0, "nutritionPolyunsaturatedFat": 0, "nutritionMonounsaturatedFat": 0, "nutritionCholesterol": 0, "nutritionSodium": 0, "nutritionTotalCarbs": 0, "nutritionDietaryFiber": 0, "nutritionTotalSugars": 0, "nutritionAddedSugars": 0, "nutritionProtein": 0, "nutritionVitaminD": 0, "nutritionCalcium": 0, "nutritionIron": 0, "nutritionPotassium": 0, "nutritionOtherDetails": "string", "imageURL": "string" } ``` #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### Get user preferences response sample Source: https://docs.recipesage.com/api The response sample for the getPreferences endpoint. ```json null ``` -------------------------------- ### GET getSyncRecipesManifestV1: 200 Response JSON Source: https://docs.recipesage.com/api Sample successful response from GET /compat/v2/recipes/getSyncRecipesManifestV1. The response is a JSON array of tuples, each containing a recipe ID string and an updatedAt timestamp as an epoch millisecond number. ```json [ [ "string", 0 ] ] ``` -------------------------------- ### Start a cookbook PDF generation job response Source: https://docs.recipesage.com/api The successful 200 response returned after starting a cookbook job, containing the generated jobId. ```json { "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39" } ``` -------------------------------- ### GET /compat/v2/users/getIsHandleAvailable Source: https://docs.recipesage.com/api Checks whether a profile handle is available to be claimed. Requires authorization and a handle query parameter. ```APIDOC ## GET /compat/v2/users/getIsHandleAvailable ### Description Checks whether a profile handle is available to be claimed. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/users/getIsHandleAvailable ### Parameters #### Query Parameters - **handle** (string, non-empty) - Required - The profile handle to check availability. ### Authorizations _Authorization_ ### Response #### Success Response (200) - **available** (boolean) - Indicates if the handle is available. #### Response Example { "available": true } #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### GET /compat/v2/shoppingLists/getShoppingList Source: https://docs.recipesage.com/api Retrieves a single shopping list by its ID. Requires authorization and the shopping list ID as a query parameter. ```APIDOC ## GET /compat/v2/shoppingLists/getShoppingList ### Description Retrieves a single shopping list by its ID. Requires authorization and the shopping list ID as a query parameter. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/shoppingLists/getShoppingList ### Parameters #### Query Parameters - **id** (string uuid) - Required - The ID of the shopping list to retrieve. ### Response #### Success Response (200) - **id** (string uuid) - The shopping list ID. - **userId** (string uuid) - The ID of the user who owns the list. - **user** (object) - The owner user object. - **collaboratorUsers** (array) - List of collaborator user objects. - **title** (string) - The title of the shopping list. - **categoryOrder** (string) - The category order. - **createdAt** (string) - Creation timestamp. - **updatedAt** (string) - Last update timestamp. - **_count** (object) - Contains the number of items. #### Response Example { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] }, "collaboratorUsers": [ { "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] } } ], "title": "string", "categoryOrder": "string", "createdAt": "string", "updatedAt": "string", "_count": { "items": -9007199254740991 } } ### Error Handling - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### GET /compat/v2/mealPlans/getMealPlanItems Source: https://docs.recipesage.com/api Retrieves the items belonging to a specified meal plan. Requires the mealPlanId as a query parameter and authorization. ```APIDOC ## GET /compat/v2/mealPlans/getMealPlanItems ### Description Retrieves the items belonging to a specified meal plan. Requires the mealPlanId as a query parameter and authorization. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/mealPlans/getMealPlanItems ### Parameters #### Query Parameters - **mealPlanId** (string uuid) - Required - The ID of the meal plan to retrieve items for. ### Responses #### Success Response (200) Returns an array of meal plan items. Each item includes: - **id** (string uuid) - The unique identifier of the meal plan item. - **mealPlanId** (string uuid) - The ID of the meal plan this item belongs to. - **title** (string) - The title of the meal plan item. - **notes** (string) - Additional notes for the meal plan item. - **scheduled** (string) - The scheduled time for the meal plan item. - **scheduledDate** (string) - The scheduled date for the meal plan item. - **meal** (string) - The meal type (e.g., breakfast, lunch, dinner). - **createdAt** (string) - The creation timestamp. - **updatedAt** (string) - The last update timestamp. - **user** (object) - The user associated with the meal plan item, containing id, name, handle, enableProfile, and profileImages. - **shoppingListItems** (array) - Shopping list items associated with the meal plan item, each containing id, title, shoppingListId, and shoppingList. - **recipeId** (string uuid) - The ID of the recipe associated with the meal plan item. - **recipe** (object) - The recipe details, including id, title, ingredients, and recipeImages. #### Response Example ```json [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "mealPlanId": "aa4c792a-336f-412f-985e-eeef1181f3a8", "title": "string", "notes": "string", "scheduled": "string", "scheduledDate": "string", "meal": "string", "createdAt": "string", "updatedAt": "string", "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] }, "shoppingListItems": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "title": "string", "shoppingListId": "7dc44ca0-9d2a-4e9f-8b8d-05307025c33d", "shoppingList": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "title": "string" } } ], "recipeId": "31545f76-b27f-4c7c-9faf-229771396df1", "recipe": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "title": "string", "ingredients": "string", "recipeImages": [ { "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] } } ] ``` #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### GET /compat/v2/recipes/getRecipesByIds Source: https://docs.recipesage.com/api Fetches up to 100 recipes by their unique identifiers. Requires authorization and an array of recipe IDs as a query parameter. ```APIDOC ## GET /compat/v2/recipes/getRecipesByIds ### Description Fetches up to 100 recipes by their unique identifiers. Requires authorization and an array of recipe IDs as a query parameter. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/recipes/getRecipesByIds ### Parameters #### Query Parameters - **ids** (Array of strings ) - Required - Array of recipe IDs, up to 100 items. Each ID must match the pattern ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F... ### Authorizations - **Authorization** - Required - Authorization header must be provided. ### Responses #### Success Response (200) - **id** (string) - Recipe ID - **userId** (string) - User ID - **fromUserId** (string) - From user ID - **title** (string) - Recipe title - **description** (string) - Recipe description - **yield** (string) - Yield - **activeTime** (string) - Active time - **totalTime** (string) - Total time - **source** (string) - Source - **url** (string) - URL - **folder** (string) - Folder - **ingredients** (string) - Ingredients - **instructions** (string) - Instructions - **notes** (string) - Notes - **createdAt** (string) - Created timestamp - **updatedAt** (string) - Updated timestamp - **lastMadeAt** (string) - Last made timestamp - **rating** (number) - Rating - **nutritionServingSize** (string) - Serving size - **nutritionCalories** (number) - Calories - **nutritionTotalFat** (number) - Total fat - **nutritionSaturatedFat** (number) - Saturated fat - **nutritionTransFat** (number) - Trans fat - **nutritionPolyunsaturatedFat** (number) - Polyunsaturated fat - **nutritionMonounsaturatedFat** (number) - Monounsaturated fat - **nutritionCholesterol** (number) - Cholesterol - **nutritionSodium** (number) - Sodium - **nutritionTotalCarbs** (number) - Total carbs - **nutritionDietaryFiber** (number) - Dietary fiber - **nutritionTotalSugars** (number) - Total sugars - **nutritionAddedSugars** (number) - Added sugars - **nutritionProtein** (number) - Protein - **nutritionVitaminD** (number) - Vitamin D - **nutritionCalcium** (number) - Calcium - **nutritionIron** (number) - Iron - **nutritionPotassium** (number) - Potassium - **nutritionOtherDetails** (string) - Other nutrition details - **recipeLabels** (array) - Array of recipe labels - **recipeImages** (array) - Array of recipe images - **recipeLinks** (array) - Array of linked recipes #### Response Example ```json [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "fromUserId": "1dace4d0-98e4-4ab4-97cf-c23ae5cef503", "title": "string", "description": "string", "yield": "string", "activeTime": "string", "totalTime": "string", "source": "string", "url": "string", "folder": "string", "ingredients": "string", "instructions": "string", "notes": "string", "createdAt": "string", "updatedAt": "string", "lastMadeAt": "string", "rating": -9007199254740991, "nutritionServingSize": "string", "nutritionCalories": 0, "nutritionTotalFat": 0, "nutritionSaturatedFat": 0, "nutritionTransFat": 0, "nutritionPolyunsaturatedFat": 0, "nutritionMonounsaturatedFat": 0, "nutritionCholesterol": 0, "nutritionSodium": 0, "nutritionTotalCarbs": 0, "nutritionDietaryFiber": 0, "nutritionTotalSugars": 0, "nutritionAddedSugars": 0, "nutritionProtein": 0, "nutritionVitaminD": 0, "nutritionCalcium": 0, "nutritionIron": 0, "nutritionPotassium": 0, "nutritionOtherDetails": "string", "recipeLabels": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "labelId": "41dc2eb6-a66e-42b0-a808-3d1e63af79f1", "recipeId": "31545f76-b27f-4c7c-9faf-229771396df1", "createdAt": "string", "updatedAt": "string", "label": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "createdAt": "string", "updatedAt": "string", "labelGroupId": "b768885f-08b2-4ff7-b6f5-33edda42e319", "labelGroup": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "warnWhenNotPresent": true, "createdAt": "string", "updatedAt": "string" }, "_count": { "recipeLabels": -9007199254740991 } } } ], "recipeImages": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ], "recipeLinks": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "linkedRecipe": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "fromUserId": "1dace4d0-98e4-4ab4-97cf-c23ae5cef503", "title": "string", "description": "string", "yield": "string", "activeTime": "string", "totalTime": "string", "source": "string", "url": "string", "folder": "string", "createdAt": "string", "updatedAt": "string", "lastMadeAt": "string", "rating": -9007199254740991, "recipeLabels": [ { "label": { "title": "string" } } ], "recipeImages": [ { "order": -9007199254740991, "image": { "location": "string" } } ], "fromUser": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] }, "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] } } } ] } ] ``` #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### GET /compat/v2/recipes/getSyncRecipesManifestV1 Source: https://docs.recipesage.com/api Retrieves a list of visible recipes as [id, updatedAt epoch ms] tuples for synchronization purposes. Requires authorization. ```APIDOC ## GET /compat/v2/recipes/getSyncRecipesManifestV1 ### Description Retrieves a list of visible recipes as [id, updatedAt epoch ms] tuples for sync. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/recipes/getSyncRecipesManifestV1 ### Authorizations Authorization ### Responses #### Success Response (200) Successful response #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ### Response Example ```json [ [ "string", 0 ] ] ``` ``` -------------------------------- ### Get labels by user ID response sample Source: https://docs.recipesage.com/api Example JSON response for the getLabelsByUserId endpoint, returning an array of label objects with associated label group details and recipe label counts. ```json [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "createdAt": "string", "updatedAt": "string", "labelGroupId": "b768885f-08b2-4ff7-b6f5-33edda42e319", "labelGroup": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "warnWhenNotPresent": true, "createdAt": "string", "updatedAt": "string" }, "_count": { "recipeLabels": -9007199254740991 } } ] ``` -------------------------------- ### POST /compat/v2/users/register Source: https://docs.recipesage.com/api Creates a new account with email and password. Returns a session token and user details upon success. ```APIDOC ## POST /compat/v2/users/register ### Description Creates a new account with email and password. Returns a session token and user details upon success. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/users/register ### Parameters #### Request Body - **name** (string) - Required - The user's name. Length: 1 to 254 characters. - **email** (string) - Required - The user's email address. Must be a valid email format. Length: 1 to 254 characters. - **password** (string) - Required - The user's password. Length: 6 to 1000 characters. ### Request Example { "name": "string", "email": "user@example.com", "password": "string" } ### Response #### Success Response (200) - **token** (string) - The session token. - **userId** (string) - The user's unique identifier. - **email** (string) - The user's email address. #### Response Example { "token": "string", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "email": "string" } ### Error Responses - **400** - Invalid input data. - **500** - Internal server error. ``` -------------------------------- ### POST searchRecipes: 200 response sample Source: https://docs.recipesage.com/api Example successful response from POST /compat/v2/recipes/searchRecipes. Contains an array of recipe objects (with id, userId, title, folder, rating, labels, images, and nested user/fromUser info) and a totalCount of matching results. ```json { "recipes": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "fromUserId": "1dace4d0-98e4-4ab4-97cf-c23ae5cef503", "title": "string", "description": "string", "yield": "string", "activeTime": "string", "totalTime": "string", "source": "string", "url": "string", "folder": "string", "createdAt": "string", "updatedAt": "string", "lastMadeAt": "string", "rating": -9007199254740991, "recipeLabels": [ { "label": { "title": "string" } } ], "recipeImages": [ { "order": -9007199254740991, "image": { "location": "string" } } ], "fromUser": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] }, "user": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "handle": "string", "enableProfile": true, "profileImages": [ { "order": -9007199254740991, "imageId": "bbefe473-c66a-4040-85cf-1c7e6f0b3830", "image": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } } ] } } ], "totalCount": -9007199254740991 } ``` -------------------------------- ### POST /compat/v2/jobs/startCookbookJob Source: https://docs.recipesage.com/api Starts a cookbook PDF generation job. Requires a title, boolean flags for table of contents, images, and labels, and a list of recipe IDs. Returns a job ID for tracking the generation process. ```APIDOC ## POST /compat/v2/jobs/startCookbookJob ### Description Starts a cookbook PDF generation job. Requires a title, boolean flags for table of contents, images, and labels, and a list of recipe IDs. Returns a job ID for tracking the generation process. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/jobs/startCookbookJob ### Authorizations Authorization ### Parameters #### Request Body - **title** (string, 1-1000 characters) - Required - Title of the cookbook - **subtitle** (string, <= 1000 characters) - Optional - Subtitle of the cookbook - **introduction** (string, <= 50000 characters) - Optional - Introduction text for the cookbook - **author** (string, <= 1000 characters) - Optional - Author of the cookbook - **includeToc** (boolean) - Required - Whether to include a table of contents - **includeImages** (boolean) - Required - Whether to include images - **includeLabels** (boolean) - Required - Whether to include labels - **recipeIds** (Array of strings , 1-1000 items) - Required - List of recipe IDs to include in the cookbook ### Request Example { "title": "string", "subtitle": "string", "introduction": "string", "author": "string", "includeToc": true, "includeImages": true, "includeLabels": true, "recipeIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ] } ### Response #### Success Response (200) - **jobId** (string) - The ID of the generated job #### Response Example { "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39" } #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### GET /clip Response Schema Source: https://docs.recipesage.com/api The JSON structure returned by the GET /clip endpoint upon a successful 200 response. ```json { * "title": "string", * "description": "string", * "yield": "string", * "activeTime": "string", * "totalTime": "string", * "source": "string", * "url": "string", * "notes": "string", * "ingredients": "string", * "instructions": "string", * "folder": "string", * "rating": 0, * "lastMadeAt": "string", * "nutritionInfo": "string", * "nutritionServingSize": "string", * "nutritionCalories": 0, * "nutritionTotalFat": 0, * "nutritionSaturatedFat": 0, * "nutritionTransFat": 0, * "nutritionPolyunsaturatedFat": 0, * "nutritionMonounsaturatedFat": 0, * "nutritionCholesterol": 0, * "nutritionSodium": 0, * "nutritionTotalCarbs": 0, * "nutritionDietaryFiber": 0, * "nutritionTotalSugars": 0, * "nutritionAddedSugars": 0, * "nutritionProtein": 0, * "nutritionVitaminD": 0, * "nutritionCalcium": 0, * "nutritionIron": 0, * "nutritionPotassium": 0, * "nutritionOtherDetails": "string", * "imageURL": "string" } ``` -------------------------------- ### POST /compat/v2/jobs/startExportJob Source: https://docs.recipesage.com/api Starts an export job for the specified recipes. Requires a format and optionally a list of recipe IDs, and returns a jobId for tracking the export. ```APIDOC ## POST /compat/v2/jobs/startExportJob ### Description Starts an export job for the specified recipes. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/jobs/startExportJob ### Parameters #### Request Body - **format** (string) - Required - The export format. Allowed values: "txt", "pdf", "jsonld". n- **recipeIds** (Array of strings ) - Optional - List of recipe IDs to export. Each item must be a valid UUID. Array length must be between 1 and 5000. ### Request Example { "format": "txt", n "recipeIds": [ n "497f6eca-6276-4993-bfeb-53cbbbba6f08" n ] n} ### Response #### Success Response (200) - **jobId** (string) - The ID of the started export job. #### Response Example { "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39" n} ### Error Handling - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### POST /compat/v2/shoppingLists/createShoppingList Source: https://docs.recipesage.com/api Creates a new shopping list. Requires authorization and a JSON body with a title and collaborator user IDs. ```APIDOC ## POST /compat/v2/shoppingLists/createShoppingList ### Description Creates a new shopping list with the specified title and collaborator user IDs. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/shoppingLists/createShoppingList ### Authorizations Authorization (required) ### Parameters #### Request Body (application/json) - **title** (string, 1-254 characters) - Required - The title of the shopping list. - **collaboratorUserIds** (Array of strings ) - Required - List of user IDs to collaborate on the shopping list. ### Request Example { "title": "string", "collaboratorUserIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ] } ### Response #### Success Response (200) - **reference** (string) - Reference identifier. - **id** (string ) - The ID of the created shopping list. #### Response Example { "reference": "2ddb20b8-e0e3-45ae-a638-42610b990a6a", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } ### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### GET /compat/v2/users/validateSession Source: https://docs.recipesage.com/api Validates the caller's bearer token. Requires authorization. ```APIDOC ## GET /compat/v2/users/validateSession ### Description Validates the caller's bearer token. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/users/validateSession ### Authorizations _Authorization_ ### Responses #### 200 Successful response #### 400 Invalid input data #### 401 Authorization not provided #### 403 Insufficient access #### 404 Not found #### 500 Internal server error ### Response Example Content type: application/json "string" ``` -------------------------------- ### POST /compat/v2/mealPlans/createMealPlan Source: https://docs.recipesage.com/api Creates a new meal plan. Requires authorization and a request body with the meal plan title and collaborator user IDs. ```APIDOC ## POST /compat/v2/mealPlans/createMealPlan ### Description Creates a new meal plan. Requires authorization and a JSON request body. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/mealPlans/createMealPlan ### Parameters #### Request Body - **title** (string) - Required - The title of the meal plan (1-254 characters). - **collaboratorUserIds** (Array of strings ) - Required - User IDs of collaborators. - **customMealOptions** (string or null) - Optional - Custom meal options. ### Request Example { "title": "string", "collaboratorUserIds": [ "497f6eca-6276-4993-bfeb-53cbbbba6f08" ], "customMealOptions": "string" } ### Responses #### Success Response (200) Returns an object with a reference and an id. #### Response Example { "reference": "2ddb20b8-e0e3-45ae-a638-42610b990a6a", "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08" } #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### Start Export Job Source: https://docs.recipesage.com/api Initiates an export job by providing the desired format and a list of recipe IDs. The response returns a jobId for tracking. ```json { * "format": "txt", * "recipeIds": [ * "497f6eca-6276-4993-bfeb-53cbbbba6f08" ] } ``` ```json { * "jobId": "9d222c6d-893e-4e79-8201-3c9ca16a0f39" } ``` -------------------------------- ### GET /compat/v2/labels/getLabels Source: https://docs.recipesage.com/api Retrieves all labels belonging to the authenticated caller. Requires authorization. ```APIDOC ## GET /compat/v2/labels/getLabels ### Description Retrieves all of the caller's labels. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/labels/getLabels ### Authorizations Authorization ### Response #### Success Response (200) Returns an array of label objects. #### Response Example [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "createdAt": "string", "updatedAt": "string", "labelGroupId": "b768885f-08b2-4ff7-b6f5-33edda42e319", "labelGroup": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "warnWhenNotPresent": true, "createdAt": "string", "updatedAt": "string" }, "_count": { "recipeLabels": -9007199254740991 } } ] ### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### POST /compat/v2/users/login Source: https://docs.recipesage.com/api Authenticates a user with email and password and returns a session token along with user details. Requires a JSON body with email and password. ```APIDOC ## POST /compat/v2/users/login ### Description Authenticates a user with email and password and returns a session token along with user details. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/users/login ### Parameters #### Request Body - **email** (string) - Required - The user's email address. - **password** (string) - Required - The user's password. ### Request Example { "email": "string", "password": "string" } ### Response #### Success Response (200) - **token** (string) - The session token. - **userId** (string) - The user's unique identifier. - **email** (string) - The user's email address. #### Response Example { "token": "string", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "email": "string" } ### Error Responses - **400** - Invalid input data. - **500** - Internal server error. ``` -------------------------------- ### GET /compat/v2/labels/getLabelByTitle Source: https://docs.recipesage.com/api Retrieves a single label by its title. Requires authorization and a title query parameter. ```APIDOC ## GET /compat/v2/labels/getLabelByTitle ### Description Retrieves a label by its title. ### Method GET ### Endpoint https://api.recipesage.com/compat/v2/labels/getLabelByTitle ### Parameters #### Query Parameters - **title** (string) - Required - The title of the label to retrieve. ### Authorizations Authorization ### Response #### Success Response (200) Returns the label object. #### Response Example { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "createdAt": "string", "updatedAt": "string", "labelGroupId": "b768885f-08b2-4ff7-b6f5-33edda42e319", "labelGroup": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b", "title": "string", "warnWhenNotPresent": true, "createdAt": "string", "updatedAt": "string" }, "_count": { "recipeLabels": -9007199254740991 } } ### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **404** - Not found - **500** - Internal server error ``` -------------------------------- ### POST /compat/v2/images/createRecipeImageFromUrl Source: https://docs.recipesage.com/api Downloads an image from a provided URL and stores it as a recipe image. Requires a valid URL string. Returns the ID and location of the created image. ```APIDOC ## POST /compat/v2/images/createRecipeImageFromUrl ### Description Downloads an image from a provided URL and stores it as a recipe image. Requires a valid URL string. Returns the ID and location of the created image. ### Method POST ### Endpoint https://api.recipesage.com/compat/v2/images/createRecipeImageFromUrl ### Authorizations Authorization ### Parameters #### Request Body - **url** (string, 1-4096 characters) - Required - The URL of the image to download ### Request Example { "url": "string" } ### Response #### Success Response (200) - **id** (string) - The ID of the created image - **location** (string) - The location of the stored image #### Response Example { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "location": "string" } #### Error Responses - **400** - Invalid input data - **401** - Authorization not provided - **403** - Insufficient access - **500** - Internal server error ``` -------------------------------- ### POST /import/job/textfiles Source: https://docs.recipesage.com/api Imports recipes from plain text files. Requires authorization and a file upload, returns a job ID. ```APIDOC ## POST /import/job/textfiles ### Description Import recipes from plain text files. ### Method POST ### Endpoint https://api.recipesage.com/import/job/textfiles ### Authorizations Authorization ### Parameters #### Query Parameters - labels (string) - Optional - Labels to apply to imported recipes. #### Request Body multipart/form-data - file (string ) - Required - The plain text file to import. ### Responses #### 201 Success Response body: application/json { "jobId": "string" } #### 400 Invalid input data #### 401 Authorization not provided #### 403 Insufficient access #### 500 Internal server error ``` -------------------------------- ### Get caller's enabled subscription capabilities Source: https://docs.recipesage.com/api Retrieves the subscription features enabled for the current user. ```json { "highResImages": true, "multipleImages": true, "expandablePreviews": true, "assistantMoreMessages": true, "moreUsageCredits": true } ``` -------------------------------- ### Get Recipe Count Response Source: https://docs.recipesage.com/api The successful response for the getRecipeCount endpoint returns the total count of recipes. ```json { "count": -9007199254740991 } ```