app.startale.com that opens your Mini App directly, no feed or preview card involved. Typed in a browser, tapped from a Missions CTA, or shared in a chat, it loads the Startale App straight to your Mini App.
Format
appId is read up to the first / or ? in the fragment; everything from that character on is relativeUrl, passed through unmodified (including its own nested / or ? characters, e.g. ?path=/a/b).
Resolving the target
relativeUrl is resolved against your Mini App’s home URL, not treated as a full URL:
- A path (
/...) resolves under your home’s base path. If your home URL ishttps://your-app.com/x,/collections/123resolves tohttps://your-app.com/x/collections/123. The base path is always kept, it is never replaced. - A query (
?...) leaves the path untouched and only affects the query string. - Your home URL’s own query params are preserved. If your home URL is
https://your-app.com/?lang=ja, a deep link to/tokens/1resolves tohttps://your-app.com/tokens/1?lang=ja. - A deep-link param wins on key collision.
?lang=enagainst a home URL ofhttps://your-app.com/?lang=jaresolves to?lang=en, not both. - Resolution uses the viewer’s own edition of your home URL. If your manifest declares a
jpUrl, a Japan-edition viewer resolvesrelativeUrlagainstjpUrl(base path and query included); a Global-edition viewer resolves it against your defaulthomeUrl. The same shared link produces the correct edition-specific URL for whoever opens it, you do not need separate deep links per edition.
Only
/... or ?... is accepted. A bare foo/bar is rejected (it would resolve as a sibling of your home path under standard URL parent-directory rules, not a child of it) and the deep link opens your Mini App’s home instead. Always start relativeUrl with / or ?.Security: same-origin only
A deep link can never point your Mini App’s iframe at a different origin. The relative URL is rejected (falls back to home) if it would:- Resolve to a different origin than your home URL (
https://evil.com/...,//evil.com/..., and other Startale App browser origin-confusion payloads such as/\evil.comall fail this check). - Escape your home’s base path via
..(e.g./../secretagainst a home path of/x). - Fail to parse as a URL at all.
Getting your app id
You do not choose your Mini App’sappId. It is assigned by the Startale team when your Mini App is registered, as part of onboarding, alongside your referral code. See Submission for how a Mini App gets listed.
If your project is later renamed, reach out to the Startale team rather than assuming your existing deep links keep working under a new id; legacy ids are kept working only where an alias has been explicitly set up for that rename.
Deep links and notification tap destinations
Notifications V1’stargetUrl (see Notifications) also lands a tap on a specific screen in your Mini App, but it does not go through this page’s format. The two only intersect in one narrow case:
- With a valid, same-origin
targetUrl: tapping Open Mini App opens your Mini App inline, right on the notifications screen, loaded directly at that absolute URL. This never touches#appId<relativeUrl>at all, it’s a structurally separate code path. - Without a
targetUrl(not set, or its origin doesn’t match your registered home URL): tapping Open Mini App navigates to#appId, this page’s format, but always in its plain, home-only form. There is norelativeUrlin this fallback, it cannot land the user on a specific screen, only your home.
Building a
targetUrl doesn’t give you relativeUrl support and vice versa: these are two independent mechanisms that happen to both end up rendering inside the same AppSheet surface.
Linking to another Mini App from inside yours
There is no dedicated SDK action for “open a different Mini App,” but you can get there today by combining two things that already exist:sdk.actions.openUrl and a deep link. Point openUrl at another Mini App’s deep link instead of an external URL:
openUrl doesn’t treat app.startale.com specially, it opens whatever http(s) URL you give it in a new browser tab. Because that tab loads the Startale App fresh, the deep link resolves normally on load and the user lands on that exact CoNFT screen. There is no registration or allowlist check on the target beyond what deep linking itself already enforces (the target appId must be a registered Mini App, see Getting your app id), so this works for linking to any Mini App, including your own.
This opens a new tab, it does not hand off in place. The linking Mini App’s own iframe is left running in the background tab; there is currently no “swap to app B, then back to app A where you left off” navigation. If you need that instead of a new tab, talk to the Startale team, it’s a different, not-yet-built capability.