/api/v1/tiro and authenticate with the X-API-KEY header only (see
Authentication). Your Tiro token is set once on the connection page in
the Magic Meal Kits app and resolved server-side, so no per-request token header is
needed.
Every Tiro endpoint requires a Pro license. A Basic key is rejected with
400
you are not a magic meal kits PRO user. A missing/invalid Tiro token returns 401.This documents the MMK-proxy Tiro app (it calls your Magic Meal Kits server). A
separate official-API-direct Tiro app talks to
api.tiro.ooo directly and is not
covered here.Endpoints
Notes
- Auth applies to every route. All
/api/v1/tiroroutes run the Tiro auth middleware, so a Tiro connection must be configured (server-side stored token) —GET /tiro/localesincluded, even though its handler doesn’t use the token. - Numeric IDs.
note_idandwebhook_idare numeric — the handlers parse them as integers, so a note GUID won’t work; use the numericnote_id. - Locale codes use the
xx_YYform, e.g.en_US,ko_KR,ja_JP. - Transcription is async. After an upload, poll
GET /tiro/notes/{note_id}untilis_transcribedis true, then fetch transcripts/summaries. - Threads = folders. Assign a note to threads at create time (
thread_ids) or withadd_thread_idsonPATCH. Removing a note from a thread viaremove_thread_idsis not yet implemented (the API returns501). - Use the MMK “Watch … Events” webhooks — don’t mix them with other Tiro webhooks. Each webhook encodes how to read values from its specific event type, so create the webhook with the Magic Meal Kits Watch … Events trigger and use it on its own. Mixing it with a webhook created elsewhere in Tiro won’t map the event fields correctly.

