{"status":"ok","message":"Audio Router Detection API","docs":"See README.md for full documentation.","authentication":"Protected endpoints require header: X-API-Key","routers":["auth","ciudad_sede","expectativa","no_payment","payment_method","rival","yes_no"],"endpoints":[{"path":"/","method":"GET","description":"Health check and API info (this response)"},{"path":"/healthz","method":"GET","description":"Liveness probe (always 200 if process responds)"},{"path":"/readyz","method":"GET","description":"Readiness probe (200 when startup complete and DB/client ready; 503 otherwise)"},{"path":"/models/loaded","method":"GET","description":"MLflow models currently loaded in memory after warmup (informational; changes only on process restart)"},{"path":"/audio-semantic-router","method":"POST","description":"Transcribe audio and classify the normalized text with OpenAI embeddings + MLflow. Form: audio_file, language, router_model, phone, call_id, turn_number, current_node. Header: X-API-Key."},{"path":"/text-semantic-router","method":"POST","description":"Classify text only with OpenAI embeddings + MLflow. JSON body: text, router_model (optional). Header: X-API-Key."},{"path":"/create-graph","method":"GET","description":"HTML form to create conversation graph from text or audio."},{"path":"/create-graph","method":"POST","description":"Generate graph JSON from text or audio (LLM)."},{"path":"/dashboard","method":"GET","description":"Web dashboard for calls and classifications. Query: graph, campaign."},{"path":"/api/call/{call_id}","method":"GET","description":"Get call details and classifications. Header: X-API-Key."},{"path":"/api/download","method":"GET","description":"Download data as CSV or Excel. Query: data_type (calls|classifications|all), graph, campaign, api_key."}]}