In short
Every MiniApp binds to one healthy bot. Create with BotFather /newapp; manage with /myapps. Direct link shape: https://mp.net/{botUsername}/{shortName}, optional ?startapp=.
Overview
Registration lives in BotFather. Opening from messages still uses inline / menu web_app rules on core.mp.net/bots.
Prerequisite
You need a bot in a normal (active) state first.
Each MiniApp is owned by exactly one bot.
/newapp steps
Choose the bot.
Name (English).
Description (English).
Link image 640×360.
URL — must be HTTPS.
shortName — unique under that bot.
Direct link after create
You get https://mp.net/{botUsername}/{shortName}. Deep-link into a screen with ?startapp=report_0528 (value flows to signed initData.start_param / frontend startParam). Do not bake startapp into the MiniApp entryUrl itself; put it on the direct link or button web_app.url.
https://mp.net/MyBot/shop
https://mp.net/MyBot/shop?startapp=report_0528
/myapps management
Edit title, description, link image, and URL.
Delete requires a second confirmation (same seriousness as deleting a bot).
Navigate back to the list when done.
After remove / take-down
Existing direct links and buttons follow the user-facing “MiniApp removed” experience (no productive actions; close only). Update or stop sending those URLs from your bot.
Client return still closed
web_app_data / sendData / answerWebAppQuery remain unavailable. Prefer message callbacks or server-side edits after the user finishes in the MiniApp.
Related
MiniApp identifiers, direct links, and startapp
BotFather guide (description & picture)
Inline keyboard web_app buttons
