{"openapi":"3.1.0","info":{"title":"MegaLaunch API","version":"1.0.0","summary":"Read-only access to the products published on MegaLaunch.","description":"Search the products independent makers publish on MegaLaunch, read one product, the categories, the latest launches, the vote leaderboard and the frozen daily podiums. No key needed, 60 requests per minute per IP address, at most 20 items per call. Results never include sponsored placements and paid options never change votes or rankings. When you display a product, link to its megalaunchUrl.","termsOfService":"https://megalaun.ch/terms","contact":{"name":"Matt","url":"https://megalaun.ch/contact"}},"externalDocs":{"description":"API documentation","url":"https://megalaun.ch/api-docs"},"servers":[{"url":"https://megalaun.ch/api/v1"}],"paths":{"/products":{"get":{"operationId":"searchProducts","summary":"Search published products","description":"Text search over the name, tagline and description, with optional category, pricing and platform filters (platform ios or android for mobile apps). Newest first, or most voted first.","parameters":[{"name":"q","in":"query","required":false,"description":"Words to look for in the product name, tagline and description.","schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"category","in":"query","required":false,"description":"Category slug, as listed by the categories endpoint (list_categories tool).","schema":{"type":"string","pattern":"^[a-z0-9-]{1,80}$"}},{"name":"pricing","in":"query","required":false,"description":"Pricing model of the product.","schema":{"type":"string","enum":["free","freemium","paid","subscription","one-time"]}},{"name":"platform","in":"query","required":false,"description":"Only products that run on this platform, as declared by their maker. Use ios or android for mobile apps.","schema":{"type":"string","enum":["web","ios","android","macos","windows","linux","browser-extension","api","cli","mcp"]}},{"name":"sort","in":"query","required":false,"description":"newest: latest publication first. votes: most voted first (one vote per person), then the earliest publication.","schema":{"default":"newest","type":"string","enum":["newest","votes"]}},{"name":"limit","in":"query","required":false,"description":"Number of results, 1 to 20.","schema":{"default":10,"type":"integer","minimum":1,"maximum":20}},{"name":"cursor","in":"query","required":false,"description":"nextCursor of the previous response, to read the next page.","schema":{"type":"string","minLength":1,"maxLength":64}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}},"/products/{slug}":{"get":{"operationId":"getProduct","summary":"One published product","description":"The public details of one product, by slug.","parameters":[{"name":"slug","in":"path","required":true,"description":"Product slug, the last part of its megalaunchUrl (a full megalaun.ch product URL also works).","schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductDetail"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}},"/categories":{"get":{"operationId":"listCategories","summary":"Categories","description":"Every category with its published product count, most populated first.","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}},"/launches":{"get":{"operationId":"latestLaunches","summary":"Latest launches","description":"Products published in the last days (UTC, today included), newest first, optionally in one category or on one platform.","parameters":[{"name":"days","in":"query","required":false,"description":"Look back this many UTC days, today included (1 to 30).","schema":{"default":7,"type":"integer","minimum":1,"maximum":30}},{"name":"category","in":"query","required":false,"description":"Category slug, as listed by the categories endpoint (list_categories tool).","schema":{"type":"string","pattern":"^[a-z0-9-]{1,80}$"}},{"name":"platform","in":"query","required":false,"description":"Only products that run on this platform, as declared by their maker. Use ios or android for mobile apps.","schema":{"type":"string","enum":["web","ios","android","macos","windows","linux","browser-extension","api","cli","mcp"]}},{"name":"limit","in":"query","required":false,"description":"Number of results, 1 to 20.","schema":{"default":10,"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Launches"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}},"/leaderboard":{"get":{"operationId":"leaderboard","summary":"Leaderboard","description":"Products ranked by directory votes (one per person) for a UTC period, ties to the earliest publication: the ranking of /leaderboard.","parameters":[{"name":"period","in":"query","required":false,"description":"today (UTC day), week (ISO week, Monday to Sunday, UTC), month (UTC calendar month) or all (all time).","schema":{"default":"today","type":"string","enum":["today","week","month","all"]}},{"name":"limit","in":"query","required":false,"description":"Number of results, 1 to 20.","schema":{"default":10,"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Leaderboard"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}},"/awards":{"get":{"operationId":"awards","summary":"Daily podiums","description":"The frozen Top 3 of each UTC day, newest day first.","parameters":[{"name":"limit","in":"query","required":false,"description":"Number of past UTC days with a frozen podium, newest first (1 to 30).","schema":{"default":7,"type":"integer","minimum":1,"maximum":30}}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Awards"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/Unavailable"}}}}},"components":{"schemas":{"Product":{"type":"object","additionalProperties":false,"required":["slug","name","tagline","description","megalaunchUrl","websiteUrl","domain","logoUrl","category","pricing","platforms","links","tags","verified","community","awards","publishedAt","updatedAt"],"properties":{"slug":{"type":"string","examples":["forma"]},"name":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"megalaunchUrl":{"type":"string","format":"uri","description":"The product page on MegaLaunch. Link to it when you display the product."},"websiteUrl":{"anyOf":[{"type":"string","format":"uri","description":"The product website, as linked from its MegaLaunch page."},{"type":"null"}]},"domain":{"anyOf":[{"type":"string","examples":["example.com"]},{"type":"null"}]},"logoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"category":{"anyOf":[{"type":"object","additionalProperties":false,"required":["slug","name"],"properties":{"slug":{"type":"string"},"name":{"type":"string"}}},{"type":"null"}]},"pricing":{"type":"object","additionalProperties":false,"required":["type"],"properties":{"type":{"type":"string","enum":["free","freemium","paid","subscription","one-time"]}}},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["web","ios","android","macos","windows","linux","browser-extension","api","cli","mcp"]},"description":"Where the product runs, as declared by its maker. Empty when unknown. A product with ios or android is a mobile app."},"links":{"type":"object","additionalProperties":false,"required":["appStore","playStore"],"description":"Official store pages, each set only when its platform (ios, android) is listed.","properties":{"appStore":{"anyOf":[{"type":"string","format":"uri","pattern":"^https:\\/\\/apps\\.apple\\.com\\/[^\\s]+$"},{"type":"null"}]},"playStore":{"anyOf":[{"type":"string","format":"uri","pattern":"^https:\\/\\/play\\.google\\.com\\/store\\/apps\\/[^\\s]+$"},{"type":"null"}]}}},"tags":{"type":"array","items":{"type":"string"}},"verified":{"type":"boolean","description":"Premium launch label. Never a ranking factor."},"community":{"type":"object","additionalProperties":false,"required":["votes","comments"],"properties":{"votes":{"type":"integer","minimum":0,"description":"Directory votes, one per person."},"comments":{"type":"integer","minimum":0}}},"awards":{"type":"array","description":"Frozen daily podium places (Top 3 of a UTC day), newest first.","items":{"type":"object","additionalProperties":false,"required":["period","date","rank"],"properties":{"period":{"type":"string","enum":["day"]},"date":{"type":"string","format":"date"},"rank":{"type":"integer","minimum":1,"maximum":3}}}},"publishedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Category":{"type":"object","additionalProperties":false,"required":["slug","name","description","productCount","megalaunchUrl"],"properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"productCount":{"type":"integer","minimum":0,"description":"Published products."},"megalaunchUrl":{"type":"string","format":"uri"}}},"RankedProduct":{"type":"object","additionalProperties":false,"required":["rank","votes","product"],"properties":{"rank":{"type":"integer","minimum":1},"votes":{"type":"integer","minimum":0},"product":{"$ref":"#/components/schemas/Product"}}},"PodiumDay":{"type":"object","additionalProperties":false,"required":["date","podium"],"properties":{"date":{"type":"string","format":"date","description":"UTC day, closed at midnight UTC."},"podium":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["rank","votes","product"],"properties":{"rank":{"type":"integer","minimum":1},"votes":{"type":"integer","minimum":0,"description":"Votes frozen at the close."},"product":{"$ref":"#/components/schemas/Product"}}}}}},"ProductList":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Product"}},"nextCursor":{"anyOf":[{"type":"string","description":"Pass it as cursor for the next page."},{"type":"null"}]}}},"ProductDetail":{"type":"object","required":["product"],"properties":{"product":{"$ref":"#/components/schemas/Product"}}},"CategoryList":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}},"Launches":{"type":"object","required":["days","items"],"properties":{"days":{"type":"integer"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}}},"Leaderboard":{"type":"object","required":["period","items"],"properties":{"period":{"type":"string","enum":["today","week","month","all"]},"items":{"type":"array","items":{"$ref":"#/components/schemas/RankedProduct"}}}},"Awards":{"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PodiumDay"}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request","not_found","rate_limited","internal_error"]},"message":{"type":"string"}}}}}},"responses":{"BadRequest":{"description":"Invalid parameter (code invalid_request).","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Unknown product slug (code not_found).","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"More than 60 requests in a minute (code rate_limited).","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."},"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unavailable":{"description":"Data temporarily unavailable (code internal_error).","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests allowed per minute."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"End of the current window, in seconds since the epoch."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}