{"openapi":"3.1.0","info":{"title":"Fortnite API (BYOK) API","version":"0.1.0","description":"Fortnite API (BYOK) lets an AI assistant read your own Fortnite API data through the Fortnite API API with a key you supply (Fortnite-API key). Read-only: 11 tools (get_br_stats_by_name, get_br_stats_by_account_id, get_creator_code, search_br_cosmetic, search_br_cosmetics, get_br_cosmetic, get_news, get_br_news, get_map, get_playlist, get_banner_colors). The BYOK key travels with each request, is...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fortniteapi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fortniteapi/docs"},"termsOfService":"https://connectorbay.com/byok-fortniteapi/terms"},"servers":[{"url":"https://byok-fortniteapi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fortniteapi/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_br_stats_by_name":{"post":{"operationId":"get_br_stats_by_name","summary":"Get a player's Battle Royale statistics by account name: account, battle pass level and overall wins, kills, K/D, matche","description":"Get a player's Battle Royale statistics by account name: account, battle pass level and overall wins, kills, K/D, matches and win rate. Use for \"What are the Fortnite Battle Royale stats of the Epic player 'Ninja'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Account name of the player.","maxLength":64,"title":"Name","type":"string"},"account_type":{"anyOf":[{"enum":["epic","psn","xbl"],"type":"string"},{"type":"null"}],"default":"epic","description":"Account platform: epic (default), psn or xbl.","title":"Account Type"},"time_window":{"anyOf":[{"enum":["lifetime","season"],"type":"string"},{"type":"null"}],"default":"lifetime","description":"Statistics window: 'lifetime' (default) or 'season' (current season).","title":"Time Window"}},"required":["name"],"title":"get_br_stats_by_nameArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_br_stats_by_account_id":{"post":{"operationId":"get_br_stats_by_account_id","summary":"Get a player's Battle Royale statistics by Epic account ID, which stays valid after a name change. Use for \"Show Fortnit","description":"Get a player's Battle Royale statistics by Epic account ID, which stays valid after a name change. Use for \"Show Fortnite stats for account ID abc123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Epic account ID of the player.","maxLength":64,"title":"Account Id","type":"string"},"time_window":{"anyOf":[{"enum":["lifetime","season"],"type":"string"},{"type":"null"}],"default":"lifetime","description":"Statistics window: 'lifetime' (default) or 'season' (current season).","title":"Time Window"}},"required":["account_id"],"title":"get_br_stats_by_account_idArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_creator_code":{"post":{"operationId":"get_creator_code","summary":"Look up a Fortnite creator code (Support-A-Creator) by name. The documentation shows no response fields, so the answer i","description":"Look up a Fortnite creator code (Support-A-Creator) by name. The documentation shows no response fields, so the answer is passed through (capped). Use for \"Who owns the Fortnite creator code 'ninja'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"description":"Creator code to look up.","maxLength":64,"title":"Name","type":"string"}},"required":["name"],"title":"get_creator_codeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_br_cosmetic":{"post":{"operationId":"search_br_cosmetic","summary":"Find the first Battle Royale cosmetic that matches a name, ID, type or rarity (outfit, pickaxe, glider and more). The do","description":"Find the first Battle Royale cosmetic that matches a name, ID, type or rarity (outfit, pickaxe, glider and more). The documentation shows no response fields, so the answer is passed through (capped). Use for \"What is the Fortnite skin 'Renegade Raider'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic name.","title":"Name"},"id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic ID such as CID_028_Athena_Commando_F.","title":"Id"},"type":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic type such as outfit, pickaxe, glider, emote or backpack.","title":"Type"},"rarity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Rarity such as common, uncommon, rare, epic, legendary.","title":"Rarity"},"match_method":{"anyOf":[{"enum":["full","contains","starts","ends"],"type":"string"},{"type":"null"}],"default":"full","description":"How strings are matched: full (default), contains, starts or ends.","title":"Match Method"},"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"title":"search_br_cosmeticArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_br_cosmetics":{"post":{"operationId":"search_br_cosmetics","summary":"Find all Battle Royale cosmetics matching a name, type, rarity, series or set. Narrow with filters to keep the answer sm","description":"Find all Battle Royale cosmetics matching a name, type, rarity, series or set. Narrow with filters to keep the answer small. The documentation shows no response fields, so the answer is passed through (capped). Use for \"Which legendary outfits exist in Fortnite\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic name (use match_method contains for partial matches).","title":"Name"},"type":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic type such as outfit, pickaxe, glider, emote or backpack.","title":"Type"},"rarity":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Rarity such as common, uncommon, rare, epic, legendary.","title":"Rarity"},"set":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic set name.","title":"Set"},"series":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cosmetic series name such as 'Marvel Series'.","title":"Series"},"match_method":{"anyOf":[{"enum":["full","contains","starts","ends"],"type":"string"},{"type":"null"}],"default":"full","description":"How strings are matched: full (default), contains, starts or ends.","title":"Match Method"},"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"title":"search_br_cosmeticsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_br_cosmetic":{"post":{"operationId":"get_br_cosmetic","summary":"Get one Battle Royale cosmetic by its ID with name, description, rarity, set, introduction and images. The documentation","description":"Get one Battle Royale cosmetic by its ID with name, description, rarity, set, introduction and images. The documentation shows no response fields, so the answer is passed through (capped). Use for \"Tell me about the Fortnite cosmetic CID_028_Athena_Commando_F\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cosmetic_id":{"description":"Cosmetic ID such as CID_028_Athena_Commando_F.","maxLength":100,"title":"Cosmetic Id","type":"string"},"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"required":["cosmetic_id"],"title":"get_br_cosmeticArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_news":{"post":{"operationId":"get_news","summary":"Get the current in-game news for Battle Royale, Save the World and Creative. The documentation shows no response fields,","description":"Get the current in-game news for Battle Royale, Save the World and Creative. The documentation shows no response fields, so the answer is passed through (capped). Use for \"What is in the current Fortnite in-game news\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"title":"get_newsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_br_news":{"post":{"operationId":"get_br_news","summary":"Get the current Battle Royale in-game news items. The documentation shows no response fields, so the answer is passed th","description":"Get the current Battle Royale in-game news items. The documentation shows no response fields, so the answer is passed through (capped). Use for \"What are the Battle Royale news items in Fortnite right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"title":"get_br_newsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_map":{"post":{"operationId":"get_map","summary":"Get the Battle Royale map with its points of interest and image links. The documentation shows no response fields, so th","description":"Get the Battle Royale map with its points of interest and image links. The documentation shows no response fields, so the answer is passed through (capped). Use for \"What points of interest are on the Fortnite map\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"title":"get_mapArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_playlist":{"post":{"operationId":"get_playlist","summary":"Get one game playlist (mode) by ID with its name, description and team size. The documentation shows no response fields,","description":"Get one game playlist (mode) by ID with its name, description and team size. The documentation shows no response fields, so the answer is passed through (capped). Use for \"What is the Fortnite playlist Playlist_DefaultSolo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"playlist_id":{"description":"Playlist ID such as Playlist_DefaultSolo.","maxLength":100,"title":"Playlist Id","type":"string"},"language":{"anyOf":[{"maxLength":8,"type":"string"},{"type":"null"}],"default":"en","description":"Output language code such as 'en', 'de', 'fr', 'es' or 'ja'.","title":"Language"}},"required":["playlist_id"],"title":"get_playlistArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_banner_colors":{"post":{"operationId":"get_banner_colors","summary":"List all Fortnite banner colors. The documentation shows no response fields, so the answer is passed through (capped). U","description":"List all Fortnite banner colors. The documentation shows no response fields, so the answer is passed through (capped). Use for \"Which banner colors exist in Fortnite\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_banner_colorsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}