Mealie · AsyncAPI Specification

Mealie Events

Version

View Spec View on GitHub CompanyRecipesFoodMeal PlanningShopping ListsSelf-HostedOpen-SourceHouseholdNutritionHome AutomationAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-27'
method: derived
source: openapi/mealie-openapi.json
docs: https://docs.mealie.io/documentation/getting-started/api-usage/
asyncapi_published: false
asyncapi_note: Mealie publishes NO AsyncAPI document. Nothing was fabricated here — this file is a catalog
  of the two real event surfaces the REST contract manages, derived from the OpenAPI document.
surfaces:
- name: Scheduled meal-plan webhooks
  kind: outbound-http-webhook
  trigger: time-based, not event-based
  description: 'A webhook is configured with a scheduledTime (a time of day) and Mealie POSTs that day''s
    meal plan to the configured URL at that time. WebhookType is an enum with exactly ONE member: "mealplan".
    This is a scheduled digest, not a change-notification stream — there is no signature, no delivery-retry
    policy, no event id and no replay in the contract.'
  management_operations:
  - get_all_api_households_webhooks_get
  - create_one_api_households_webhooks_post
  - get_one_api_households_webhooks__item_id__get
  - update_one_api_households_webhooks__item_id__put
  - delete_one_api_households_webhooks__item_id__delete
  - rerun_webhooks_api_households_webhooks_rerun_post
  - test_one_api_households_webhooks__item_id__test_post
  config_schema: CreateWebhook / ReadWebhook — {enabled, name, url, webhookType, scheduledTime, groupId,
    householdId, id}
  payload: The household's meal plan for the day. Recipe `extras` key/value pairs travel with the payload,
    which is the documented mechanism for triggering downstream automation.
  replay: rerun_webhooks_api_households_webhooks_rerun_post re-fires today's scheduled webhooks on demand.
  security:
    signing: false
    shared_secret: false
    note: No HMAC signature header, no shared secret and no mTLS in the contract. A receiver cannot verify
      that a POST came from Mealie.
- name: Event notifications (Apprise)
  kind: outbound-notification
  trigger: event-based
  description: 'Twenty-seven individually toggleable notification triggers per notifier — 25 named domain events across recipes, meal plans, shopping lists, cookbooks, tags, categories, labels, user signup and data import/export/migration, plus a testMessage diagnostic and a webhookTask toggle. Delivery is
    NOT a raw webhook — it is handed to Apprise, which fans out to 80+ notification backends (Discord,
    Slack, Matrix, ntfy, email, Home Assistant and so on) via an appriseUrl. That makes it a notification
    channel rather than an integration event bus: the payload shape is Apprise''s, and a machine consumer
    receives a formatted message, not a typed domain object.'
  management_operations:
  - get_all_api_households_events_notifications_get
  - create_one_api_households_events_notifications_post
  - get_one_api_households_events_notifications__item_id__get
  - update_one_api_households_events_notifications__item_id__put
  - delete_one_api_households_events_notifications__item_id__delete
  - test_notification_api_households_events_notifications__item_id__test_post
  config_schema: GroupEventNotifierCreate {name, appriseUrl} + GroupEventNotifierOptions (26 booleans)
  event_count: 27
  events:
  - name: testMessage
    category: Diagnostics
    default_enabled: false
  - name: webhookTask
    category: Webhook
    default_enabled: false
  - name: recipeCreated
    category: Recipe
    default_enabled: false
  - name: recipeUpdated
    category: Recipe
    default_enabled: false
  - name: recipeDeleted
    category: Recipe
    default_enabled: false
  - name: userSignup
    category: User
    default_enabled: false
  - name: dataMigrations
    category: Data management
    default_enabled: false
  - name: dataExport
    category: Data management
    default_enabled: false
  - name: dataImport
    category: Data management
    default_enabled: false
  - name: mealplanEntryCreated
    category: Meal plan
    default_enabled: false
  - name: mealplanEntryUpdated
    category: Meal plan
    default_enabled: false
  - name: mealplanEntryDeleted
    category: Meal plan
    default_enabled: false
  - name: shoppingListCreated
    category: Shopping list
    default_enabled: false
  - name: shoppingListUpdated
    category: Shopping list
    default_enabled: false
  - name: shoppingListDeleted
    category: Shopping list
    default_enabled: false
  - name: cookbookCreated
    category: Cookbook
    default_enabled: false
  - name: cookbookUpdated
    category: Cookbook
    default_enabled: false
  - name: cookbookDeleted
    category: Cookbook
    default_enabled: false
  - name: tagCreated
    category: Tag
    default_enabled: false
  - name: tagUpdated
    category: Tag
    default_enabled: false
  - name: tagDeleted
    category: Tag
    default_enabled: false
  - name: categoryCreated
    category: Category
    default_enabled: false
  - name: categoryUpdated
    category: Category
    default_enabled: false
  - name: categoryDeleted
    category: Category
    default_enabled: false
  - name: labelCreated
    category: Label
    default_enabled: false
  - name: labelUpdated
    category: Label
    default_enabled: false
  - name: labelDeleted
    category: Label
    default_enabled: false
gaps:
- No AsyncAPI document, so the event catalog is only discoverable by reading a boolean options schema
  inside the REST contract.
- No webhook signature or shared secret — receivers cannot authenticate Mealie.
- No delivery guarantees, retry policy, event ids or dead-letter surface documented.
- The event notifications go to Apprise destinations, not to arbitrary HTTP endpoints with a typed
  JSON body, so they are hard to consume programmatically.
- WebhookType has exactly one member (mealplan) — the webhook surface cannot notify on recipe or shopping-list
  change even though the notification surface can.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/mealie-events"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.