{"openapi":"3.1.0","info":{"title":"Airstack External Services Gateway","version":"1.0.0","description":"Anonymous, bring-your-own-key proxy to supported APIs."},"tags":[{"name":"OpenRouter"},{"name":"Telegram"}],"servers":[{"url":"/"}],"paths":{"/fllms/v1/models":{"get":{"summary":"List enabled fllms models","tags":["fllms"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/fllms/v1/chat/completions":{"post":{"summary":"Create a completion with per-user provider key fallback","tags":["fllms"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/models":{"get":{"summary":"List OpenRouter models","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/chat/completions":{"post":{"summary":"Create a chat completion; stream=true returns SSE","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/completions":{"post":{"summary":"Create a completion","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/embeddings":{"post":{"summary":"Create embeddings","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/credits":{"get":{"summary":"Read account credits","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/images":{"post":{"summary":"Generate images with a supported image model","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/images/models":{"get":{"summary":"List models supported by the Image API","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/images/models/{author}/{slug}/endpoints":{"get":{"summary":"List provider endpoints and capabilities for an image model","tags":["OpenRouter"],"parameters":[{"name":"author","in":"path","required":true,"schema":{"type":"string"}},{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/v1/classifications/task":{"get":{"summary":"Read task classification market-share statistics (not an inference endpoint)","tags":["OpenRouter"],"parameters":[{"name":"window","in":"query","required":false,"schema":{"type":"string","enum":["7d"]}}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/openrouter/alpha/decisions":{"post":{"summary":"Run a decision model","tags":["OpenRouter"],"parameters":[],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/getMe":{"post":{"summary":"Get bot information","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/getUpdates":{"post":{"summary":"Receive updates","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/sendMessage":{"post":{"summary":"Send a text message","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/sendDocument":{"post":{"summary":"Send a document (multipart supported)","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/setWebhook":{"post":{"summary":"Set a webhook","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/deleteWebhook":{"post":{"summary":"Delete a webhook","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}},"/proxy/telegram/bot{token}/getFile":{"post":{"summary":"Get file metadata","tags":["Telegram"],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"},"description":"Telegram bot token."}],"responses":{"200":{"description":"Upstream response (JSON or streamed SSE)."},"429":{"description":"Gateway rate limit exceeded."}}}}}}