Location
| Constraint | Value |
|---|---|
| Protocol | HTTPS required (HTTP allowed for localhost in development only) |
| Timeout | 10 seconds |
| Maximum size | 10 KB |
| Maximum redirects | 3 |
Top-level structure
Use theframe key. It is the Farcaster standard, so a single farcaster.json file works on Startale, Farcaster, and Base without rename.
Startale-specific fields (featuredBannerImageUrl, projectWebsite, socialLinks, screenCompatibility) live under a root-level startale key, sibling to frame.
Required fields
Validated automatically
The manifest parser rejects any manifest missing these three fields:| Field | Type | Constraints |
|---|---|---|
frame.name | string | Display name. Recommended ≤32 chars. |
frame.iconUrl | string | App icon. See Media specs. |
frame.homeUrl | string | HTTPS launch URL. Recommended ≤1024 chars. |
Required for submission review
The following fields are not parser-enforced but are required for your Mini App to pass review, appear correctly in the explorer, and qualify for featured placement. A manifest missing any of these will be rejected during manual review.| Field | Type | Notes |
|---|---|---|
frame.version | string | Must be "1" |
frame.primaryCategory | string | One value from Categories. |
frame.heroImageUrl | string | Image shown on the app grid card. |
startale.featuredBannerImageUrl | string | Featured rotation banner at the top of the explorer. |
startale.screenCompatibility.desktop | boolean | true = full browser on desktop; false = default 424×695 px portrait frame. Omitting it shows a Missing flag in the validator. |
Optional fields
| Field | Type | Notes |
|---|---|---|
frame.tagline | string | One-line pitch shown on the app card. Max 30 chars. |
frame.splashImageUrl | string | Centered icon on the loading screen. 200×200px, PNG/JPG/WebP, max 50KB. |
frame.splashBackgroundColor | string | Hex color for the splash background. |
frame.tags | string[] | Up to 5 tags, lowercase alphanumeric + hyphens, ≤20 chars each. Used for explorer search and filtering. |
frame.webhookUrl | string | Notification endpoint. Required for push notifications. |
startale.manifestVersion | string | Startale manifest spec version. Use "2.3" for new manifests. |
startale.projectWebsite | string | HTTPS URL to your main project site. |
startale.socialLinks | object | Object with twitter, discord, telegram, farcaster, website keys. |
startale.screenCompatibility.landscapeOnly | boolean | When true, content rotates 90° when the viewport is portrait. Default false. |
URL rules
Every URL in the manifest is validated. Failures reject the manifest.| Rule | Detail |
|---|---|
| Protocol | HTTPS required. HTTP only for localhost and 127.0.0.1 in development. |
| Private IPv4 ranges blocked | 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16, 198.18.0.0/15, 240.0.0.0/4 |
| Private IPv6 ranges blocked | Loopback (::1), link-local (fe80::/10), unique local (fc00::/7) |
| Localhost in production | Blocked |
Banner fallback chain
When the Startale App displays your banner, it tries fields in this priority order:startale.featuredBannerImageUrlframe.imageUrlframe.heroImageUrlframe.splashImageUrlframe.iconUrl
featuredBannerImageUrl (2400×1260 px) for the best result.
Reusing a Farcaster or Base manifest
If your Mini App is already live on Farcaster or Base, your existingfarcaster.json works on Startale unchanged. Add a root-level startale key (sibling to frame) with the Startale-specific fields (featuredBannerImageUrl, projectWebsite, socialLinks, screenCompatibility). A single file works on all three platforms.