{"frameapi":"1.0.0","info":{"title":"FrameAPI","version":"1.0.0","description":"FrameAPI — Framelab’s public read API for builds, fashions, and Warframe catalog. Auth optional; API keys raise rate limits."},"servers":[{"url":"https://framelab-app.thefrenchies.org"}],"tags":[{"name":"builds","description":"docsApi.tags.buildsBody"},{"name":"fashions","description":"docsApi.tags.fashionsBody"},{"name":"catalog","description":"docsApi.tags.catalogBody"},{"name":"meta","description":"docsApi.tags.metaBody"}],"paths":{"/api/v1/builds":{"get":{"operationId":"builds-list","tags":["builds"],"summary":"docsApi.ops.buildsList.summary","description":"docsApi.ops.buildsList.description","parameters":[{"name":"q","in":"query","required":false,"description":"docsApi.params.q","schema":{"type":"string"},"example":"saryn"},{"name":"page","in":"query","required":false,"description":"docsApi.params.page","schema":{"type":"integer"},"example":"1"},{"name":"limit","in":"query","required":false,"description":"docsApi.params.limit","schema":{"type":"integer"},"example":"20"},{"name":"sort","in":"query","required":false,"description":"docsApi.params.buildSort","schema":{"type":"string","enum":["newest","trending","top","updated"]},"example":"trending"},{"name":"category","in":"query","required":false,"description":"docsApi.params.category","schema":{"type":"string"},"example":"warframes"},{"name":"item","in":"query","required":false,"description":"docsApi.params.itemUniqueName","schema":{"type":"string"},"example":"/Lotus/Powersuits/Saryn/Saryn"},{"name":"hasNotes","in":"query","required":false,"description":"docsApi.params.hasNotes","schema":{"type":"boolean"}},{"name":"hasShards","in":"query","required":false,"description":"docsApi.params.hasShards","schema":{"type":"boolean"}},{"name":"hasHelminth","in":"query","required":false,"description":"docsApi.params.hasHelminth","schema":{"type":"boolean"}},{"name":"gameVersion","in":"query","required":false,"description":"docsApi.params.gameVersion","schema":{"type":"string"},"example":"39.0.0"},{"name":"role","in":"query","required":false,"description":"docsApi.params.role","schema":{"type":"string"},"example":"nuke"}],"responses":{"200":{"description":"docsApi.responses.buildList","content":{"application/json":{"example":{"items":[{"id":"bld_demo","slug":"saryn-steel-path","name":"Steel Path Saryn","description":null,"profileId":"usr_demo","itemUniqueName":"/Lotus/Powersuits/Saryn/Saryn","itemCategory":"warframes","itemName":"Saryn Prime","itemImageName":"sarynprime.png","visibility":"PUBLIC","videoUrl":null,"hasShards":true,"hasNotes":true,"hasHelminth":false,"formaCount":5,"gameVersion":"39.0.0","roles":["nuke"],"likeCount":42,"ratingCount":12,"ratingAvg":4.6,"saveCount":18,"viewCount":1200,"commentCount":3,"createdAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-02-01T18:30:00.000Z","author":{"id":"usr_demo","username":"tenno","name":"Tenno","image":null,"avatarKey":null,"avatarFrameKey":null,"isAdmin":false,"isVerified":true},"group":null,"likedByMe":false,"myRating":null,"savedByMe":false,"hasLoadout":true}],"page":1,"limit":5,"total":1,"totalPages":1}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/builds/{slug}":{"get":{"operationId":"builds-detail","tags":["builds"],"summary":"docsApi.ops.buildsDetail.summary","description":"docsApi.ops.buildsDetail.description","parameters":[{"name":"slug","in":"path","required":true,"description":"docsApi.params.buildSlug","schema":{"type":"string"},"example":"saryn-steel-path"}],"responses":{"200":{"description":"docsApi.responses.buildDetail","content":{"application/json":{"example":{"id":"bld_demo","slug":"saryn-steel-path","name":"Steel Path Saryn","description":null,"profileId":"usr_demo","itemUniqueName":"/Lotus/Powersuits/Saryn/Saryn","itemCategory":"warframes","itemName":"Saryn Prime","itemImageName":"sarynprime.png","visibility":"PUBLIC","videoUrl":null,"hasShards":true,"hasNotes":true,"hasHelminth":false,"formaCount":5,"gameVersion":"39.0.0","roles":["nuke"],"likeCount":42,"ratingCount":12,"ratingAvg":4.6,"saveCount":18,"viewCount":1200,"commentCount":3,"createdAt":"2026-01-15T12:00:00.000Z","updatedAt":"2026-02-01T18:30:00.000Z","author":{"id":"usr_demo","username":"tenno","name":"Tenno","image":null,"avatarKey":null,"avatarFrameKey":null,"isAdmin":false,"isVerified":true},"group":null,"likedByMe":false,"myRating":null,"savedByMe":false,"hasLoadout":true,"buildData":{"itemUniqueName":"/Lotus/Powersuits/Saryn/Saryn","variants":[]},"postAnonymously":false,"catalogVersion":"2026.02.01","canEdit":false,"loadout":null,"signedAssets":{}}}}},"404":{"description":"docsApi.responses.buildNotFound","content":{"application/json":{"example":{"statusCode":404,"statusMessage":"Not found"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/fashions":{"get":{"operationId":"fashions-list","tags":["fashions"],"summary":"docsApi.ops.fashionsList.summary","description":"docsApi.ops.fashionsList.description","parameters":[{"name":"q","in":"query","required":false,"description":"docsApi.params.q","schema":{"type":"string"},"example":"ember"},{"name":"warframe","in":"query","required":false,"description":"docsApi.params.warframeFilter","schema":{"type":"string"},"example":"ember-prime"},{"name":"sort","in":"query","required":false,"description":"docsApi.params.fashionSort","schema":{"type":"string","enum":["newest","trending","top"]},"example":"newest"},{"name":"page","in":"query","required":false,"description":"docsApi.params.page","schema":{"type":"integer"},"example":"1"},{"name":"limit","in":"query","required":false,"description":"docsApi.params.limit","schema":{"type":"integer"},"example":"24"}],"responses":{"200":{"description":"docsApi.responses.fashionList","content":{"application/json":{"example":{"fashions":[{"id":"fsh_demo","slug":"ember-emberglow","name":"Emberglow","description":"Warm ember palette","visibility":"PUBLIC","warframeUniqueName":"/Lotus/Powersuits/Ember/Ember","warframeName":"Ember Prime","warframeImageName":"emberprime.png","likeCount":20,"pinCount":4,"viewCount":500,"createdAt":"2026-01-20T10:00:00.000Z","updatedAt":"2026-01-22T10:00:00.000Z","kind":"warframe","previewPhotoUrl":null,"colorPicks":[],"author":{"id":"usr_demo","username":"tenno","name":"Tenno","image":null,"avatarKey":null,"avatarFrameKey":null,"isAdmin":false,"isVerified":true}}],"page":1,"limit":24,"total":1,"totalPages":1}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/fashions/{slug}":{"get":{"operationId":"fashions-detail","tags":["fashions"],"summary":"docsApi.ops.fashionsDetail.summary","description":"docsApi.ops.fashionsDetail.description","parameters":[{"name":"slug","in":"path","required":true,"description":"docsApi.params.fashionSlug","schema":{"type":"string"},"example":"ember-emberglow"}],"responses":{"200":{"description":"docsApi.responses.fashionDetail","content":{"application/json":{"example":{"id":"fsh_demo","slug":"ember-emberglow","name":"Emberglow","description":"Warm ember palette","visibility":"PUBLIC","warframeUniqueName":"/Lotus/Powersuits/Ember/Ember","warframeName":"Ember Prime","warframeImageName":"emberprime.png","likeCount":20,"pinCount":4,"viewCount":500,"createdAt":"2026-01-20T10:00:00.000Z","updatedAt":"2026-01-22T10:00:00.000Z","kind":"warframe","previewPhotoUrl":null,"colorPicks":[],"author":{"id":"usr_demo","username":"tenno","name":"Tenno","image":null,"avatarKey":null,"avatarFrameKey":null,"isAdmin":false,"isVerified":true},"lookData":{"kind":"warframe","slots":{}},"canEdit":false,"signedAssets":{}}}}},"404":{"description":"docsApi.responses.fashionNotFound","content":{"application/json":{"example":{"statusCode":404,"statusMessage":"Not found"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/fashions/{slug}/links":{"get":{"operationId":"fashions-links","tags":["fashions"],"summary":"docsApi.ops.fashionsLinks.summary","description":"docsApi.ops.fashionsLinks.description","parameters":[{"name":"slug","in":"path","required":true,"description":"docsApi.params.fashionSlug","schema":{"type":"string"},"example":"ember-emberglow"}],"responses":{"200":{"description":"docsApi.responses.fashionLinks","content":{"application/json":{"example":{"fashion":{"slug":"ember-emberglow","name":"Emberglow","warframeName":"Ember Prime"},"links":[{"role":"primary","build":{"slug":"ignis-wraith-sp","name":"Ignis SP","itemName":"Ignis Wraith","itemImageName":"igniswraith.png","visibility":"PUBLIC"}}]}}}},"404":{"description":"docsApi.responses.fashionNotFound","content":{"application/json":{"example":{"statusCode":404,"statusMessage":"Not found"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/warframe/browse":{"get":{"operationId":"warframe-browse","tags":["catalog"],"summary":"docsApi.ops.browse.summary","description":"docsApi.ops.browse.description","parameters":[],"responses":{"200":{"description":"docsApi.responses.browse","content":{"application/json":{"example":{"index":{"warframes":[{"uniqueName":"/Lotus/Powersuits/Saryn/Saryn","name":"Saryn Prime","slug":"saryn-prime","category":"warframes","isPrime":true}]},"manifest":{"generatedAt":"2026-02-01T00:00:00.000Z"},"version":"2026.02.01"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/warframe/search":{"get":{"operationId":"warframe-search","tags":["catalog"],"summary":"docsApi.ops.search.summary","description":"docsApi.ops.search.description","parameters":[{"name":"q","in":"query","required":false,"description":"docsApi.params.q","schema":{"type":"string"},"example":"saryn"},{"name":"category","in":"query","required":false,"description":"docsApi.params.category","schema":{"type":"string"},"example":"warframes"},{"name":"limit","in":"query","required":false,"description":"docsApi.params.limit","schema":{"type":"integer"},"example":"24"},{"name":"sort","in":"query","required":false,"description":"docsApi.params.catalogSort","schema":{"type":"string","enum":["name-asc","name-desc","date-desc","date-asc"]},"example":"name-asc"},{"name":"prime","in":"query","required":false,"description":"docsApi.params.primeOnly","schema":{"type":"boolean"}},{"name":"hideVaulted","in":"query","required":false,"description":"docsApi.params.hideVaulted","schema":{"type":"boolean"}}],"responses":{"200":{"description":"docsApi.responses.search","content":{"application/json":{"example":{"items":[{"uniqueName":"/Lotus/Powersuits/Saryn/Saryn","name":"Saryn Prime","slug":"saryn-prime","category":"warframes","isPrime":true}],"count":1,"total":1,"limit":24,"version":"2026.02.01"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/warframe/items/{category}/{slug}":{"get":{"operationId":"warframe-item","tags":["catalog"],"summary":"docsApi.ops.item.summary","description":"docsApi.ops.item.description","parameters":[{"name":"category","in":"path","required":true,"description":"docsApi.params.category","schema":{"type":"string"},"example":"warframes"},{"name":"slug","in":"path","required":true,"description":"docsApi.params.itemSlug","schema":{"type":"string"},"example":"saryn-prime"}],"responses":{"200":{"description":"docsApi.responses.item","content":{"application/json":{"example":{"item":{"name":"Saryn Prime","uniqueName":"/Lotus/Powersuits/Saryn/Saryn","category":"warframes","health":270,"shield":270,"armor":315,"power":300},"version":"2026.02.01"}}}},"404":{"description":"docsApi.responses.itemNotFound","content":{"application/json":{"example":{"statusCode":404,"statusMessage":"Not found"}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/warframe/mods":{"get":{"operationId":"warframe-mods","tags":["catalog"],"summary":"docsApi.ops.mods.summary","description":"docsApi.ops.mods.description","parameters":[{"name":"category","in":"query","required":false,"description":"docsApi.params.modCategory","schema":{"type":"string"},"example":"warframes"},{"name":"slug","in":"query","required":false,"description":"docsApi.params.itemSlug","schema":{"type":"string"},"example":"saryn-prime"},{"name":"pools","in":"query","required":false,"description":"docsApi.params.modPools","schema":{"type":"string"},"example":"warframe,aura"},{"name":"search","in":"query","required":false,"description":"docsApi.params.modSearch","schema":{"type":"string"},"example":"intensify"},{"name":"rarity","in":"query","required":false,"description":"docsApi.params.modRarity","schema":{"type":"string"},"example":"RARE"},{"name":"polarity","in":"query","required":false,"description":"docsApi.params.modPolarity","schema":{"type":"string"},"example":"madurai"},{"name":"conclave","in":"query","required":false,"description":"docsApi.params.modConclave","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"docsApi.params.modSort","schema":{"type":"string"},"example":"name"}],"responses":{"200":{"description":"docsApi.responses.mods","content":{"application/json":{"example":{"mods":[{"name":"Intensify","rarity":"RARE","polarity":"madurai"}],"version":"2026.02.01","count":1}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/v1/warframe/cosmetics":{"get":{"operationId":"warframe-cosmetics","tags":["catalog"],"summary":"docsApi.ops.cosmetics.summary","description":"docsApi.ops.cosmetics.description","parameters":[{"name":"warframe","in":"query","required":false,"description":"docsApi.params.warframeFilter","schema":{"type":"string"},"example":"ember-prime"}],"responses":{"200":{"description":"docsApi.responses.cosmetics","content":{"application/json":{"example":{"helmets":[{"uniqueName":"/Lotus/Upgrades/Skins/Ember/EmberHelmet","name":"Ember Helmet"}],"skins":[],"attachments":[]}}}},"429":{"description":"docsApi.responses.rateLimited","content":{"application/json":{"example":{"statusCode":429,"statusMessage":"Too Many Requests"}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}},"/api/oembed":{"get":{"operationId":"oembed","tags":["meta"],"summary":"docsApi.ops.oembed.summary","description":"docsApi.ops.oembed.description","parameters":[{"name":"url","in":"query","required":true,"description":"docsApi.params.oembedUrl","schema":{"type":"string"},"example":"https://framelab.app/builds/saryn-steel-path"},{"name":"maxwidth","in":"query","required":false,"description":"docsApi.params.oembedMaxWidth","schema":{"type":"integer"}},{"name":"maxheight","in":"query","required":false,"description":"docsApi.params.oembedMaxHeight","schema":{"type":"integer"}},{"name":"format","in":"query","required":false,"description":"docsApi.params.oembedFormat","schema":{"type":"string","enum":["json"]},"example":"json"}],"responses":{"200":{"description":"docsApi.responses.oembed","content":{"application/json":{"example":{"type":"rich","version":"1.0","title":"Steel Path Saryn","provider_name":"Framelab","author_name":"tenno","html":"<iframe …></iframe>"}}}},"404":{"description":"docsApi.responses.notFound","content":{"application/json":{"example":{"statusCode":404,"statusMessage":"Not found"}}}}},"security":[]}},"/api/v1/frameapi.json":{"get":{"operationId":"frameapi","tags":["meta"],"summary":"docsApi.ops.frameapi.summary","description":"docsApi.ops.frameapi.description","parameters":[],"responses":{"200":{"description":"docsApi.responses.frameapi","content":{"application/json":{"example":{"frameapi":"1.0.0","info":{"title":"FrameAPI","version":"1.0.0"},"paths":{}}}}}},"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}]}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"fl_","description":"Authorization: Bearer fl_…"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"X-Api-Key: fl_…"}}}}