# Auto AI summary
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/auto-ai-summary
/api-reference/notion/openapi.json post /api/v2/notion/database/{database_id}/ai-summary-auto
Auto-discovers AI properties on a database and summarizes them. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. **Pro license required.**
# Create a comment
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/create-a-comment
/api-reference/notion/openapi.json post /api/v1/notion/comments
Adds a comment to a page/discussion (official Notion API). Requires the `X-Notion-Official-Token` header. **Pro license required.**
# Get a user
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/get-a-user
/api-reference/notion/openapi.json get /api/v1/notion/users/{user_id}
Returns a single workspace user (official Notion API). Requires the `X-Notion-Official-Token` header. **Pro license required.**
# List comments
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/list-comments
/api-reference/notion/openapi.json get /api/v1/notion/comments
Lists comments on a page/block (official Notion API). Requires the `X-Notion-Official-Token` header (your official Notion integration token). **Pro license required.**
# List users
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/list-users
/api-reference/notion/openapi.json get /api/v1/notion/users
Lists workspace users (official Notion API). Requires the `X-Notion-Official-Token` header. **Pro license required.**
# Trigger AI summary (v1)
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/trigger-ai-summary-v1
/api-reference/notion/openapi.json post /api/v1/notion/database/{database_id}/ai-summary
Triggers a Notion AI summary for a database. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. **Pro license required.**
# Trigger AI summary (v2)
Source: https://docs.magicmealkits.com/api-reference/ai-comments-&-users/trigger-ai-summary-v2
/api-reference/notion/openapi.json post /api/v2/notion/database/{database_id}/ai-summary
Triggers an AI summary for a database via the v2 path. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. **Pro license required.**
# Get AI task status
Source: https://docs.magicmealkits.com/api-reference/ai/get-ai-task-status
/api-reference/plaud/openapi.json get /plaud/ai/status
Returns the AI (transcribe/summarize) task status for the given files. `file_ids` is a required comma-separated query parameter. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Get transcription quota flags
Source: https://docs.magicmealkits.com/api-reference/ai/get-transcription-quota-flags
/api-reference/plaud/openapi.json get /plaud/user/transcription-quota
Returns the two booleans driving the web client's out-of-quota UI: `is_starter` and `usage_reached`. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Get transcription seconds
Source: https://docs.magicmealkits.com/api-reference/ai/get-transcription-seconds
/api-reference/plaud/openapi.json get /plaud/ai/trans-status
Returns the account's total and remaining transcription seconds. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# List summary models
Source: https://docs.magicmealkits.com/api-reference/ai/list-summary-models
/api-reference/plaud/openapi.json get /plaud/summary/models
Lists the LLM models Plaud offers for summary generation. `model_name` is the identifier you pass as `llm` to the transsumm endpoints. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Start transcribe + summarize
Source: https://docs.magicmealkits.com/api-reference/ai/start-transcribe-+-summarize
/api-reference/plaud/openapi.json post /plaud/files/{id}/transsumm
Triggers Plaud's automatic transcript + summary pipeline for a recording without blocking, returning the immediate upstream response (the task runs async). All body fields are optional (zero values map to Plaud defaults: auto language, auto LLM, diarization on). When `check_quota` is `true`, insufficient transcription seconds return `402`. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Transcribe + summarize (wait)
Source: https://docs.magicmealkits.com/api-reference/ai/transcribe-+-summarize-wait
/api-reference/plaud/openapi.json post /plaud/files/{id}/transsumm/wait
Triggers transcribe + summarize, polls until the task completes, then returns the composed file bundle (transcript + summary + optional audio URL) — the same shape as `GET /files/{id}/fetch`. Pre-flight quota check is ON by default here (`{"check_quota": false}` to skip). Returns `402` on insufficient quota and `504` if the task does not finish within the timeout. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Bulk check for duplicates
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-check-for-duplicates
/api-reference/notion/openapi.json post /api/v1/notion/bulk-duplicate-check
Read-only. Checks which input records already exist (matched by `lookup_properties`) and returns ready-to-pipe `unique_records` / `duplicate_records` arrays. **Pro license required.**
# Bulk delete (trash) pages
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-delete-trash-pages
/api-reference/notion/openapi.json post /api/v1/notion/bulk-delete
Moves up to 100 pages to trash by `page_ids`. Requires a **Basic** license.
# Bulk insert records
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-insert-records
/api-reference/notion/openapi.json post /api/v1/notion/bulk-insert
Creates up to 100 pages in a Notion database/data source from simple property maps. Identify the target with `data_source_id` (multi-data-source DBs), `notion_id` (auto-detect), or `database_id`. Requires a **Basic** license.
# Bulk page update (raw)
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-page-update-raw
/api-reference/notion/openapi.json post /api/v1/notion/bulk-page-update
Batch PATCH page parameters directly (erase content, icon, cover, template, in_trash, archived, is_locked, properties) without schema conversion — properties must be in Notion API format. **Pro license required.**
# Bulk update records
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-update-records
/api-reference/notion/openapi.json post /api/v1/notion/bulk-update
Updates up to 100 pages. Each record must include `page_id` and the properties to change. Requires a **Basic** license.
# Bulk upsert records
Source: https://docs.magicmealkits.com/api-reference/bulk-operations/bulk-upsert-records
/api-reference/notion/openapi.json post /api/v1/notion/bulk-upsert
Insert-or-update by matching `lookup_properties` (like SQL upsert). Requires a **Basic** license.
# Get AI summary
Source: https://docs.magicmealkits.com/api-reference/content/get-ai-summary
/api-reference/plaud/openapi.json get /plaud/files/{id}/summary
Returns the AI-generated Markdown summary. Relative image paths are rewritten to pre-signed S3 URLs (~15-min TTL). **Pro license required.**
# Get audio URL
Source: https://docs.magicmealkits.com/api-reference/content/get-audio-url
/api-reference/plaud/openapi.json get /plaud/files/{id}/audio-url
Returns a pre-signed S3 URL for the original audio file. **Pro license required.**
# Get note tab content
Source: https://docs.magicmealkits.com/api-reference/content/get-note-tab-content
/api-reference/plaud/openapi.json get /plaud/files/{id}/tabs/content
Fetches the content of one note tab, selected by exactly one of `tab_id` or `template`. **Pro license required.**
# Get transcript
Source: https://docs.magicmealkits.com/api-reference/content/get-transcript
/api-reference/plaud/openapi.json get /plaud/files/{id}/transcript
Returns the decoded transcript with speaker labels and millisecond timestamps. Pass `format` to also get a rendered `text` string. **Pro license required.**
# List note tabs
Source: https://docs.magicmealkits.com/api-reference/content/list-note-tabs
/api-reference/plaud/openapi.json get /plaud/files/{id}/tabs
Lists the named AI note tabs for a recording (Summary, Key Points, Highlights, template outputs). **Pro license required.**
# Apply a template to a page
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/apply-a-template-to-a-page
/api-reference/notion/openapi.json post /api/v2/notion/page/{page_id}/apply-template
Applies a data-source template to an existing page. Requires a **Basic** license.
# Get a page
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/get-a-page
/api-reference/notion/openapi.json get /api/v2/notion/page/{page_id}
Fetches a single page/database item with simplified properties. Requires a **Basic** license.
# Get simplified schema
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/get-simplified-schema
/api-reference/notion/openapi.json get /api/v2/notion/database/{database_id}/simplified-schema
Returns a flattened, easy-to-read schema for a database/data source. Requires a **Basic** license.
# List data sources
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/list-data-sources
/api-reference/notion/openapi.json get /api/v2/notion/database/{database_id}/data-sources
Lists the data sources attached to a multi-data-source database. Requires a **Basic** license.
# Query a data source
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/query-a-data-source
/api-reference/notion/openapi.json post /api/v2/notion/data-source/{data_source_id}/query
Same as the database query but targets a specific data source ID directly. Requires a **Basic** license.
# Query a database
Source: https://docs.magicmealkits.com/api-reference/data-sources-v2/query-a-database
/api-reference/notion/openapi.json post /api/v2/notion/database/{database_id}/query
Queries pages with simple `filters` (auto-converted to Notion filter syntax), sorts, and pagination. Returns flattened `simple_properties` alongside raw properties. Requires a **Basic** license.
# Get database schema
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/get-database-schema
/api-reference/notion/openapi.json get /api/v1/notion/database/{database_id}/schema
Returns the property schema (names, types, options) for a database. For multi-data-source databases, properties live on the data source — see the v2 endpoints. Requires a **Basic** license.
# Get duplicate-check schema
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/get-duplicate-check-schema
/api-reference/notion/openapi.json get /api/v1/notion/database/{database_id}/duplicate-check-schema
Schema describing the lookup fields accepted by bulk-duplicate-check. Requires a **Basic** license.
# Get property options
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/get-property-options
/api-reference/notion/openapi.json get /api/v1/notion/database/property-options
Returns the available option values for a select/multi-select/status property. Requires a **Basic** license.
# Get update schema
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/get-update-schema
/api-reference/notion/openapi.json get /api/v1/notion/database/{database_id}/update-schema
Schema variant describing the fields accepted by bulk-update for this database. Requires a **Basic** license.
# Get upsert schema
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/get-upsert-schema
/api-reference/notion/openapi.json get /api/v1/notion/database/{database_id}/upsert-schema
Schema variant describing the fields accepted by bulk-upsert (including lookup properties). Requires a **Basic** license.
# List database items
Source: https://docs.magicmealkits.com/api-reference/database-&-schema/list-database-items
/api-reference/notion/openapi.json get /api/v1/notion/listDatabaseItems
Lists items (pages) in a database with simplified properties. Requires a **Basic** license.
# List devices
Source: https://docs.magicmealkits.com/api-reference/devices/list-devices
/api-reference/plaud/openapi.json get /plaud/devices
Lists the Plaud hardware devices bound to the account (Note, Note Pro, etc.). **Pro license required.**
# Acknowledge device pull
Source: https://docs.magicmealkits.com/api-reference/files/acknowledge-device-pull
/api-reference/plaud/openapi.json post /plaud/files/{id}/ack-pull
Acknowledges that a recording was pulled from the device — decrements Plaud's `wait_pull` counter so the file stops surfacing as unread. Empty body. Returns `204 No Content` on success. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Bundle multiple recordings
Source: https://docs.magicmealkits.com/api-reference/files/bundle-multiple-recordings
/api-reference/plaud/openapi.json get /plaud/sync
Backend-for-frontend aggregator: lists recordings and composes each one's requested attachments (transcript/summary/share/audio) in a single call. Backs `mmk plaud file list --with transcripts,summaries`. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Export a page
Source: https://docs.magicmealkits.com/api-reference/files/export-a-page
/api-reference/notion/openapi.json post /api/v1/notion/download
Generates an export/download URL for a Notion page. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Get recording bundle
Source: https://docs.magicmealkits.com/api-reference/files/get-recording-bundle
/api-reference/plaud/openapi.json get /plaud/files/{id}/fetch
Backend-for-frontend: returns the file plus any combination of transcript, summary, share state, and audio URL in a single call. **Pro license required.**
# Get recording metadata
Source: https://docs.magicmealkits.com/api-reference/files/get-recording-metadata
/api-reference/plaud/openapi.json get /plaud/files/{id}
Returns metadata for a single recording (no transcript/summary fetch). **Pro license required.**
# Get share states
Source: https://docs.magicmealkits.com/api-reference/files/get-share-states
/api-reference/plaud/openapi.json get /plaud/files/{id}/share
Returns the private and public share state for a recording. Each side is a loose upstream envelope (shape varies depending on whether a share exists). **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# List recordings
Source: https://docs.magicmealkits.com/api-reference/files/list-recordings
/api-reference/plaud/openapi.json get /plaud/files
Lists your Plaud recordings, newest first by default. **Pro license required.**
# Rename a recording
Source: https://docs.magicmealkits.com/api-reference/files/rename-a-recording
/api-reference/plaud/openapi.json patch /plaud/files/{id}
Renames a recording. Returns `204 No Content` on success. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Trash recordings
Source: https://docs.magicmealkits.com/api-reference/files/trash-recordings
/api-reference/plaud/openapi.json post /plaud/files/trash
Soft-deletes one or more recordings (moves them to trash with `is_trash=true`). This is recoverable — it is NOT a permanent delete. An empty `file_ids` list is rejected with `400`. Returns `204 No Content` on success. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Upload a file
Source: https://docs.magicmealkits.com/api-reference/files/upload-a-file
/api-reference/notion/openapi.json post /api/v1/notion/file-upload
Uploads an external file and attaches it to a Notion page/database property. **Pro license required.**
# Upload a file (direct)
Source: https://docs.magicmealkits.com/api-reference/files/upload-a-file-direct
/api-reference/notion/openapi.json post /api/v1/notion/file-upload-direct
Direct file upload variant. Requires a **Basic** license.
# Assign or clear a tag
Source: https://docs.magicmealkits.com/api-reference/folders/assign-or-clear-a-tag
/api-reference/plaud/openapi.json post /plaud/files/update-tags
Assigns a tag to (or clears it from) one or more recordings. Pass an empty `filetag_id` to clear the tag from every file in `file_id_list`. An empty `file_id_list` is rejected with `400`. Returns `204 No Content` on success. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Create a tag
Source: https://docs.magicmealkits.com/api-reference/folders/create-a-tag
/api-reference/plaud/openapi.json post /plaud/tags
Creates a new tag (folder). The response echoes the upstream create envelope, which includes the new tag id — pass it to `POST /files/update-tags` to assign it. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# List tags
Source: https://docs.magicmealkits.com/api-reference/folders/list-tags
/api-reference/plaud/openapi.json get /plaud/tags
Lists the account's tags (used as folders). **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Organize into a folder
Source: https://docs.magicmealkits.com/api-reference/folders/organize-into-a-folder
/api-reference/plaud/openapi.json post /plaud/files/organize
One-call BFF: resolve a tag by name (creating it when missing), then assign it to every listed file. The verb users and AI agents actually want — 'put these recordings into this folder'. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Notion
Source: https://docs.magicmealkits.com/api-reference/notion/overview
Bulk Notion operations, database queries, markdown, publishing, workspace management, files, and transcription.
The Notion group powers the **Notion Plus (Magic Meal Kits)** Make.com app. It spans the
official Notion API (bulk operations, data-source queries, comments, users) and the
unofficial workspace API (publish, teams, invites, AI summaries).
## Authentication
Notion calls need **two** credentials (see [Authentication](/authentication)):
* `X-API-KEY` — your MMK deployment key.
* `X-Notion-Token` — your Notion integration / internal token. **The caller supplies
this** (it is not stored server-side, unlike Plaud/Tiro).
Unofficial-API operations (publish, teams, invites, config, AI summary, transcription,
download) additionally need `X-Notion-Space-ID` and `X-Notion-User-ID`. These map to the
Notion Token / Space ID / User ID fields on the Make connection.
Most Notion endpoints are **Basic**. A few are **Pro** (`bulk-duplicate-check`,
`bulk-page-update`, file-upload, AI summaries, comments, users, native markdown update).
A Basic key on a Pro route gets `400` `you are not a magic meal kits PRO user`.
## Endpoint groups
| Group | Examples | Tier |
| ------------------------ | ------------------------------------------------------------------------------------------ | ------- |
| **Bulk operations** | insert / update / upsert / delete | Basic |
| | duplicate-check, page-update (raw) | **Pro** |
| **Database & schema** | schema, update/upsert/duplicate-check schema, property options, list items | Basic |
| **Pages & content** | markdown (blocks/native), create page from markdown | Basic |
| | native page markdown update (v3) | **Pro** |
| **Data sources (v2)** | list data sources, query database/data source, get page, apply template, simplified schema | Basic |
| **Publishing** | publish / unpublish, page & database-item config | Basic |
| **Workspace & teams** | teams, team/workspace invite & remove, guest invite/revoke, subscription | Basic |
| **Files** | file-upload-direct, export/download | Basic |
| | file-upload | **Pro** |
| **Transcription** (v2) | page transcriptions, get transcription by block | Basic |
| **AI, comments & users** | AI summary (v1/v2/auto), comments, users | **Pro** |
The official-API **comments** and **users** endpoints additionally require an
`X-Notion-Official-Token` header (your official Notion integration token).
## Notes
* **Database vs data source.** Multi-data-source databases return empty properties from
the database ID — pass `data_source_id` (or `notion_id` to auto-detect) so schema and
writes resolve correctly. Bulk requests accept all three identifiers (priority:
`data_source_id` > `notion_id` > `database_id`).
* **Bulk limits.** Up to 100 records/page IDs per call; tune throughput with the optional
`config` block. Rate limited to \~3 req/s (matching Notion's API).
* **Query results** include both raw `properties` and flattened `simple_properties`, plus
`warnings` for invalid filters — check them when a filter silently matches nothing.
* **Markdown engines.** `engine: "blocks"` (default) uses the in-process parser;
`engine: "native"` routes to Notion's native markdown API for in-place edits.
* **Page permission is required (most common `401`).** Issuing the integration token is not
enough — the integration must be **granted access to the page/database** you operate on
(add it via the page's **Connections** menu, at the top-level page/DB). A token without that
access returns `401` / permission errors on every call. See
[Fix Notion connection & permission errors](/operations/notion-connection).
* **Rich Text 2,000-char block limit.** Notion caps each rich-text block at 2,000 characters,
so long markdown is split across multiple blocks on conversion. `raw` and `refined` outputs
can differ slightly in length/wording — choose the one that fits your use case.
Use the interactive playground on each endpoint page to try a request with your own
deployment host, API key, and Notion token.
# API Reference
Source: https://docs.magicmealkits.com/api-reference/overview
Base URL, conventions, and the endpoint groups documented here.
## Base URL
```
https://magic-meal-kits-xxxxx.run.app/api/v1
```
Replace the host with your deployment's Cloud Run URL. Some features live under
`/api/v2/notion` and `/api/v3/notion`.
## Conventions
* **Auth:** `X-API-KEY` header on every request (see [Authentication](/authentication)).
* **Errors:** `{ "success": false, "error": "..." }` with standard HTTP status codes.
* **Compatibility:** shipped request/response shapes are kept backward compatible —
new behavior is opt-in via a query param or flag. Existing callers keep their wire
contract.
## Documented groups
**Skeleton page.** Per-group reference pages and the interactive OpenAPI playground
land in follow-up PRs. The groupings below are the planned public surface — adjust the
public/private split before authoring.
### Core (planned: documented + interactive playground)
The broadly useful, stable endpoints most automations are built on:
* **Documents & media** — PDF, YouTube, Transcription, Video
* **Content & utilities** — Notion (bulk ops, AI summary, data sources, official API),
Slack (markdown → blocks), JSON extract, ISO 8601, Parser, JavaScript execution
* **Social & messaging** — Threads, Plaud, Tiro
### Vertical / regional integrations (planned: documented)
Narrower-audience integrations, grouped separately:
* Naver Commerce, Naver Blog, Coupang, Imweb, Skool, Solapi, Kakao, Paymint, Remember
### Internal (not published)
Operational and transport endpoints intentionally kept out of the public reference —
OAuth2 token internals, the MCP JSON-RPC transport (covered in the [MCP](/mcp/overview)
tab instead), the Make.com RPC passthrough, Cloud Tasks plumbing, and
license/activation endpoints.
# Append/convert markdown
Source: https://docs.magicmealkits.com/api-reference/pages-&-content/appendconvert-markdown
/api-reference/notion/openapi.json post /api/v1/notion/markdown
Converts markdown to Notion blocks and appends to a page. `engine` selects the legacy in-process parser (`blocks`, default) or Notion's native enhanced-markdown API (`native`). Requires a **Basic** license.
# Create page from markdown
Source: https://docs.magicmealkits.com/api-reference/pages-&-content/create-page-from-markdown
/api-reference/notion/openapi.json post /api/v1/notion/page/create-markdown
Creates a new page (under a parent page or database) with content built from markdown. Requires a **Basic** license.
# Update page markdown (native)
Source: https://docs.magicmealkits.com/api-reference/pages-&-content/update-page-markdown-native
/api-reference/notion/openapi.json patch /api/v3/notion/page/{page_id}/markdown
In-place edit of a page's content via Notion's native markdown API (insert/replace/update content). **Pro license required.**
# Plaud
Source: https://docs.magicmealkits.com/api-reference/plaud/overview
Read your Plaud voice-recorder library — recordings, transcripts, AI summaries, note tabs, devices, and search.
The Plaud group powers the **Plaud (Magic Meal Kits)** Make.com app. It is a facade over
Plaud's web API — mostly reads (recordings, transcripts, summaries, search) plus a set of
writes (rename, trash, tag/organize, and auto transcribe + summarize). Your server holds
your Plaud credentials in Secret Manager, so callers only ever send the MMK `X-API-KEY`
header (see [Authentication](/authentication)).
**Every Plaud endpoint requires a Pro license.** A Basic key is rejected with `400`
and `you are not a magic meal kits PRO user`.
## Endpoints
Every endpoint below is **Pro**-only.
### User & system
| Endpoint | What it does |
| ---------------------------------- | --------------------------------------------------------- |
| `GET /plaud/user/me` | Profile, membership tier, remaining transcription seconds |
| `GET /plaud/user/feature-access` | Feature-flag payload (loose upstream envelope) |
| `GET /plaud/doctor` | Live connectivity health check (`ok`, per-check status) |
| `GET /plaud/membership/status` | Membership / free-trial state |
| `GET /plaud/config` | Client config (`config/init`) |
| `GET /plaud/combine/running-tasks` | In-flight combine (merge-audio) tasks |
### Files
| Endpoint | What it does |
| ------------------------------------- | --------------------------------------------------------------- |
| `GET /plaud/files` | List recordings (paginated, sortable) |
| `GET /plaud/files/{id}` | Recording metadata only |
| `PATCH /plaud/files/{id}` | Rename a recording → `204` |
| `GET /plaud/files/{id}/fetch` | Bundle: file + transcript + summary + share + audio in one call |
| `GET /plaud/files/{id}/share` | Private/public share states |
| `POST /plaud/files/{id}/ack-pull` | Acknowledge device pull → `204` |
| `POST /plaud/files/trash` | Soft-delete (trash) recordings, recoverable → `204` |
| `GET /plaud/sync` | Aggregate multiple recordings + attachments in one call |
| `GET /plaud/files/webhook-candidates` | Poll ready-to-ship recordings (new-recording trigger) |
### Content
| Endpoint | What it does |
| ------------------------------------ | --------------------------------------------------------- |
| `GET /plaud/files/{id}/transcript` | Transcript (optionally rendered to text/markdown/srt/vtt) |
| `GET /plaud/files/{id}/summary` | AI Markdown summary (images as pre-signed URLs) |
| `GET /plaud/files/{id}/tabs` | List named note tabs (Summary, Key Points, …) |
| `GET /plaud/files/{id}/tabs/content` | One tab's content, by `tab_id` or `template` |
| `GET /plaud/files/{id}/audio-url` | Pre-signed S3 URL for the original audio |
### Folders (tags)
| Endpoint | What it does |
| ------------------------------- | ------------------------------------------------------- |
| `GET /plaud/tags` | List tags (folders) |
| `POST /plaud/tags` | Create a tag → returns the new tag id |
| `POST /plaud/files/update-tags` | Assign a tag (or clear with empty `filetag_id`) → `204` |
| `POST /plaud/files/organize` | One-call resolve-or-create tag + assign |
### AI (transcribe + summarize)
| Endpoint | What it does |
| --------------------------------------- | --------------------------------------------------------- |
| `POST /plaud/files/{id}/transsumm` | Start transcribe + summarize (async) — `402` on low quota |
| `POST /plaud/files/{id}/transsumm/wait` | Trigger, poll to completion, return the bundle |
| `GET /plaud/ai/status` | AI task status for `file_ids` (comma-separated) |
| `GET /plaud/ai/trans-status` | Total / remaining transcription seconds |
| `GET /plaud/user/transcription-quota` | `is_starter` / `usage_reached` flags |
| `GET /plaud/summary/models` | LLM models available for summaries |
### Search
| Endpoint | What it does |
| --------------------------- | ----------------------------------- |
| `GET /plaud/search` | Full-text search across transcripts |
| `GET /plaud/search/history` | Recent search queries |
### Devices & webhooks
| Endpoint | What it does |
| --------------------------------- | -------------------------------------------------- |
| `GET /plaud/devices` | Bound Plaud hardware |
| `POST /plaud/files/{id}/dispatch` | POST a recording's payload to a caller webhook URL |
## Triggers
The **Watch New Note** instant trigger in the Make app is delivered by your server's
webhook orchestrator — it is not an endpoint you call. The **Watch New Recordings**
polling trigger reads `GET /plaud/files/webhook-candidates`, which returns only
recordings that are ready (not trashed, transcribed, and summarized).
## Notes
* **Readiness.** Use the `is_trans` / `is_summary` flags (on file objects) or the
`409` not-ready response to skip recordings whose transcript/summary is still
generating.
* **Pre-signed URLs expire.** Audio URLs and summary image URLs are short-lived S3 links
(\~15 minutes) — fetch and use them promptly.
* **One bundle call.** Prefer `/files/{id}/fetch?include=transcript,summary` over three
separate round trips when you need multiple attachments for the same recording.
* **Reconnect on `401`.** A `401` means your stored Plaud credentials were rejected
(revoked/expired) — reconnect your Plaud account on the Magic Meal Kits app.
Use the interactive playground on each endpoint page to try a request with your own
deployment host and API key.
# Publish a page
Source: https://docs.magicmealkits.com/api-reference/publishing/publish-a-page
/api-reference/notion/openapi.json post /api/v1/notion/publish
Makes a Notion page publicly accessible and returns the public URL. Uses the unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Set database item configuration
Source: https://docs.magicmealkits.com/api-reference/publishing/set-database-item-configuration
/api-reference/notion/openapi.json post /api/v1/notion/database-item/config
Updates the visual configuration of a database item block. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Set page block configuration
Source: https://docs.magicmealkits.com/api-reference/publishing/set-page-block-configuration
/api-reference/notion/openapi.json post /api/v1/notion/page/config
Updates the visual configuration of a page block (width, text formatting, table of contents, etc.). Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Unpublish a page
Source: https://docs.magicmealkits.com/api-reference/publishing/unpublish-a-page
/api-reference/notion/openapi.json post /api/v1/notion/unpublish
Removes public access from a previously published page. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Get search history
Source: https://docs.magicmealkits.com/api-reference/search/get-search-history
/api-reference/plaud/openapi.json get /plaud/search/history
Returns recent search queries with counts. **Pro license required.**
# Search transcripts
Source: https://docs.magicmealkits.com/api-reference/search/search-transcripts
/api-reference/plaud/openapi.json get /plaud/search
Full-text search across all your transcripts. Returns matching files with hit context. **Pro license required.**
# Get client config
Source: https://docs.magicmealkits.com/api-reference/system/get-client-config
/api-reference/plaud/openapi.json get /plaud/config
Returns Plaud's `config/init` payload (feature toggles and client configuration) as a loose upstream envelope. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Get membership status
Source: https://docs.magicmealkits.com/api-reference/system/get-membership-status
/api-reference/plaud/openapi.json get /plaud/membership/status
Returns the account's free-trial / membership state as a loose upstream envelope. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Health check
Source: https://docs.magicmealkits.com/api-reference/system/health-check
/api-reference/plaud/openapi.json get /plaud/doctor
Runs a live connectivity probe against Plaud (user profile + device list in parallel) and reports whether the stored credentials work. Returns `200` when both checks pass, `401` when Plaud rejected the token (reconnect), `502` on other upstream failures. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# List running combine tasks
Source: https://docs.magicmealkits.com/api-reference/system/list-running-combine-tasks
/api-reference/plaud/openapi.json get /plaud/combine/running-tasks
Returns the currently in-flight combine (merge-audio) tasks. The web app polls this to drive a progress indicator; the list is usually empty. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Threads
Source: https://docs.magicmealkits.com/api-reference/threads/overview
Read your Meta Threads posts, insights, replies, and conversations — and sync them into Notion for search and analysis.
The Threads group powers the **Threads automation (beta)** Make.com app. It reads your
Meta Threads posts, engagement insights, replies, and full conversation trees so you can
store and search them in a Notion database. Callers authenticate with the MMK
`X-API-KEY` header (or a Bearer token). The Threads account itself is connected once
from the **Magic Meal Kits app's connection page** — the credential is stored
**server-side** on your deployment, so callers never pass the Threads token directly
(see [Authentication](/authentication)).
**Closed beta — approved accounts only.** The Threads automation is currently an
invite-only beta. Only accounts that **applied and were approved** can use it. Apply on
the [Threads beta application page](https://magicmealkits.notion.site/mmk-threads), and
the team will send account-activation instructions after review. Requests from
non-approved accounts will not be provisioned.
After approval, a **tester invite** is sent to your Threads account. You must **accept
it in the Threads app** (profile → menu ☰ → **Settings → Account → Website
permissions → Invites** → accept **Magic Meal Kits**) *before* connecting the account —
otherwise the connection fails with
`The user has not accepted the invite to test the app` (error `1349245`).
See the [FAQ](/faq) for the step-by-step walkthrough.
**The data endpoints require a Pro license.** A Basic key is rejected with `400`
and `you are not a magic meal kits PRO user`. The `health` endpoint only requires a
valid API key or Bearer token.
## Endpoints
| Endpoint | Tier | What it does |
| ---------------------------------------------- | ------- | ----------------------------------------------------------------- |
| `GET /threads/health` | API key | Liveness check for the Threads routes |
| `GET /threads/user/threads` | **Pro** | Paginated list of a user's posts (optional per-post insights) |
| `GET /threads/user/insights` | **Pro** | Profile insights — views, likes, follower demographics, … |
| `GET /threads/media/replies` | **Pro** | Direct replies to a single post |
| `GET /threads/media/conversation` | **Pro** | Full conversation tree for a single post |
| `POST /threads/media/conversations` | **Pro** | Conversations for multiple posts in one call |
| `GET /threads/media/conversation/emails` | **Pro** | Email addresses surfaced in a post's conversation |
| `GET /threads/user/threads-with-conversations` | **Pro** | Posts from the last N months with all their conversations |
| `GET /threads/analytics/top-engaged-users` | **Pro** | Top engaged users with reply / participation / engagement metrics |
All paths are under the `/api/v1` prefix (e.g. `GET /api/v1/threads/user/threads`).
## Notes
* **Connect once from the app.** Link your Threads account on the
[connection page](https://make.magicmealkits.com/connections) in the Magic Meal Kits
app; the credential is stored server-side, so you call the data endpoints with just
your MMK API key. If the stored token expires, reconnect there and redeploy your MCP
server with the latest version.
* **Page in batches.** The Threads API caps a page at 100 items. When syncing to Notion,
keep batches under 100 records (enable the date-range advanced option) to avoid
performance issues.
* **Insights are optional and slower.** `include_insights=true` on `/user/threads`
fetches per-post metrics with bounded concurrency (`max_concurrency`) — expect longer
response times for large accounts.
Server not responding, Google Cloud billing, or stopping/reinstalling the service?
See [Troubleshooting](/troubleshooting) — those topics apply to every deployment,
not just Threads.
# Tiro
Source: https://docs.magicmealkits.com/api-reference/tiro/overview
Upload audio and manage Tiro meeting notes — transcripts, summaries, threads, webhooks, and API keys.
The Tiro group powers the **티로 Tiro (Magic Meal Kits)** Make.com app. Upload audio for
AI transcription, then read transcripts and summaries, organize notes into threads,
subscribe to events via webhooks, and manage Tiro API keys. All routes are under
`/api/v1/tiro` and authenticate with the `X-API-KEY` header only (see
[Authentication](/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/tiro` routes run the Tiro auth middleware,
so a Tiro connection must be configured (server-side stored token) — `GET /tiro/locales`
included, even though its handler doesn't use the token.
* **Numeric IDs.** `note_id` and `webhook_id` are numeric — the handlers parse them as
integers, so a note GUID won't work; use the numeric `note_id`.
* **Locale codes** use the `xx_YY` form, e.g. `en_US`, `ko_KR`, `ja_JP`.
* **Transcription is async.** After an upload, poll `GET /tiro/notes/{note_id}` until
`is_transcribed` is true, then fetch transcripts/summaries.
* **Threads = folders.** Assign a note to threads at create time (`thread_ids`) or with
`add_thread_ids` on `PATCH`. Removing a note from a thread via `remove_thread_ids` is
not yet implemented (the API returns `501`).
* **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.
Use the interactive playground on each endpoint page to try a request with your own
deployment host, API key, and Tiro API key.
# Get a transcription
Source: https://docs.magicmealkits.com/api-reference/transcription/get-a-transcription
/api-reference/notion/openapi.json get /api/v2/notion/transcription/{block_id}
Returns the transcription for a single audio block. Also requires `X-Notion-User-ID`. Requires a **Basic** license.
# List page transcriptions
Source: https://docs.magicmealkits.com/api-reference/transcription/list-page-transcriptions
/api-reference/notion/openapi.json get /api/v2/notion/page/{page_id}/transcriptions
Lists audio-block transcriptions found on a page. Also requires `X-Notion-User-ID`. Requires a **Basic** license.
# Upload audio
Source: https://docs.magicmealkits.com/api-reference/upload/upload-audio
/api-reference/tiro/openapi.json post /tiro/upload
Uploads an audio file (multipart/form-data) and starts transcription. **Pro license required.**
# Upload audio from URL
Source: https://docs.magicmealkits.com/api-reference/upload/upload-audio-from-url
/api-reference/tiro/openapi.json post /tiro/upload-from-url
Uploads audio from an external URL (e.g. Google Drive) — Tiro downloads it directly. **Pro license required.**
# Get current user
Source: https://docs.magicmealkits.com/api-reference/user/get-current-user
/api-reference/plaud/openapi.json get /plaud/user/me
Returns the current Plaud user's profile, membership tier, and remaining transcription seconds. **Pro license required.**
# Get feature access
Source: https://docs.magicmealkits.com/api-reference/user/get-feature-access
/api-reference/plaud/openapi.json get /plaud/user/feature-access
Returns the account's feature-flag payload as a loose upstream envelope (the flag set changes over time, so it is passed through verbatim). **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Dispatch a recording to a webhook
Source: https://docs.magicmealkits.com/api-reference/webhooks/dispatch-a-recording-to-a-webhook
/api-reference/plaud/openapi.json post /plaud/files/{id}/dispatch
Fetches the recording (with transcript + summary), flattens it into a webhook payload, and POSTs it to the caller-supplied `webhook_url`. Stateless — deduplication is the orchestrator's job. A `200` with `success=false` means the dispatch ran end-to-end but your webhook URL returned a non-2xx status. **Pro license required.** A Basic key is rejected with `400` and `you are not a magic meal kits PRO user`.
# Poll new-recording candidates
Source: https://docs.magicmealkits.com/api-reference/webhooks/poll-new-recording-candidates
/api-reference/plaud/openapi.json get /plaud/files/webhook-candidates
Returns the most-recently-edited recordings that are READY to ship (not trashed, transcribed, and summarized), newest first. This is the polling source behind the **Watch New Recordings** Make trigger. **Pro license required.**
# Get workspace subscription
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/get-workspace-subscription
/api-reference/notion/openapi.json get /api/v1/notion/subscription
Returns subscription/plan info for the workspace. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Invite guest to a page
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/invite-guest-to-a-page
/api-reference/notion/openapi.json post /api/v1/notion/invite
Invites a guest to a specific page with a permission level. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Invite user to team
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/invite-user-to-team
/api-reference/notion/openapi.json post /api/v1/notion/team-invite
Adds a user to a team by email. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Invite user to workspace
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/invite-user-to-workspace
/api-reference/notion/openapi.json post /api/v1/notion/workspace-invite
Invites a user to the workspace with a role. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# List teams
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/list-teams
/api-reference/notion/openapi.json post /api/v1/notion/teams
Lists workspace teams (optionally filtered by `teamTypes`). Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Remove user from team
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/remove-user-from-team
/api-reference/notion/openapi.json post /api/v1/notion/team-remove
Removes a user from a team by email. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Remove user from workspace
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/remove-user-from-workspace
/api-reference/notion/openapi.json post /api/v1/notion/workspace-remove
Removes a user from the workspace by email. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Revoke a guest invitation
Source: https://docs.magicmealkits.com/api-reference/workspace-&-teams/revoke-a-guest-invitation
/api-reference/notion/openapi.json post /api/v1/notion/revoke
Revokes a guest's access to a page. Unofficial API — also requires `X-Notion-Space-ID` and `X-Notion-User-ID`. Requires a **Basic** license.
# Authentication
Source: https://docs.magicmealkits.com/authentication
API key authentication and license tiers for the Magic Meal Kits API.
## API key
Every API request authenticates with the API key set on your deployment
(`MMK_API_KEY`). Send it in the `X-API-KEY` header:
```bash theme={null}
curl -X POST "https://magic-meal-kits-xxxxx.run.app/api/v1/youtube/transcript/v2" \
-H "X-API-KEY: your-api-key" \
-H "Content-Type: application/json" \
-d '{"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "format": "json"}'
```
The MCP endpoint also accepts `Authorization: Bearer your-api-key` for clients that
prefer the bearer scheme (e.g. Claude.ai). See [MCP Overview](/mcp/overview).
## Where to get your API URL and key
Your deployment's **API URL** (your Cloud Run host) and **API key** are shown on the
**app status / connection page in the Magic Meal Kits app** — not configured by hand.
Open your deployment there, copy the URL and key, and use them wherever you call the API.
In the Make.com custom apps, you register these once on the connection: enter the
**Magic Meal Kits service URL** and **API key**, and every module reuses them. Connection
setup and management is centralized at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections).
For most products (Plaud, Tiro, Threads) the per-service credentials are stored
**server-side** on your deployment — the MMK API key is the only secret the caller
handles. Connect or reconnect those accounts (including the Threads OAuth account) from
the Magic Meal Kits app, not through these endpoints. If a stored token expires,
reconnect from the app and redeploy your server with the latest version.
**Notion is the exception:** the caller supplies the Notion token per request via the
`X-Notion-Token` header (plus `X-Notion-Space-ID` / `X-Notion-User-ID` for unofficial
operations). See the [Notion overview](/api-reference/notion/overview).
## License tiers
Endpoints are gated by your license tier:
| Tier | Applies to |
| --------- | -------------------------------------------------------------------- |
| **Basic** | Core utility endpoints (group-level default on most routes) |
| **Pro** | Pro-only features — added per-route; the default for newer endpoints |
A Pro-gated route called with a Basic key returns a license error. Most Pro gates
(`license.RequirePro()` — **Plaud**, **Tiro**, and **Notion**'s Pro-only operations)
reject with **`400`** and the message `you are not a magic meal kits PRO user`. The
**YouTube** `metadata` Pro gate is the exception — it returns **`403`** with
`Pro account required`. Per group: YouTube transcript is Basic (metadata is Pro); Plaud
and Tiro are Pro-only; Notion is Basic with selected Pro-only operations.
## Error format
Error shapes vary slightly by group — rely on each operation's response schema. Most
errors carry an `error` (or `success: false` + `error`) field with a message.
| Status | Meaning |
| ----------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `400` | Invalid parameters/body, or a `license.RequirePro()` route called with a Basic key (`you are not a magic meal kits PRO user`) |
| `401` | Missing/invalid API key, or a rejected third-party credential (reconnect the account) |
| `402` | Quota exhausted (e.g. Plaud transcription) |
| `403` | YouTube `metadata` Pro gate (`Pro account required`) |
| `404` | Not found |
| `409` | Resource not ready yet (e.g. transcript still generating) |
| `429` | Rate limited |
| `500`–`504` | Upstream/server error or timeout |
# FAQ
Source: https://docs.magicmealkits.com/faq
Answers to the most common Magic Meal Kits questions — finding modules, Notion connection/permission errors, timeouts and duplicate runs, and where to manage connections.
The most common questions from the community, with the fix for each. For server-level
operations (503 errors, slow server, logs, stopping the service) see
the [Troubleshooting](/troubleshooting) guides.
Two things to check:
* **Notion Plus is a Pro feature.** It requires a **Pro** license — make sure your
deployment uses a Pro license.
* **Add the Notion Plus app and set up its connection.** The modules appear in Make once
the Notion Plus custom app is added and connected. Manage connections at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections).
**Bulk Notion (벌크노션) is a separate product.** It automates Notion template updates
directly and does **not** require a Magic Meal Kits install or a Make connection — so its
features won't appear as Make modules.
The most common cause is that your Notion integration **hasn't been granted access to the
page or database** you're automating. Issuing the token is not enough — you must add the
integration to the page/DB itself.
Full step-by-step fix: [Fix Notion connection & permission errors](/operations/notion-connection).
Two separate effects to know about:
* **Timeouts.** When a Notion write fails, the Magic Meal Kits server **retries
internally**. Those retries can exceed the Make module's time limit and surface as a
timeout. Set an explicit request **timeout** and keep payloads within limits.
* **Duplicate runs.** Make's **"allow storing of incomplete executions"** option re-runs
failed scenarios, which can look like duplicate writes. Review that setting if you see
repeats.
More detail: [Make integration tips & gotchas](/operations/make-integration-tips).
When linking your Threads account you may see this error:
```json theme={null}
{"error_message":"Invalid Request: The user has not accepted the invite to test the app.","error_code":1349245}
```
The Threads automation is a **closed beta**. After your
[beta application](https://magicmealkits.notion.site/mmk-threads) is approved, the team
sends a **tester invite** to your Threads account — and Meta requires you to **accept
that invite inside the Threads app** before the account can be connected.
Accept the invite in the Threads mobile app:
1. Open your **profile** and tap the **menu (☰)** in the top-right corner.
2. Go to **Settings** → **Account**.
3. Tap **Website permissions**.
4. On the **Apps and Websites** screen, open the **Invites** tab.
5. Find **Magic Meal Kits** and tap **Accept**.
Then return to
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections) and
connect your Threads account again.
**No invite under the Invites tab?** Your account may not be approved as a tester yet —
apply on the [beta application page](https://magicmealkits.notion.site/mmk-threads) and
wait for the approval confirmation. Also make sure you're logged in to the **same
Threads account** you applied with. A screenshot walkthrough is in the
[Threads automation guide (Korean)](https://magicmealkits.notion.site/threads).
Cookie/session formats change over time. If a connection starts failing with a cookie or
auth error, **re-register (reconnect) the connection** — this clears it in most cases. For
Notion specifically, re-setting the Make Notion connection (log out of Notion, then log
back in while reconnecting) resolves it. Manage connections at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections).
Connection setup and management is centralized at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections). Your
deployment's API URL and key are shown there (and on the App Status page) — you don't
configure them by hand. See [Authentication](/authentication).
These are covered by the Troubleshooting guides:
# Installation
Source: https://docs.magicmealkits.com/installation
Deploy the Magic Meal Kits server into your own Google Cloud project, and upgrade it later.
You install Magic Meal Kits from the web app at
[make.magicmealkits.com](https://make.magicmealkits.com) — a one-click wizard deploys the
MMK image into **your own** Google Cloud project. You own the deployment, the data, and
the URL.
## Prerequisites
Your subscription provides a **license key** and an **API key** used by the server.
Use the **same** account you sign in to Google Cloud with.
Cloud Run requires **billing enabled**. MMK itself is free — infrastructure is billed
by Google, and the free tier covers light usage.
**Install with a personal Gmail account, not a Google Workspace account.** The deployment
wizard currently supports installing into the GCP environment of a **regular Gmail account**
only. (Your Make account and the accounts you connect from Make may use Workspace freely —
this restriction applies only to the Magic Meal Kits install.)
## Deploy your server
Open [make.magicmealkits.com/deploy](https://make.magicmealkits.com/deploy) and follow the
wizard.
Click **Connect to Google Cloud** and grant access. Use the **same Google account**
you use for Google Cloud so the wizard can see your projects and create resources.
Choose the **Magic Meal Kits** template (or **Magic Meal Kits Pro**, depending on your
plan).
Select an existing GCP project, or **create a new one** (project names are 6–30
characters, lowercase letters/numbers/hyphens, and must start with a letter). The
wizard then **checks billing** and blocks deployment until it's enabled — enable it in
the Google Cloud Billing console and click **Recheck Billing**.
Pick a **resource tier**, then click **Let's Go!**.
| Tier | Resources | Suited for | Approx. GCP cost |
| --------------- | --------------- | ----------------------- | ---------------------- |
| **Free** | 1 vCPU / 256 MB | Development & testing | Free within GCP limits |
| **Basic** | 1 vCPU / 512 MB | Production workloads | \~\$5/month |
| **Performance** | 2 vCPU / 1 GB | High-traffic production | \~\$15/month |
Magic Meal Kits is free to use. Infrastructure costs are billed directly by Google
Cloud, which includes a generous free tier (vCPU-seconds, memory-seconds, and \~2M
requests/month). Actual cost depends on your usage and region.
On the success screen, use **Visit Your Application** to open your server, or **View
Deployment Status** to open the [App Status](https://make.magicmealkits.com/app-status)
page.
## What gets set up
The installer provisions everything the server needs **in your project**:
* **Cloud Run** service `magic-meal-kits` (region `us-west1`)
* **Firestore** `(default)` database — jobs and sync state
* **BigQuery** dataset `threads_data` — search-heavy posts/replies storage
* **Secret Manager** and **Cloud Tasks**
* The required Google APIs and IAM roles, and a public (invokable) URL
It also sets these environment variables on the service:
| Variable | Purpose |
| ---------------------- | ------------------------------------- |
| `GOOGLE_CLOUD_PROJECT` | Your project ID |
| `MMK_LICENSE_KEY` | Your license key |
| `MMK_API_KEY` | API key used to authenticate requests |
| `APP_TYPE` | Application type |
## After deploying
Your **server URL** and **API key** are shown on the
[App Status](https://make.magicmealkits.com/app-status) page — that's where you copy them
from (you don't hand-configure them).
How the `X-API-KEY` header and license tiers work.
Make your first call to your deployment.
## Upgrading (redeploy)
To move your deployment to a newer server version, open
[App Status](https://make.magicmealkits.com/app-status) and click
**Update Service (Redeploy)** under **Service Management**. The page shows your current
**Version** and **Last Deployed** time. The redeploy is an **in-place upgrade** — it
replaces the running container with the latest version and creates a new Cloud Run
revision.
| Preserved | Changes |
| ------------------------------ | ----------------------------------- |
| Server URL, API key, license | The container **image / version** |
| GCP project and region | A new Cloud Run revision is created |
| **Firestore & BigQuery data** | — |
| Environment variables / config | — |
Redeploying does **not** lose data and does **not** change your URL or API key — only the
server version moves forward. There's no automatic "update available" banner; you trigger
the upgrade from App Status when you want it.
# Magic Meal Kits
Source: https://docs.magicmealkits.com/introduction
An automation server you deploy into your own GCP project — drive it from your code, from Make.com, or from an LLM over MCP.
## What is Magic Meal Kits?
Magic Meal Kits (MMK) is a self-hosted automation server. When you purchase a
license, the installer deploys the MMK image into **your own Google Cloud project**
(Cloud Run, `us-west1`) together with the Firestore, BigQuery, Secret Manager, and
Cloud Tasks resources it needs. You own the deployment, the data, and the URL.
Once it's running you can drive it three ways:
\~130 endpoints for Notion, Threads, Plaud, Tiro, PDF, YouTube, transcription,
Slack, and more. The surface you build automations against.
Connect the server's MCP tools to Claude, Cursor, or any MCP client and let the
model call MMK directly.
The `mmk` CLI wraps the most common operations for the terminal — and powers the
ready-made [skills](/cli/skills).
## Vibe-code against your server
These docs are also available to your LLM as an **MCP server** (`/mcp`) and as
`llms.txt`. Point Claude or Cursor at the docs, describe the automation you want, and
the model reads this API reference and writes the code that calls *your* MMK
deployment. See [Docs as MCP](/mcp/docs-as-mcp).
The docs MCP serves **documentation content** — it lets an LLM read and search this
reference. It is not a live proxy to your server; the code the LLM writes calls your
own deployment's URL with your own API key.
## Where to go next
# Fix persistent 503 errors (force re-activate)
Source: https://docs.magicmealkits.com/operations/fix-503-force-sync
Use this when Make.com scenarios keep failing with 503 from Magic Meal Kits modules — force-reactivate the server from the App Status page.
When your Magic Meal Kits modules in Make repeatedly return **503**, the link between Make
and your server has dropped. Forcing the server to re-activate from **App Status** restores
it.
## When you need this
**Symptom:** A Make scenario keeps failing on a Magic Meal Kits module with a **503**
error, and retrying doesn't help — the errors repeat. This means your server is
temporarily unreachable.
## Fix
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
Find the **Magic Meal Kits server** entry and click it.
Click **Activate** to force the server connection to re-activate. This clears the 503
errors.
After re-activating, give it a moment and re-run your scenario. If 503s persist for more
than a few minutes, the server may still be warming up — see
[Troubleshooting](/troubleshooting) for cold-start behavior, or
[upgrade the memory tier](/operations/upgrade-performance) if the errors coincide with
heavy load.
## Still stuck?
If the errors continue after re-activating, contact support and include your account email
and a short description of the symptom: [Contact 푸르공 on KakaoTalk](https://open.kakao.com/me/pureugong).
For a faster diagnosis, attach your [system logs](/operations/share-system-logs).
# Activate Google Cloud billing (upgrade)
Source: https://docs.magicmealkits.com/operations/google-cloud-billing
Keep your Magic Meal Kits server running after the Google Cloud free trial: activate billing (upgrade) so the project isn't suspended — plus what it costs.
Your Magic Meal Kits server runs in **your own Google Cloud project**. If you started on
the Google Cloud **free trial**, you must **activate billing (upgrade)** before the trial
ends — otherwise Google Cloud suspends the project and your server stops.
**Upgrade is required.** If you were on the Google Cloud free trial, the service is
**suspended once the trial ends** unless you complete the upgrade (activate billing).
## How to upgrade
On the Magic Meal Kits **App Status** screen, click **Open in Google Cloud Console**.
In Google Cloud Console, look at the notice banner across the top. A free-trial message
with an **Activate** (활성화) / **Upgrade** (업그레이드) button means you're still on the
free trial.
Click **Upgrade** (업그레이드) / **Activate** (활성화) in the banner and follow the prompt
to add a billing account. Once billing is active, the project is no longer time-limited
and the server keeps running.
After upgrading, **double-check that billing is active** on your project. The installer's
**Recheck Billing** step (see the [installation guide](/installation)) confirms it before
deploying.
## Google Cloud billing
* Google Cloud is a **pay-as-you-go** service.
* After the free trial ends, an **active billing account is required**.
* If billing isn't set up correctly, the service **cannot run**.
## Does Google Cloud charge you?
* The service is designed to run **within Google Cloud's free usage tier**.
* For **normal use, you typically pay nothing extra**.
* Only **heavy/excessive traffic** may incur a small Google Cloud charge.
## Still stuck?
If the server doesn't recover right after you activate billing, give it **20–30 minutes** —
cold start / propagation can return `503` or `429` for a while, which is normal; don't
redeploy repeatedly. If it still fails,
[contact support](https://open.kakao.com/me/pureugong) with your account email.
# Make integration tips & gotchas
Source: https://docs.magicmealkits.com/operations/make-integration-tips
Use this when building Make scenarios with Magic Meal Kits — find the modules, set request timeouts, avoid duplicate runs, and stay within Notion rate limits.
A few practices that prevent the most common Make-side problems with Magic Meal Kits modules.
## Finding the modules
* **Notion Plus is a Pro feature** — it requires a **Pro** license. If a module is missing in
Make, also make sure the Notion Plus app is added and its connection is set up.
* Set up and manage all connections at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections).
## Timeouts and retries
When a Notion write fails, the Magic Meal Kits server **retries internally** before giving up.
If those retries run long, the Make module can hit its time limit and surface a **timeout**.
Set an explicit **timeout** on long-running requests (a few seconds is typical), and keep each
call within limits — for bulk operations, stay at **≤100 records per call**.
## Avoid duplicate runs
Make's **"allow storing of incomplete executions"** option re-runs failed scenarios. Combined
with the server-side retry above, this can look like **duplicate writes**. If you see repeats,
review that setting on the scenario and decide whether re-running on failure is what you want.
## Stay within Notion rate limits
The Notion Plus modules are rate limited to about **3 requests/second** (matching Notion's own
API). Don't fan out parallel branches that blow past this — throttle or batch instead. See the
[Notion API overview](/api-reference/notion/overview) for bulk limits and the optional `config`
block.
## Markdown content
Notion **Rich Text blocks have a 2,000-character limit per block**, so Magic Meal Kits splits
long markdown into multiple blocks when converting. **Raw** and **Refined** outputs can differ
slightly in length/wording — pick the one that matches your use case. Details in the
[Notion API overview](/api-reference/notion/overview).
# Fix Notion connection & permission errors
Source: https://docs.magicmealkits.com/operations/notion-connection
Use this when Notion modules fail with 401 or a permission error — grant your Notion integration access to the page/database and re-set the Make connection.
By far the most common Notion issue is a **permission error**: the integration token is
valid, but it hasn't been **granted access to the specific page or database** you're
automating. Issuing the token is only half the setup.
## When you need this
**Symptom:** Notion modules fail with **`401`**, a permission error, or "the connection page
has no permission" — even though the token looks correct.
## Fix
In Notion, create an internal integration and copy its token. This is the value you put
in the **Notion Token** field of the Make connection.
Open the **page or database you want to automate**, and add your integration to it via
its **Connections** menu (top-right **•••** → **Connections** → add your integration).
Add it at the **top-level** page/DB so child pages inherit access.
This is the step most people miss. A token with no access to the target page returns
`401` / permission errors on every call.
Enter the **Notion Token** (and, for unofficial operations, the **Space ID** and
**User ID**) on the Make Notion Plus connection. Manage your connections at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections).
Run the module with a **plain text** input to confirm the connection works, then build up
to your real payload. This isolates a permission problem from a data/formatting problem.
## Still failing? Re-set the connection
If access is granted but calls still fail, the stored session may be stale. **Re-register the
Notion connection** — log out of Notion, then reconnect while logging back in. Re-creating the
connection clears most cookie/session errors.
For other Magic Meal Kits products (Plaud, Tiro, Threads) the per-service credentials are
stored server-side — reconnect those accounts from
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections). Notion is
the exception: the token is supplied per request. See [Authentication](/authentication) and
the [Notion API overview](/api-reference/notion/overview).
# Reissue (rotate) your API key
Source: https://docs.magicmealkits.com/operations/reissue-api-key
Use this when your Magic Meal Kits API key (MMK_API_KEY) has leaked — exposed in code, a screenshot, or a public repo. Reissue it to invalidate the old key and redeploy with a new one.
If your API key ([`MMK_API_KEY`](/authentication)) was exposed — pasted into
client-side code, shared in a screenshot, or committed to a public repository —
reissue it. Reissuing generates a brand-new key and redeploys your service so the
new key takes effect, making the leaked key useless.
## When you need this
Reissue your API key if any of these happened:
* The key was committed to a public GitHub repo (including through "vibe coding").
* It appeared in a screenshot, a support message, or client-side code.
* You simply suspect someone else has seen it.
Your API key authenticates every request to your deployment, so a leaked key lets
someone else call your service. See [Authentication](/authentication) for what the
key is and where it's used.
**Reissuing immediately invalidates your current key — every existing connection
that uses it breaks at once.** Your Make.com connection, the CLI, and any MCP client
all start failing with `401 Unauthorized` until you update each one with the new key.
Your service also redeploys (\~1–2 minutes), during which requests may briefly fail.
**Only reissue when you're ready to update every connection right afterward.** Your
service URL, license, and data are all kept.
## Reissue your API key
Sign in at
[make.magicmealkits.com/google-connection](https://make.magicmealkits.com/google-connection).
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
In the **Connection & Access** card, under **API Key**, click **Reissue API key**
and confirm. Your service redeploys with a freshly generated key.
When the new key appears, copy it. You can also view it any time later with the
eye (👁) button next to the API Key field on this page.
## After reissuing — update your clients
The old key stops working right away, so update everything that uses it:
* **Make.com connection** — this lives in **your Make account**, not on
make.magicmealkits.com. Open the **Connections** page for your Make zone —
`https://.make.com//connections` — where `` is the region in
your Make address bar (e.g. `us1`, `us2`, `eu1`, `eu2`). Open the Magic Meal Kits
connection and replace the API key with the new one.
* **CLI** — set the new key in your CLI config (the stored `api-key` value).
* **MCP clients** — update any MCP client configured with the key.
Until each connection has the new key, its requests will fail with `401`.
## Also remove the exposed key
Reissuing makes the leaked key useless, but still clean up where it leaked:
* Delete the key from your code, screenshots, and any public location.
* If it was committed to git, removing it from the current files **does not** erase
it from the commit history. Make the repository private, or scrub the key from the
history.
## Still stuck?
If the reissue doesn't complete or your clients still can't connect after updating
the key, [contact support](https://open.kakao.com/me/pureugong) with your account
email and a short description of what you're seeing.
# Share system logs with support
Source: https://docs.magicmealkits.com/operations/share-system-logs
Use this when support asks for your Magic Meal Kits logs — download the system logs from Google Cloud and send them, along with your account email and symptom, to support.
When you report a problem, support often needs your **system logs** to diagnose it. This
guide shows how to capture the logs from Google Cloud and what to send.
## Before you start
* You need a Magic Meal Kits account.
* You need access to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
* Have your **account email** and a short **description of the symptom** ready.
## Download your system logs
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status)
and click **System Logs**.
In Google Cloud, click the **magic-meal-kits** service.
Take a screenshot of **all** the graphs shown on the screen — you'll send these to
support.
Click **Logs** on the left, then click the button on the right.
When the view changes, click **Action** on the right.
Click **Download** at the bottom.
Change the number to **10,000**, then start the download.
Check that the download completed.
When the log file has downloaded, you're ready.
## Send these to support
Share the following **four items** with support via KakaoTalk:
* **Your Magic Meal Kits account email**
* **A description of the symptom**
* **The metrics graph screenshots** (from Step 3)
* **The log file** (from Steps 7–8)
KakaoTalk support chat: [pf.kakao.com/\_fMgxdn/chat](http://pf.kakao.com/_fMgxdn/chat)
# Stop or reinstall the service
Source: https://docs.magicmealkits.com/operations/stop-reinstall
Use this when you want to stop the Magic Meal Kits service in your Google Cloud project, or reinstall it — including the billing prerequisite for a successful reinstall.
You can stop the Magic Meal Kits service at any time and reinstall it whenever you like.
## Stop the service
Sign in at
[make.magicmealkits.com/google-connection](https://make.magicmealkits.com/google-connection).
If you're already signed in, you'll see a screen like this.
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
Click **Stop Service** and type `magic-meal-kits` to confirm. The service stops.
## Reinstall the service
The service can be installed again at any time — reinstall from
[make.magicmealkits.com](https://make.magicmealkits.com) (see the full
[installation guide](/installation)).
**Reinstalling requires a healthy Google Cloud billing account.** If your billing has an
issue, the install will fail — fix the billing problem first, then reinstall. If you can't
verify the billing status, the cleanest path is to **fully delete and reinstall** after
fixing billing. See [Troubleshooting](/troubleshooting) for billing details.
**After reinstalling, give it 20–30 minutes — don't redeploy repeatedly.** A freshly
reinstalled server may return `503` (cold start) or `429` (rate exceeded) for a while.
This is normal warm-up and usually clears on its own; repeatedly redeploying does not speed
it up.
## Still stuck?
If a reinstall keeps failing after you've confirmed billing is healthy,
[contact support](https://open.kakao.com/me/pureugong) with your account email and a short
description of what you're seeing.
# Upgrade performance (memory tier)
Source: https://docs.magicmealkits.com/operations/upgrade-performance
Use this when Magic Meal Kits is slow or runs out of memory under heavy load — upgrade the server from Free (256 MB) to Basic (512 MB) from App Status.
Magic Meal Kits is designed to run within Google Cloud's **free tier**. Under heavier use
it can slow down — upgrading the memory tier from **Free (256 MB)** to **Basic (512 MB)**
usually resolves it.
## When you need this
Performance can degrade when:
* You process **large volumes of data** frequently, or
* **Multiple scenarios** hit the server at the same time.
In these cases, upgrading memory from **256 MB to 512 MB** typically fixes the slowdown.
If you need **more than 512 MB**, [contact support](https://open.kakao.com/me/pureugong) —
larger upgrades are handled separately.
## Upgrade to Basic
Sign in with the account you use for your deployment.
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
In the top-left, confirm that **Service Tier** shows **Free**.
Click **Upgrade to Basic** near the bottom of the page, then click **Confirm Changes**.
Memory is updated to 512 MB automatically in about **30 seconds**.
In the top-left, confirm that **Service Tier** now shows **Basic**.
The tier names match the [installation tiers](/installation#deploy-your-server): **Free**
is 1 vCPU / 256 MB and **Basic** is 1 vCPU / 512 MB. Infrastructure is billed by Google
Cloud — Basic is roughly **\~\$5/month** depending on usage and region.
## Still stuck?
If performance problems continue after upgrading to Basic, you may need more memory.
[Contact support](https://open.kakao.com/me/pureugong) with your account email — and
attach your [system logs](/operations/share-system-logs) so we can diagnose faster.
# Quickstart
Source: https://docs.magicmealkits.com/quickstart
Make your first call to your Magic Meal Kits deployment.
## 1. Find your base URL
Your deployment runs at the Cloud Run URL created during [installation](/installation):
```
https://magic-meal-kits-xxxxx.run.app
```
The HTTP API lives under `/api/v1` (with some features under `/api/v2` and `/api/v3`).
## 2. Make a request
A health check needs no auth:
```bash theme={null}
curl "https://magic-meal-kits-xxxxx.run.app/health"
```
An authenticated call uses your [API key](/authentication):
```bash theme={null}
curl -X POST "https://magic-meal-kits-xxxxx.run.app/api/v1/youtube/metadata" \
-H "X-API-KEY: your-api-key" \
-H "Content-Type: application/json" \
-d '{"video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'
```
## 3. Build automations
Find the endpoint for what you want to automate.
Point Claude or Cursor at these docs over MCP and describe the automation.
**Skeleton page.** Worked end-to-end examples to be added with the API Reference.
# Troubleshooting
Source: https://docs.magicmealkits.com/troubleshooting
Keep your Magic Meal Kits deployment running: Google Cloud billing, stopping/reinstalling the service, and what to do when the server is slow to come back.
These notes apply to **every** Magic Meal Kits deployment (all apps — Threads, Plaud,
Notion, …), since the server runs in your own Google Cloud project.
**Start here when something's wrong** — pick the symptom that matches.
### Server stopped or erroring
Your Google Cloud free trial ended and the server stopped — upgrade (activate billing).
Make scenarios repeatedly fail with `503` — force-reactivate the server.
Notion modules fail with `401` or a permission error — grant access and re-set the connection.
### Tuning & maintenance
Slow under heavy load — upgrade the memory tier from Free to Basic.
Find the modules, set timeouts, and avoid duplicate runs in Make.com.
Download your system logs from Google Cloud and send them to support.
Stop the service, or reinstall it (with the billing prerequisite).
## Keeping your deployment running
The Magic Meal Kits server runs in **your own Google Cloud project** and stays within
Google Cloud's free usage tier for normal use — but the **free trial is time-limited**.
If you started on the Google Cloud **free trial**, your server is **stopped once the trial
ends** unless you **activate billing (upgrade)** first. See
[Activate Google Cloud billing (upgrade)](/operations/google-cloud-billing) for the
step-by-step guide and what it costs.
## Stopping or reinstalling the service
You can stop and reinstall the Magic Meal Kits service at any time:
1. Sign in to Google Cloud at [make.magicmealkits.com/google-connection](https://make.magicmealkits.com/google-connection).
2. Open [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status).
3. Click **Stop Service** and type `magic-meal-kits` to confirm.
Full step-by-step guide:
[Stop or reinstall the service](/operations/stop-reinstall).
**Reinstalling requires a healthy Google Cloud billing account.** If your Google Cloud
billing has an issue, the installation will fail — you must resolve the billing problem
first, then reinstall. If you can't verify the billing status, the cleanest path is to
**fully delete and reinstall** after fixing billing.
**After fixing billing or reinstalling, give it 20–30 minutes — don't redeploy
repeatedly.** When a server has been down for a while and you reinstall or correct your
billing info, the service often does **not** respond right away: you may see `503`
(cold start) or `429` (Rate exceeded) for a time. This is normal warm-up / propagation
and usually clears on its own within **20–30 minutes**. Please just wait — repeatedly
redeploying does not speed it up and can make recovery take longer.
# Create an API key
Source: https://docs.magicmealkits.com/api-reference/api-keys/create-an-api-key
/api-reference/tiro/openapi.json post /tiro/api-keys
Creates a new Tiro API key. **Pro license required.**
# Delete an API key
Source: https://docs.magicmealkits.com/api-reference/api-keys/delete-an-api-key
/api-reference/tiro/openapi.json delete /tiro/api-keys/{api_key_id}
Deletes a Tiro API key. **Pro license required.**
# List API keys
Source: https://docs.magicmealkits.com/api-reference/api-keys/list-api-keys
/api-reference/tiro/openapi.json get /tiro/api-keys
Lists the Tiro API keys on your account. **Pro license required.**
# Charge via AutoPay
Source: https://docs.magicmealkits.com/api-reference/autopay/charge-via-autopay
/api-reference/paymint/openapi.json post /paymint/autopay/request
Charges a registered AutoPay method. Requires a **Pro** or **Paymint-only** license and **draws down your Paymint balance**.
# Delete an AutoPay method
Source: https://docs.magicmealkits.com/api-reference/autopay/delete-an-autopay-method
/api-reference/paymint/openapi.json delete /paymint/autopay/delete
Removes a registered AutoPay method. Requires a **Pro** or **Paymint-only** license.
# List AutoPay methods
Source: https://docs.magicmealkits.com/api-reference/autopay/list-autopay-methods
/api-reference/paymint/openapi.json get /paymint/autopay/methods
Lists a payer's registered AutoPay methods. Requires a **Pro** or **Paymint-only** license.
# Manage an AutoPay method
Source: https://docs.magicmealkits.com/api-reference/autopay/manage-an-autopay-method
/api-reference/paymint/openapi.json post /paymint/autopay/manage
Updates an existing AutoPay method. Requires a **Pro** or **Paymint-only** license.
# Register AutoPay
Source: https://docs.magicmealkits.com/api-reference/autopay/register-autopay
/api-reference/paymint/openapi.json post /paymint/autopay/register
Registers a payer for AutoPay (recurring billing). Requires a **Pro** or **Paymint-only** license.
# Get a card deep link
Source: https://docs.magicmealkits.com/api-reference/cards/get-a-card-deep-link
/api-reference/remember/openapi.json get /remember/card-link
Creates a shareable deep link for a Remember business card. Omit both `cardId` and `name` to use the token owner's own profile card; otherwise pass **both** together. **Pro license required.**
# Get a category
Source: https://docs.magicmealkits.com/api-reference/catalog/get-a-category
/api-reference/coupang/openapi.json post /coupang/category
Looks up a Coupang display category by code. Requires a **Basic** license.
# Bulk grant/revoke course access
Source: https://docs.magicmealkits.com/api-reference/classrooms/bulk-grantrevoke-course-access
/api-reference/skool/openapi.json post /skool/member-courses/bulk
Applies the same `grant` / `revoke` course lists to multiple members in one call. Requires a **Basic** license. Rate limited (1 request / 20 s).
# Get a member's course permissions
Source: https://docs.magicmealkits.com/api-reference/classrooms/get-a-members-course-permissions
/api-reference/skool/openapi.json get /skool/member-courses
Returns a member's course/classroom access. Requires a **Basic** license. Rate limited.
# Grant/revoke a member's course access
Source: https://docs.magicmealkits.com/api-reference/classrooms/grantrevoke-a-members-course-access
/api-reference/skool/openapi.json post /skool/member-courses
Grants and/or revokes a member's access to courses (classrooms). Provide at least one of `grant` / `revoke` (each is a list of course IDs). Requires a **Basic** license. Rate limited.
# List classrooms
Source: https://docs.magicmealkits.com/api-reference/classrooms/list-classrooms
/api-reference/skool/openapi.json get /skool/classrooms
Lists the community's classrooms (courses). Requires a **Basic** license. Rate limited.
# Get supported locales
Source: https://docs.magicmealkits.com/api-reference/config/get-supported-locales
/api-reference/tiro/openapi.json get /tiro/locales
Returns the locales supported for transcription/translation/summary. The handler itself doesn't use the Tiro token, but the route still runs the Tiro auth middleware — so a Tiro connection must be configured (server-side stored token), same as the other endpoints. **Pro license required.**
# Get threads (folders)
Source: https://docs.magicmealkits.com/api-reference/config/get-threads-folders
/api-reference/tiro/openapi.json get /tiro/threads
Returns the user's threads/folders for organizing notes. **Pro license required.**
# Get note summaries
Source: https://docs.magicmealkits.com/api-reference/content/get-note-summaries
/api-reference/tiro/openapi.json get /tiro/notes/{note_id}/summaries
Returns summaries for a note keyed by template title. **Pro license required.**
# Get note transcripts
Source: https://docs.magicmealkits.com/api-reference/content/get-note-transcripts
/api-reference/tiro/openapi.json get /tiro/notes/{note_id}/transcripts
Returns merged transcripts for a note — raw, refined, and (if enabled) translated — plus duration. **Pro license required.**
# Coupang
Source: https://docs.magicmealkits.com/api-reference/coupang/overview
Retrieve Coupang seller orders and order sheets.
The Coupang group powers the **Coupang** Make.com app — pull seller order sheets and
consumer orders.
## Authentication
Send the MMK `X-API-KEY` — that's the only credential the caller handles. Your Coupang
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 — see
[Authentication](/authentication).
Order sheets and category lookup are **Basic**. The two **consumer-order** endpoints
(`orders`, `flattened-orders`) are **Pro** — a Basic key gets `400`
`you are not a magic meal kits PRO user`.
## Endpoints
| Endpoint | Tier | What it does |
| -------------------------------- | ------- | -------------------------------------------------------- |
| `POST /coupang/ordersheets` | Basic | Seller order sheets for a created-at window |
| `POST /coupang/category` | Basic | Look up a display category |
| `POST /coupang/orders` | **Pro** | Consumer orders (paged by `pageIndex`/`pageSize`/`year`) |
| `POST /coupang/flattened-orders` | **Pro** | Consumer orders flattened to one row per item |
## Notes
* **Order sheets** take a created-at window (`createdAtFrom` / `createdAtTo`, optional
`status`). **Consumer orders** take `pageIndex` / `pageSize` / `year` instead.
* **Flattened orders** give you one row per order item — handy when mapping straight into a
spreadsheet or downstream module.
Use the interactive playground to try a request with your own deployment host, API key,
and Coupang token.
# Decompose an ISO 8601 duration
Source: https://docs.magicmealkits.com/api-reference/iso-8601/decompose-an-iso-8601-duration
/api-reference/utilities/openapi.json post /iso8601/components
Parses an ISO 8601 duration into numeric days/hours/minutes/seconds. **Pro license required.**
# Format an ISO 8601 duration
Source: https://docs.magicmealkits.com/api-reference/iso-8601/format-an-iso-8601-duration
/api-reference/utilities/openapi.json post /iso8601/format
Formats an ISO 8601 duration string (e.g. `PT1H30M`) into one or more human-readable formats. **Pro license required.**
# Execute JavaScript
Source: https://docs.magicmealkits.com/api-reference/javascript/execute-javascript
/api-reference/utilities/openapi.json post /javascript
Runs JavaScript in a secure sandbox with a timeout. Requires a **Basic** license. Code is capped at 10 KB; timeout defaults to 5000 ms (max 10000 ms). Values in `args` are exposed to the script as the `args` array.
# Extract JSON from text
Source: https://docs.magicmealkits.com/api-reference/json/extract-json-from-text
/api-reference/utilities/openapi.json post /json/extract
Extracts and parses the first JSON object or array embedded in arbitrary text. **Pro license required.**
# List members
Source: https://docs.magicmealkits.com/api-reference/members/list-members
/api-reference/skool/openapi.json get /skool/members
Lists community members by page. Requires a **Basic** license. Rate limited.
# Get YouTube video metadata
Source: https://docs.magicmealkits.com/api-reference/metadata/get-youtube-video-metadata
/api-reference/youtube/openapi.json post /youtube/metadata
Returns title, author, thumbnails, channel info, and counts for a video. Identify it by either `video_url` or `video_id`. **Pro license required** — a Basic key returns `403` with `Pro account required`. This route is rate limited.
# Create a note
Source: https://docs.magicmealkits.com/api-reference/notes/create-a-note
/api-reference/tiro/openapi.json post /tiro/notes
Creates a new meeting note with optional context, threads, and locales. **Pro license required.**
# Delete a note
Source: https://docs.magicmealkits.com/api-reference/notes/delete-a-note
/api-reference/tiro/openapi.json delete /tiro/notes/{note_id}
Deletes a meeting note. This cannot be undone. **Pro license required.**
# Get note status
Source: https://docs.magicmealkits.com/api-reference/notes/get-note-status
/api-reference/tiro/openapi.json get /tiro/notes/{note_id}
Returns a note's status and metadata (transcription state, duration, paragraph count). **Pro license required.**
# Replace note settings
Source: https://docs.magicmealkits.com/api-reference/notes/replace-note-settings
/api-reference/tiro/openapi.json put /tiro/notes/{note_id}
Full replace of a note's settings (title, locales, feature toggles). **Pro license required.**
# Update a note
Source: https://docs.magicmealkits.com/api-reference/notes/update-a-note
/api-reference/tiro/openapi.json patch /tiro/notes/{note_id}
Partial update of a note — title, context, locales, thread add/remove, feature toggles. **Pro license required.**
# Get consumer orders
Source: https://docs.magicmealkits.com/api-reference/orders/get-consumer-orders
/api-reference/coupang/openapi.json post /coupang/orders
Returns Coupang consumer orders, paginated by `pageIndex` / `pageSize` and filtered by `year`. **Pro license required.**
# Get flattened consumer orders
Source: https://docs.magicmealkits.com/api-reference/orders/get-flattened-consumer-orders
/api-reference/coupang/openapi.json post /coupang/flattened-orders
Same as consumer orders but flattened to one row per item — convenient for spreadsheet/automation mapping. **Pro license required.**
# Get order sheets
Source: https://docs.magicmealkits.com/api-reference/orders/get-order-sheets
/api-reference/coupang/openapi.json post /coupang/ordersheets
Returns Coupang seller order sheets for a created-at window. Requires a **Basic** license.
# Cancel a payment
Source: https://docs.magicmealkits.com/api-reference/payments/cancel-a-payment
/api-reference/paymint/openapi.json post /paymint/cancel
Cancels a previously sent payment request. Requires a **Pro** or **Paymint-only** license.
# Destroy a payment
Source: https://docs.magicmealkits.com/api-reference/payments/destroy-a-payment
/api-reference/paymint/openapi.json post /paymint/destroy
Permanently removes a payment request. Requires a **Pro** or **Paymint-only** license.
# Read a payment
Source: https://docs.magicmealkits.com/api-reference/payments/read-a-payment
/api-reference/paymint/openapi.json post /paymint/read
Returns the status/details of a payment request. Requires a **Pro** or **Paymint-only** license.
# Resend a payment request
Source: https://docs.magicmealkits.com/api-reference/payments/resend-a-payment-request
/api-reference/paymint/openapi.json post /paymint/resend
Re-sends an existing payment request to the payer. Requires a **Pro** or **Paymint-only** license and **draws down your Paymint balance**.
# Send a payment request
Source: https://docs.magicmealkits.com/api-reference/payments/send-a-payment-request
/api-reference/paymint/openapi.json post /paymint/request
Sends a Paymint payment request to a payer. Requires a **Pro** or **Paymint-only** license and **draws down your Paymint balance**.
# Paymint
Source: https://docs.magicmealkits.com/api-reference/paymint/overview
Send and manage Paymint (결제선생) payment requests and AutoPay.
The Paymint group powers the **Paymint** Make.com app — send payment requests to payers,
read/cancel them, and manage AutoPay (recurring billing).
New to Paymint? Start with the **[Getting started guide](/guides/paymint/getting-started)** —
sign up for 결제선생, pass the card-company review, and connect it to Magic Meal Kits.
## Authentication
Send the MMK `X-API-KEY` plus your Paymint connection fields, which you set once on the
connection page in the Magic Meal Kits app (see [Authentication](/authentication)). Two
modes:
* **MMK mode** — send `X-Paymint-MMK-Mode: true` (optionally `X-Paymint-Member-ID` /
`X-Paymint-Merchant-ID` to pick a specific license). Easiest; uses a license configured
on your deployment.
* **Traditional mode** — send `X-Paymint-Host`, `X-Paymint-Api-Key`, `X-Paymint-Member-ID`,
`X-Paymint-Merchant-ID`, `X-Paymint-Business-Number`.
The protected endpoints require a **Pro** or **Paymint-only** license — a Basic deployment
gets `402` (upgrade required). On top of that, payment-sending calls (`request`, `resend`,
`autopay/request`) **draw down your Paymint balance**, which also returns `402` when the
balance is insufficient.
## Endpoints
| Endpoint | Auth | What it does |
| ----------------------------------- | ---------- | -------------------------------------------------- |
| `GET /paymint/licenses` | None | List approved licenses (to pick a member/merchant) |
| `POST /paymint/format-phone-number` | None | Normalize a phone number |
| `POST /paymint/request` | Connection | Send a payment request (uses balance) |
| `POST /paymint/read` | Connection | Read a payment's status |
| `POST /paymint/cancel` | Connection | Cancel a payment |
| `POST /paymint/destroy` | Connection | Permanently remove a payment |
| `POST /paymint/resend` | Connection | Resend a payment request (uses balance) |
| `POST /paymint/autopay/register` | Connection | Register a payer for AutoPay |
| `POST /paymint/autopay/manage` | Connection | Update an AutoPay method |
| `GET /paymint/autopay/methods` | Connection | List a payer's AutoPay methods |
| `POST /paymint/autopay/request` | Connection | Charge via AutoPay (uses balance) |
| `DELETE /paymint/autopay/delete` | Connection | Delete an AutoPay method |
## Notes
* **Public helpers.** `licenses` and `format-phone-number` need no Paymint auth — handy for
setup and input formatting.
* **Balance.** Top up your Paymint balance to keep `request` / `resend` / `autopay/request`
working.
* **Callback.** Paymint posts payment status updates to a server-side `callback` endpoint;
it's inbound from Paymint, not something you call.
Use the interactive playground to try a request with your own deployment host, API key, and
Paymint connection fields.
# Remember
Source: https://docs.magicmealkits.com/api-reference/remember/overview
Generate Remember business-card deep links.
The Remember group powers the **Remember** Make.com app. It generates a shareable deep
link for a Remember business card.
## Authentication
Send the MMK `X-API-KEY` — that's the only credential the caller handles. Your Remember
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 — see
[Authentication](/authentication).
**Pro license required.** A Basic key gets `400` `you are not a magic meal kits PRO user`.
## Endpoints
| Endpoint | Tier | What it does |
| ------------------------- | ------- | -------------------------------------- |
| `GET /remember/card-link` | **Pro** | Create a deep link for a business card |
## Notes
* **Default to your own card.** Omit both `cardId` and `name` to use the token owner's
profile card. To target a specific card, pass **both** `cardId` and `name` together.
Use the interactive playground to try a request with your own deployment host, API key,
and Remember token.
# Skool
Source: https://docs.magicmealkits.com/api-reference/skool/overview
Read Skool members, classrooms, and course permissions, and grant/revoke course access.
The Skool group powers the **Skool** Make.com app — read community members and classrooms,
and manage members' course access.
## Authentication
Send the MMK `X-API-KEY`. Your Skool credentials (client ID + auth token) are set once on
the connection page in the Magic Meal Kits app and resolved server-side, so no per-request
credential headers are needed. Each request still passes **a group identifier**:
`x-skool-group-name` for the read endpoints (members, classrooms) and `x-skool-group-id`
for the course-permission endpoints — see [Authentication](/authentication). All endpoints
require a **Basic** license and are rate limited.
## Endpoints
| Endpoint | Tier | What it does |
| --------------------------------- | ----- | ------------------------------------- |
| `GET /skool/members` | Basic | List members (paginated) |
| `GET /skool/classrooms` | Basic | List classrooms (courses) |
| `GET /skool/member-courses` | Basic | A member's course permissions |
| `POST /skool/member-courses` | Basic | Grant/revoke one course permission |
| `POST /skool/member-courses/bulk` | Basic | Grant/revoke for many members at once |
## Notes
* **Rate limits** apply per endpoint (e.g. members/classrooms \~3 req / 10 s; bulk \~1 req /
20 s) — space out calls and prefer the bulk endpoint for large updates.
* **`memberID`** comes from the members list; pass `classroomID` to scope a permission to a
specific course.
Use the interactive playground to try a request with your own deployment host, API key,
and Skool credentials.
# Convert Markdown to Slack Block Kit
Source: https://docs.magicmealkits.com/api-reference/slack/convert-markdown-to-slack-block-kit
/api-reference/utilities/openapi.json post /slack/convert
Converts Markdown into Slack Block Kit JSON and a Block Kit Builder preview URL. Requires a **Basic** license. This route is rate limited.
# Get YouTube transcript
Source: https://docs.magicmealkits.com/api-reference/transcript/get-youtube-transcript
/api-reference/youtube/openapi.json post /youtube/transcript/v2
Returns the transcript of a YouTube video in the requested format. Identify the video by either `video_url` or `video_id`. Requires a **Basic** license. This route is rate limited.
Set `with_metadata: true` to include video metadata in the response — note that the **metadata fields require a Pro license**; a Basic key returns the transcript with an upgrade placeholder in `metadata`.
# Format a phone number
Source: https://docs.magicmealkits.com/api-reference/utilities/format-a-phone-number
/api-reference/paymint/openapi.json post /paymint/format-phone-number
Normalizes a Korean phone number to the format Paymint expects. No auth required.
# List approved licenses
Source: https://docs.magicmealkits.com/api-reference/utilities/list-approved-licenses
/api-reference/paymint/openapi.json get /paymint/licenses
Returns the approved Paymint licenses available to your deployment (used to pick a member/merchant in MMK mode). No auth required.
# Utilities
Source: https://docs.magicmealkits.com/api-reference/utilities/overview
Single-purpose helper endpoints: JavaScript execution, JSON extraction, ISO 8601 durations, and Markdown → Slack conversion.
The Utilities group bundles small, stateless building blocks that show up again and
again inside automations. All routes are `POST` under `/api/v1` and authenticate with the
`X-API-KEY` header (see [Authentication](/authentication)).
Error shapes differ per endpoint — rely on each operation's response schema, not one
blanket shape:
* `javascript` and `slack/convert` fail with `{ "success": false, "error": "..." }`.
* `json/extract` and the `iso8601/*` routes return `{ "status": "error", "error": "..." }`
on a Pro-gate failure, and a `200` with `is_valid: false` (ISO) or an `error` field
(JSON) when the input can't be parsed.
## Endpoints
| Endpoint | Tier | What it does |
| -------------------------- | ------- | -------------------------------------------------------------- |
| `POST /javascript` | Basic | Run JavaScript in a sandboxed VM (10 KB code cap, ≤10 s) |
| `POST /json/extract` | **Pro** | Pull the first JSON object/array out of mixed text |
| `POST /iso8601/format` | **Pro** | Format an ISO 8601 duration into human-readable strings |
| `POST /iso8601/components` | **Pro** | Decompose an ISO 8601 duration into days/hours/minutes/seconds |
| `POST /slack/convert` | Basic | Convert Markdown to Slack Block Kit (rate limited) |
`json/extract` and both `iso8601/*` endpoints require a **Pro** license — a Basic key
gets `you are not a magic meal kits PRO user`. See [Authentication](/authentication).
## Notes
* **JavaScript** runs in a secure sandbox. Values passed in `args` are available as the
`args` array inside the script. Timeout defaults to 5000 ms (max 10000 ms).
* **Slack convert** is rate limited; it returns both the Block Kit `blocks` and a
`blockKitUrl` you can open in Slack's Block Kit Builder to preview.
Use the interactive playground on each endpoint page to try a request with your own
deployment host and API key.
# Create a webhook
Source: https://docs.magicmealkits.com/api-reference/webhooks/create-a-webhook
/api-reference/tiro/openapi.json post /tiro/webhooks
Registers a webhook for the given event types. **Pro license required.**
# Delete a webhook
Source: https://docs.magicmealkits.com/api-reference/webhooks/delete-a-webhook
/api-reference/tiro/openapi.json delete /tiro/webhooks/{webhook_id}
Deletes a webhook. **Pro license required.**
# Get webhook event types
Source: https://docs.magicmealkits.com/api-reference/webhooks/get-webhook-event-types
/api-reference/tiro/openapi.json get /tiro/webhook-event-types
Returns the available webhook event types you can subscribe to. **Pro license required.**
# List webhooks
Source: https://docs.magicmealkits.com/api-reference/webhooks/list-webhooks
/api-reference/tiro/openapi.json get /tiro/webhooks
Lists the webhooks registered on your Tiro account. **Pro license required.**
# Update a webhook
Source: https://docs.magicmealkits.com/api-reference/webhooks/update-a-webhook
/api-reference/tiro/openapi.json patch /tiro/webhooks/{webhook_id}
Updates a webhook's name, URL, event types, or active state. **Pro license required.**
# YouTube
Source: https://docs.magicmealkits.com/api-reference/youtube/overview
Fetch YouTube transcripts and video metadata in the format your automation needs.
The YouTube group powers the **MMK YouTube Transcript** Make.com app. Identify a video by
either its full URL (`video_url`) or its 11-character ID (`video_id`), and get the
transcript back as XML, JSON, VTT, or SRT. All routes are `POST` under `/api/v1` and
authenticate with the `X-API-KEY` header (see [Authentication](/authentication)).
## Endpoints
| Endpoint | Tier | What it does |
| ----------------------------- | ------- | ----------------------------------------------------------------- |
| `POST /youtube/transcript/v2` | Basic | Get a video's transcript in `xml` / `json` / `vtt` / `srt` |
| `POST /youtube/metadata` | **Pro** | Get title, author, thumbnails, channel info, and view/like counts |
`youtube/metadata` requires a **Pro** license — a Basic key gets `403 Pro account required`.
The same applies to the `with_metadata` option on the transcript endpoint: the transcript
itself returns on Basic, but the `metadata` block is filled only for Pro keys (Basic sees
an upgrade placeholder). See [Authentication](/authentication).
## Notes
* **Pick one identifier.** Send either `video_url` or `video_id` — not both required.
* **Format** defaults to `xml`. Choose `json` for structured segments with start/duration,
or `srt` / `vtt` when you need subtitle files.
* **Rate limited.** Both endpoints are rate limited; space out bulk calls.
* **`retry_info`** in every response reports fetch attempts — useful when a transcript is
temporarily unavailable and you want to retry.
Use the interactive playground on each endpoint page to try a request with your own
deployment host and API key.
# CLI
Source: https://docs.magicmealkits.com/cli/overview
Install the mmk command-line tool and point it at your Magic Meal Kits deployment.
The **`mmk` CLI** wraps the most common Magic Meal Kits operations for the terminal — and
it's the foundation the [skills](/cli/skills) run on. This page covers **installing and
connecting** it; head to [Skills](/cli/skills) for ready-made automations.
The CLI is in **beta** (`0.x.y-beta`). Install with the `@beta` tag.
## Install
Install globally from npm (requires Node.js 18+):
```bash theme={null}
npm install -g @magic-meal-kits/cli@beta
```
Verify it's on your `PATH`:
```bash theme={null}
mmk --version
```
## Connect to your deployment
Point the CLI at the deployment that the installer created in **your** Google Cloud
project, then sign in:
```bash theme={null}
mmk config set server
mmk auth login
```
Your **server URL** and **API key** come from the Magic Meal Kits app status page — you
don't hand-craft them. See [Authentication](/authentication) for where to find them and
how the `X-API-KEY` header works.
Once connected, every command runs against your own server with your own key.
## Next
Install the MMK skills and drive Notion, Paymint, Threads, YouTube, and Plaud from
your agent.
Where the server URL and API key come from, plus license tiers.
# Skills
Source: https://docs.magicmealkits.com/cli/skills
Install the Magic Meal Kits skills and drive your deployment from any agent.
**MMK Skills** are ready-made automation commands that run on top of the
[`mmk` CLI](/cli/overview). Install them into your coding agent and you get slash
commands like `/mmk-notion` or `/mmk-paymint-send` that operate against *your* Magic Meal
Kits deployment — no glue code to write.
They're published in the open-source repo
[**magic-meal-kits/mmk-skills**](https://github.com/magic-meal-kits/mmk-skills) and work
with **Claude Code, Gemini CLI, OpenCode, Codex, Cursor, and 38+ other agents**.
The skills are in **beta** and evolve quickly. The repo is the source of truth for the
full, current catalog.
**Prerequisite:** install and connect the CLI first — see [CLI](/cli/overview)
(`npm install -g @magic-meal-kits/cli@beta`, then `mmk config set server …` and
`mmk auth login`). The skills call the CLI under the hood.
## Install the skills
Pick the command for your agent:
```bash Claude Code / OpenCode / Codex / Cursor theme={null}
npx skills add https://github.com/magic-meal-kits/mmk-skills
```
```bash Gemini CLI theme={null}
gemini extensions install https://github.com/magic-meal-kits/mmk-skills
```
```bash Claude Code plugin marketplace theme={null}
/plugin marketplace add magic-meal-kits/mmk-skills
```
You don't have to install everything. The repo also lets you add skills **by service**
or a **single sub-command** — see the README for the per-skill install paths.
## Use the skills
Once installed, type `/` in your agent to see the MMK commands, then run one:
```text theme={null}
/mmk-notion # work with Notion pages, databases, comments…
/mmk-paymint-send # send a Paymint payment request
/mmk-youtube-channel-summary # a multi-step recipe
```
The agent reads the skill, calls the CLI against your deployment, and reports back.
## Skills by service
A summary of what's available. See the
[repo](https://github.com/magic-meal-kits/mmk-skills) for the full command list.
| Service | \~Commands | Examples |
| ----------- | ---------- | --------------------------------------------------------------------------------------- |
| **Notion** | \~46 | `mmk-notion-page`, `mmk-notion-database`, `mmk-notion-comment`, `mmk-notion-meeting` |
| **Paymint** | \~7 | `mmk-paymint-send`, `mmk-paymint-status`, `mmk-paymint-cancel`, `mmk-paymint-bulk-send` |
| **Plaud** | \~25 | Audio recording / note / transcript management |
| **Threads** | \~3 | Collect and search Threads posts |
| **YouTube** | \~3 | Metadata and transcript extraction |
| **Recipes** | multi-step | `mmk-notion-onboard`, `mmk-paymint-notion-invoice`, `mmk-youtube-channel-summary` |
Browse every skill, its parameters, and the per-service install commands.
# Getting started
Source: https://docs.magicmealkits.com/guides/paymint/getting-started
Use this when you're setting up 결제선생 (Paymint) for the first time — sign up, pass the card-company review, connect it to Magic Meal Kits, and understand costs.
Paymint (**결제선생**) is a KakaoTalk 알림톡 simple-payment service. With Magic Meal Kits you
can build payment automations in Make — send invoices, confirm payments, cancel, and run
AutoPay. This guide takes a **new user** from signup to a working connection. For module and
endpoint details, see the [Paymint API reference](/api-reference/paymint/overview).
## 1. Sign up for 결제선생
Sign up at [payssam.kr](https://payssam.kr) with your **business** account. Your business
registration (사업자등록) must be complete first. Follow the official
[결제선생 회원가입 가이드](https://guide.payssam.kr/ko/articles/%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-2762f014).
Enter referral code **`3665900534`** during signup to receive **3,000 쌤포인트**.
## 2. Register your business & pass the card-company review
Card companies review each business before it can send payment requests. Submit **four
photos**:
* **Signboard** (간판)
* **Entrance** (입구)
* **Interior** (내부)
* **Products / items handled** (취급품목)
**Photo tips**
* **Shared office / no signboard:** substitute equivalent photos (e.g. the building/suite and
your workspace).
* **Home-based business:** include the road-name address sign and your entrance.
* **Products:** show your product or course page on a laptop screen and photograph that.
The review takes about **one week**. The card company may ask for additional or corrected
photos, which extends the timeline — submit clear photos up front.
## 3. Connect Paymint to Magic Meal Kits
Redeploy your server to the latest version first — see [Installation → Upgrading](/installation#upgrading-redeploy).
Install the Paymint Make.com app from the Magic Meal Kits Showcase.
Configure the Paymint connection with your account details. Connection setup and management
is centralized at
[make.magicmealkits.com/connections](https://make.magicmealkits.com/connections). See
[Authentication](/authentication) for the connection fields (MMK mode vs Traditional mode).
There are two onboarding paths:
* **General** — complete the **card-company review** above, then connect.
* **Magic Meal Kits partner-only** — a **separate application** after Magic Meal Kits signup.
## Costs
* Paymint runs on a **prepaid balance** — top it up from the Magic Meal Kits site whenever you
need.
* **Sending or resending** an invoice 알림톡 costs **₩70 per message**.
* **Cancel** and **balance/status lookups** are **not charged**.
* A small **overdraft is allowed**: sends keep working until your balance falls below about
**−₩2,100** (roughly 30 messages past zero), after which payment-sending calls are blocked
with `402` "Insufficient balance". Keep your balance topped up. See the
[API reference](/api-reference/paymint/overview).
## Running multiple businesses
* Each business uses its own **Payment Only** plan — buy one plan per additional business.
* You can register **up to 2 accounts per login**.
* **Apply the correct business to every module.** Mixing businesses across a flow fails — e.g.
sending an invoice from business A and then cancelling on business B will not work.
## Next steps
Module and endpoint details — send/resend invoices, confirm payments (the 결제확인 webhook
must return `{"code":"0000"}`), cancel, and AutoPay.
# Connect Claude (Web)
Source: https://docs.magicmealkits.com/mcp/connect-claude
Use this when you want to connect your Magic Meal Kits MCP server to Claude on the web (claude.ai) as a custom connector — sign in with OAuth, choose which tools to grant, and start using MMK tools in a chat.
Your Magic Meal Kits deployment runs its own **MCP server**, so Claude on the web
([claude.ai](https://claude.ai)) can call your MMK tools directly in a chat. This guide
covers the two ways to connect it as a **custom connector**:
* **OAuth (recommended)** — add just the `/mcp` URL, sign in with your Magic Meal Kits
account, and tick which tool groups Claude may use. No API key is placed in the URL.
* **API key (fallback)** — paste the `/mcp` URL with your API key as a query parameter.
Use this only if OAuth isn't available for your deployment.
OAuth connector login requires **Magic Meal Kits version 4.21.7 or later**. If your
deployment is older, redeploy to the latest version first (see
[Installation → Upgrading](/installation#upgrading-redeploy)) or use the API-key method
below. A Claude **Pro, Team, or Enterprise** plan is recommended for custom connectors.
## 1. Get your server URL
You'll need your deployment's **Service URL**.
Go to [make.magicmealkits.com/app-status](https://make.magicmealkits.com/app-status)
and find the **Connection & Access** section.
Copy your **SERVICE URL** (e.g. `https://magic-meal-kits-xxxx-uw.a.run.app`). Your MCP
endpoint is that URL plus `/mcp`. For the API-key method, also copy your **API KEY**.
See [Authentication](/authentication) for details.
## 2. Connect with OAuth (recommended)
In Claude, go to **Settings → Connectors → Add custom connector**. Paste your MCP
endpoint — the Service URL plus `/mcp` — and leave the URL **without** an API key:
```
https:///mcp
```
Give it a name (e.g. *Magic Meal Kits*) and add it.
Claude opens a Magic Meal Kits sign-in page. Log in with the **same account** you use at
[make.magicmealkits.com](https://make.magicmealkits.com). (Your server has no login of its
own — it hands sign-in and consent to the Magic Meal Kits app at
`make.magicmealkits.com/mcp/authorize`.)
A consent screen shows a checklist of **tool groups**. Tick only the ones this connector
needs — the connector is limited to exactly the groups you select (least privilege). See
[the tool groups](#tool-groups-scopes) below.
Click **Authorize**. Claude returns to Settings with the connector enabled. Open a **new
chat** and confirm the Magic Meal Kits tools appear in the tool list.
To change which tools a connector can use later, remove the connector in Claude and add it
again, granting a different set of tool groups.
## Tool groups (scopes)
On the consent screen you grant one or more of these groups. Each group unlocks its related
tools; leaving a group unchecked hides those tools from the connector.
| Group | What it grants |
| ------------------ | ---------------------------------- |
| **Plaud** | Voice notes, folders, transcripts |
| **Tiro** | Meeting notes & summaries |
| **Notion** | Page content & transcripts |
| **Threads** | Posts, replies & insights |
| **Threads data** | Collected posts search & analytics |
| **Paymint** | Payment invoices |
| **YouTube** | Transcripts & metadata |
| **PDF** | PDF info & conversion |
| **Slack** | Markdown → Block Kit conversion |
| **JavaScript** | Sandboxed JS execution |
| **JSON** | Extract JSON from text |
| **Date/Time** | ISO 8601 formatting |
| **Naver Commerce** | Smartstore orders |
Some groups (Threads, Plaud, Tiro, Paymint, Notion) also require the matching license tier
on your deployment. Groups you aren't licensed for simply return no tools even if granted.
## 3. Connect with an API key (fallback)
If OAuth isn't available, add the connector with your API key in the URL instead.
In Claude, go to **Settings → Connectors → Add custom connector**, set **Authentication**
to **None**, and paste:
```
https:///mcp?api_key=YOUR_API_KEY
```
Limit the exposed tools with the `tools` query parameter:
```
https:///mcp?api_key=YOUR_API_KEY&tools=pdf,youtube
```
Save the connector, then open a new chat to confirm the tools load.
With the API-key method your key is part of the URL and can appear in server request logs.
Prefer OAuth, and keep the key to a filtered tool set when you can.
## Next steps
Endpoints, tool filtering, and how the server MCP differs from the docs MCP.
# Docs as MCP
Source: https://docs.magicmealkits.com/mcp/docs-as-mcp
Point your LLM at these docs and vibe-code automations against your Magic Meal Kits server.
This documentation site is itself available as an **MCP server** and as `llms.txt`, so
an LLM can read and search the entire API reference while it writes your automation
code.
| Resource | URL |
| ------------ | ---------------------------------------------- |
| MCP endpoint | `https://docs.magicmealkits.com/mcp` |
| LLM index | `https://docs.magicmealkits.com/llms.txt` |
| Full text | `https://docs.magicmealkits.com/llms-full.txt` |
The docs MCP serves **documentation content** — it lets the model read and search this
reference. It does **not** proxy your server. The code the model writes calls your own
deployment's URL with your own API key.
## Add it to your client
**Claude Code**
```bash theme={null}
claude mcp add --transport http mmk-docs https://docs.magicmealkits.com/mcp
```
**Claude Desktop / Cursor** — add an MCP server entry pointing at
`https://docs.magicmealkits.com/mcp`.
## Then vibe-code
Ask your model something like:
> Using the Magic Meal Kits docs, write a script that pulls a YouTube transcript and
> posts a summary to my Notion database. My server is `https://magic-meal-kits-xxxxx.run.app`.
The model reads this reference over MCP, finds the right endpoints, and writes code
that calls *your* deployment.
**Skeleton page.** Add concrete recipes (Notion sync, Threads analytics, transcription
pipeline) once the API Reference pages exist.
# MCP Overview
Source: https://docs.magicmealkits.com/mcp/overview
Connect the Magic Meal Kits server's MCP tools to an MCP client.
Your Magic Meal Kits deployment exposes an **MCP (Model Context Protocol)** server, so
an LLM client can call MMK tools directly — PDF and YouTube extraction, JavaScript
execution, Markdown → Slack conversion, date parsing, and (by tier) Threads, Plaud,
Tiro, Paymint, and Notion tools.
Two different MCP servers are in play, don't confuse them:
* **This page** — your *server's* MCP at `https:///mcp`, which runs
actions against your MMK deployment.
* [Docs as MCP](/mcp/docs-as-mcp) — the *documentation* MCP at
`https://docs.magicmealkits.com/mcp`, which lets an LLM read this reference.
## Connecting
| Client | How |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Claude.ai (Web)** | Settings → Connectors → Add custom connector → `https:///mcp`, sign in with OAuth & pick tool groups. See [Connect Claude (Web)](/mcp/connect-claude). |
| **Claude Code** | `claude mcp add` or `.mcp.json`, header `X-API-KEY: YOUR_API_KEY` |
| **Cursor / other** | Add the same `/mcp` URL with an API-key header |
Connecting Claude on the web? [Connect Claude (Web)](/mcp/connect-claude) is a full
step-by-step walkthrough of the OAuth connector flow and how to choose which tools to grant.
## Endpoints
| Endpoint | Auth | Description |
| --------------------- | -------- | --------------------------- |
| `POST /mcp` | Required | Main JSON-RPC endpoint |
| `GET /mcp` | Required | Server info / SSE streaming |
| `GET /mcp/health` | None | Health check |
| `GET /mcp/categories` | None | List tool categories |
## Tool filtering
Limit exposed tools with the `tools` query parameter:
```
/mcp?tools=pdf,youtube # by category
/mcp?tools=pdf_info,youtube_transcript # by specific tool
/mcp # all tools (default)
```
**Looking for ready-made automations?** The [MMK Skills](/cli/skills) give your agent
slash commands (`/mmk-notion`, `/mmk-paymint-send`, …) for the most common operations —
install them once and skip writing glue code.