@@ -145,6 +145,7 @@ int main(int argc, char ** argv) {
145145 routes.post_completions_oai = models_routes->proxy_post ;
146146 routes.post_chat_completions = models_routes->proxy_post ;
147147 routes.post_responses_oai = models_routes->proxy_post ;
148+ routes.post_transcriptions_oai = models_routes->proxy_post ;
148149 routes.post_anthropic_messages = models_routes->proxy_post ;
149150 routes.post_anthropic_count_tokens = models_routes->proxy_post ;
150151 routes.post_infill = models_routes->proxy_post ;
@@ -160,48 +161,51 @@ int main(int argc, char ** argv) {
160161 routes.post_slots = models_routes->proxy_post ;
161162
162163 // custom routes for router
163- routes.get_props = models_routes->get_router_props ;
164- routes.get_models = models_routes->get_router_models ;
165- ctx_http.post (" /models/load" , ex_wrapper (models_routes->post_router_models_load ));
166- ctx_http.post (" /models/unload" , ex_wrapper (models_routes->post_router_models_unload ));
164+ routes.get_props = models_routes->get_router_props ;
165+ routes.get_models = models_routes->get_router_models ;
166+
167+ ctx_http.post (" /models/load" , ex_wrapper (models_routes->post_router_models_load ));
168+ ctx_http.post (" /models/unload" , ex_wrapper (models_routes->post_router_models_unload ));
167169 }
168170
169- ctx_http.get (" /health" , ex_wrapper (routes.get_health )); // public endpoint (no API key check)
170- ctx_http.get (" /v1/health" , ex_wrapper (routes.get_health )); // public endpoint (no API key check)
171- ctx_http.get (" /metrics" , ex_wrapper (routes.get_metrics ));
172- ctx_http.get (" /props" , ex_wrapper (routes.get_props ));
173- ctx_http.post (" /props" , ex_wrapper (routes.post_props ));
174- ctx_http.post (" /api/show" , ex_wrapper (routes.get_api_show ));
175- ctx_http.get (" /models" , ex_wrapper (routes.get_models )); // public endpoint (no API key check)
176- ctx_http.get (" /v1/models" , ex_wrapper (routes.get_models )); // public endpoint (no API key check)
177- ctx_http.get (" /api/tags" , ex_wrapper (routes.get_models )); // ollama specific endpoint. public endpoint (no API key check)
178- ctx_http.post (" /completion" , ex_wrapper (routes.post_completions )); // legacy
179- ctx_http.post (" /completions" , ex_wrapper (routes.post_completions ));
180- ctx_http.post (" /v1/completions" , ex_wrapper (routes.post_completions_oai ));
181- ctx_http.post (" /chat/completions" , ex_wrapper (routes.post_chat_completions ));
182- ctx_http.post (" /v1/chat/completions" , ex_wrapper (routes.post_chat_completions ));
183- ctx_http.post (" /api/chat" , ex_wrapper (routes.post_chat_completions )); // ollama specific endpoint
184- ctx_http.post (" /v1/responses" , ex_wrapper (routes.post_responses_oai ));
185- ctx_http.post (" /responses" , ex_wrapper (routes.post_responses_oai ));
186- ctx_http.post (" /v1/messages" , ex_wrapper (routes.post_anthropic_messages )); // anthropic messages API
171+ ctx_http.get (" /health" , ex_wrapper (routes.get_health )); // public endpoint (no API key check)
172+ ctx_http.get (" /v1/health" , ex_wrapper (routes.get_health )); // public endpoint (no API key check)
173+ ctx_http.get (" /metrics" , ex_wrapper (routes.get_metrics ));
174+ ctx_http.get (" /props" , ex_wrapper (routes.get_props ));
175+ ctx_http.post (" /props" , ex_wrapper (routes.post_props ));
176+ ctx_http.post (" /api/show" , ex_wrapper (routes.get_api_show ));
177+ ctx_http.get (" /models" , ex_wrapper (routes.get_models )); // public endpoint (no API key check)
178+ ctx_http.get (" /v1/models" , ex_wrapper (routes.get_models )); // public endpoint (no API key check)
179+ ctx_http.get (" /api/tags" , ex_wrapper (routes.get_models )); // ollama specific endpoint. public endpoint (no API key check)
180+ ctx_http.post (" /completion" , ex_wrapper (routes.post_completions )); // legacy
181+ ctx_http.post (" /completions" , ex_wrapper (routes.post_completions ));
182+ ctx_http.post (" /v1/completions" , ex_wrapper (routes.post_completions_oai ));
183+ ctx_http.post (" /chat/completions" , ex_wrapper (routes.post_chat_completions ));
184+ ctx_http.post (" /v1/chat/completions" , ex_wrapper (routes.post_chat_completions ));
185+ ctx_http.post (" /api/chat" , ex_wrapper (routes.post_chat_completions )); // ollama specific endpoint
186+ ctx_http.post (" /v1/responses" , ex_wrapper (routes.post_responses_oai ));
187+ ctx_http.post (" /responses" , ex_wrapper (routes.post_responses_oai ));
188+ ctx_http.post (" /v1/audio/transcriptions" , ex_wrapper (routes.post_transcriptions_oai ));
189+ ctx_http.post (" /audio/transcriptions" , ex_wrapper (routes.post_transcriptions_oai ));
190+ ctx_http.post (" /v1/messages" , ex_wrapper (routes.post_anthropic_messages )); // anthropic messages API
187191 ctx_http.post (" /v1/messages/count_tokens" , ex_wrapper (routes.post_anthropic_count_tokens )); // anthropic token counting
188- ctx_http.post (" /infill" , ex_wrapper (routes.post_infill ));
189- ctx_http.post (" /embedding" , ex_wrapper (routes.post_embeddings )); // legacy
190- ctx_http.post (" /embeddings" , ex_wrapper (routes.post_embeddings ));
191- ctx_http.post (" /v1/embeddings" , ex_wrapper (routes.post_embeddings_oai ));
192- ctx_http.post (" /rerank" , ex_wrapper (routes.post_rerank ));
193- ctx_http.post (" /reranking" , ex_wrapper (routes.post_rerank ));
194- ctx_http.post (" /v1/rerank" , ex_wrapper (routes.post_rerank ));
195- ctx_http.post (" /v1/reranking" , ex_wrapper (routes.post_rerank ));
196- ctx_http.post (" /tokenize" , ex_wrapper (routes.post_tokenize ));
197- ctx_http.post (" /detokenize" , ex_wrapper (routes.post_detokenize ));
198- ctx_http.post (" /apply-template" , ex_wrapper (routes.post_apply_template ));
192+ ctx_http.post (" /infill" , ex_wrapper (routes.post_infill ));
193+ ctx_http.post (" /embedding" , ex_wrapper (routes.post_embeddings )); // legacy
194+ ctx_http.post (" /embeddings" , ex_wrapper (routes.post_embeddings ));
195+ ctx_http.post (" /v1/embeddings" , ex_wrapper (routes.post_embeddings_oai ));
196+ ctx_http.post (" /rerank" , ex_wrapper (routes.post_rerank ));
197+ ctx_http.post (" /reranking" , ex_wrapper (routes.post_rerank ));
198+ ctx_http.post (" /v1/rerank" , ex_wrapper (routes.post_rerank ));
199+ ctx_http.post (" /v1/reranking" , ex_wrapper (routes.post_rerank ));
200+ ctx_http.post (" /tokenize" , ex_wrapper (routes.post_tokenize ));
201+ ctx_http.post (" /detokenize" , ex_wrapper (routes.post_detokenize ));
202+ ctx_http.post (" /apply-template" , ex_wrapper (routes.post_apply_template ));
199203 // LoRA adapters hotswap
200- ctx_http.get (" /lora-adapters" , ex_wrapper (routes.get_lora_adapters ));
201- ctx_http.post (" /lora-adapters" , ex_wrapper (routes.post_lora_adapters ));
204+ ctx_http.get (" /lora-adapters" , ex_wrapper (routes.get_lora_adapters ));
205+ ctx_http.post (" /lora-adapters" , ex_wrapper (routes.post_lora_adapters ));
202206 // Save & load slots
203- ctx_http.get (" /slots" , ex_wrapper (routes.get_slots ));
204- ctx_http.post (" /slots/:id_slot" , ex_wrapper (routes.post_slots ));
207+ ctx_http.get (" /slots" , ex_wrapper (routes.get_slots ));
208+ ctx_http.post (" /slots/:id_slot" , ex_wrapper (routes.post_slots ));
205209 // CORS proxy (EXPERIMENTAL, only used by the Web UI for MCP)
206210 if (params.webui_mcp_proxy ) {
207211 SRV_WRN (" %s" , " -----------------\n " );
0 commit comments