/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
| Endpoint | Tier | What it does |
|---|---|---|
POST /tiro/upload | Pro | Upload an audio file (multipart) for transcription |
POST /tiro/upload-from-url | Pro | Transcribe audio from an external URL (e.g. Google Drive) |
POST /tiro/notes | Pro | Create a meeting note |
GET /tiro/notes/{note_id} | Pro | Get note status & metadata |
PUT /tiro/notes/{note_id} | Pro | Replace note settings |
PATCH /tiro/notes/{note_id} | Pro | Partially update a note |
DELETE /tiro/notes/{note_id} | Pro | Delete a note |
GET /tiro/notes/{note_id}/transcripts | Pro | Raw / refined / translated transcripts |
GET /tiro/notes/{note_id}/summaries | Pro | Summaries keyed by template |
GET /tiro/threads | Pro | List threads (folders) |
GET /tiro/locales | Pro | Supported locales |
GET|POST /tiro/webhooks | Pro | List / create webhooks |
PATCH|DELETE /tiro/webhooks/{id} | Pro | Update / delete a webhook |
GET /tiro/webhook-event-types | Pro | Available webhook event types |
GET|POST /tiro/api-keys | Pro | List / create Tiro API keys |
DELETE /tiro/api-keys/{id} | Pro | Delete a Tiro API key |
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.

