{"message":"Welcome to Vox Document API","app_name":"Vox Document API","version":"0.1.0","environment":"production","base_url":"http://api.voxdocument.com","links":{"portal":"http://api.voxdocument.com/","api_root":"http://api.voxdocument.com/api/v1/","health":"http://api.voxdocument.com/api/v1/health","docs":"http://api.voxdocument.com/api/v1/docs","redoc":"http://api.voxdocument.com/api/v1/redoc","openapi":"http://api.voxdocument.com/api/v1/openapi.json"},"sections":[{"id":"auth","title":"Authentication","description":"Registration, login, tokens, and account management.","endpoints":[{"method":"POST","path":"/api/v1/auth/register","summary":"Create a new account","auth":false},{"method":"POST","path":"/api/v1/auth/login","summary":"Obtain access and refresh tokens","auth":false},{"method":"POST","path":"/api/v1/auth/refresh","summary":"Refresh an expired access token","auth":false},{"method":"POST","path":"/api/v1/auth/logout","summary":"Invalidate refresh token","auth":true},{"method":"GET","path":"/api/v1/auth/me","summary":"Current user profile","auth":true},{"method":"PATCH","path":"/api/v1/auth/me","summary":"Update profile","auth":true},{"method":"POST","path":"/api/v1/auth/me/password","summary":"Change password","auth":true},{"method":"POST","path":"/api/v1/auth/forgot-password","summary":"Request password reset email","auth":false},{"method":"POST","path":"/api/v1/auth/reset-password","summary":"Reset password with token","auth":false}]},{"id":"documents","title":"Documents","description":"Upload, parse, and manage PDF and DOCX files.","endpoints":[{"method":"GET","path":"/api/v1/documents","summary":"List documents","auth":true},{"method":"POST","path":"/api/v1/documents","summary":"Create document metadata","auth":true},{"method":"POST","path":"/api/v1/documents/upload/precheck","summary":"Validate upload before submit","auth":true},{"method":"POST","path":"/api/v1/documents/upload","summary":"Upload and parse a file","auth":true},{"method":"GET","path":"/api/v1/documents/{document_id}","summary":"Get document details","auth":true},{"method":"GET","path":"/api/v1/documents/{document_id}/file","summary":"Download original file","auth":true},{"method":"GET","path":"/api/v1/documents/{document_id}/sentences","summary":"List parsed sentences","auth":true},{"method":"PATCH","path":"/api/v1/documents/{document_id}","summary":"Update document","auth":true},{"method":"DELETE","path":"/api/v1/documents/{document_id}","summary":"Delete document","auth":true}]},{"id":"narration","title":"Narration","description":"Text-to-speech jobs, timestamps, and audio streaming.","endpoints":[{"method":"POST","path":"/api/v1/narration","summary":"Start narration job","auth":true},{"method":"GET","path":"/api/v1/narration/{narration_id}","summary":"Narration status","auth":true},{"method":"GET","path":"/api/v1/narration/{narration_id}/timestamps","summary":"Sentence timestamps","auth":true},{"method":"GET","path":"/api/v1/narration/document/{document_id}","summary":"Narrations for document","auth":true}]},{"id":"conversations","title":"Conversations","description":"RAG chat with document context, including SSE streaming.","endpoints":[{"method":"POST","path":"/api/v1/conversations","summary":"Start conversation","auth":true},{"method":"GET","path":"/api/v1/conversations/document/{document_id}","summary":"List conversations","auth":true},{"method":"GET","path":"/api/v1/conversations/{conversation_id}/messages","summary":"Message history","auth":true},{"method":"POST","path":"/api/v1/conversations/{conversation_id}/ask","summary":"Ask a question","auth":true},{"method":"POST","path":"/api/v1/conversations/{conversation_id}/ask/stream","summary":"Stream answer (SSE)","auth":true}]},{"id":"playback","title":"Playback","description":"Persist resume position and playback speed per document.","endpoints":[{"method":"GET","path":"/api/v1/playback/{document_id}","summary":"Get playback progress","auth":true},{"method":"PUT","path":"/api/v1/playback/{document_id}","summary":"Save playback progress","auth":true}]},{"id":"ai","title":"AI","description":"Direct LLM, embedding, and voice listing endpoints.","endpoints":[{"method":"GET","path":"/api/v1/ai/voices","summary":"List TTS voices","auth":true},{"method":"POST","path":"/api/v1/ai/chat","summary":"Chat completion","auth":true},{"method":"POST","path":"/api/v1/ai/embeddings","summary":"Create embeddings","auth":true}]},{"id":"billing","title":"Billing","description":"Plans, checkout, credits, IAP verification, and webhooks.","endpoints":[{"method":"GET","path":"/api/v1/billing/plans","summary":"Subscription plans","auth":true},{"method":"GET","path":"/api/v1/billing/account","summary":"Billing account","auth":true},{"method":"GET","path":"/api/v1/billing/credit-packs","summary":"Credit packs","auth":true},{"method":"POST","path":"/api/v1/billing/checkout","summary":"Start subscription checkout","auth":true},{"method":"POST","path":"/api/v1/billing/credits/checkout","summary":"Buy credits","auth":true},{"method":"POST","path":"/api/v1/billing/checkout/confirm","summary":"Confirm subscription payment","auth":true},{"method":"POST","path":"/api/v1/billing/credits/checkout/confirm","summary":"Confirm credit payment","auth":true},{"method":"POST","path":"/api/v1/billing/iap/verify","summary":"Verify Apple/Google IAP","auth":true},{"method":"POST","path":"/api/v1/billing/iap/verify-credits","summary":"Verify IAP credit purchase","auth":true},{"method":"POST","path":"/api/v1/billing/webhook/flutterwave","summary":"Flutterwave webhook","auth":false}]},{"id":"realtime","title":"WebSocket","description":"Real-time playback sync and sentence highlighting.","endpoints":[{"method":"WS","path":"/ws/playback/{{document_id}}","summary":"Playback sync channel (?token=JWT)","auth":false}]},{"id":"system","title":"System","description":"Health checks and API metadata.","endpoints":[{"method":"GET","path":"/api/v1/health","summary":"Service health and configuration","auth":false},{"method":"GET","path":"/api/v1/","summary":"API v1 welcome (JSON)","auth":false},{"method":"GET","path":"/","summary":"Developer portal (HTML)","auth":false}]}]}