{"openapi":"3.1.0","info":{"title":"Polyvox","version":"0.1.0"},"paths":{"/api/v1/register":{"post":{"tags":["auth"],"summary":"Register","operationId":"register_api_v1_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/phone/send-code":{"post":{"tags":["auth"],"summary":"Phone Send Code","operationId":"phone_send_code_api_v1_phone_send_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPhoneCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/phone/verify-code":{"post":{"tags":["auth"],"summary":"Phone Verify Code","operationId":"phone_verify_code_api_v1_phone_verify_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPhoneCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_v1_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/google":{"post":{"tags":["auth"],"summary":"Google Oauth","operationId":"google_oauth_api_v1_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleOAuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/google/code":{"post":{"tags":["auth"],"summary":"Google Code Exchange","operationId":"google_code_exchange_api_v1_google_code_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleCodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/link/exchange":{"post":{"tags":["auth"],"summary":"Exchange Link Token","description":"Turn a signed link token (issued to an agent, e.g. by the MCP\nget_clone_link tool) into a normal session. Single-use where Redis is\navailable; 15-minute expiry either way.","operationId":"exchange_link_token_api_v1_link_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me":{"get":{"tags":["auth"],"summary":"Read Me","operationId":"read_me_api_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"put":{"tags":["auth"],"summary":"Update Me","operationId":"update_me_api_v1_me_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/dashboard/stats":{"get":{"tags":["auth"],"summary":"Dashboard Stats","operationId":"dashboard_stats_api_v1_dashboard_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardStats"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/verify-email":{"post":{"tags":["auth"],"summary":"Verify Email","operationId":"verify_email_api_v1_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/resend-verification":{"post":{"tags":["auth"],"summary":"Resend Verification","operationId":"resend_verification_api_v1_resend_verification_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/voices/slots":{"get":{"tags":["voices"],"summary":"Voice Slots","operationId":"voice_slots_api_v1_voices_slots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceSlotsOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/voices/clone-prompts":{"get":{"tags":["voices"],"summary":"Clone Prompts","description":"Return a reading prompt in the requested language.","operationId":"clone_prompts_api_v1_voices_clone_prompts_get","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"default":"en","title":"Lang"}},{"name":"index","in":"query","required":false,"schema":{"type":"integer","maximum":4,"minimum":0,"default":0,"title":"Index"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"string"},"title":"Response Clone Prompts Api V1 Voices Clone Prompts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/voices/clone":{"post":{"tags":["voices"],"summary":"Clone Voice","operationId":"clone_voice_api_v1_voices_clone_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_clone_voice_api_v1_voices_clone_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/voices":{"get":{"tags":["voices"],"summary":"List Voices","operationId":"list_voices_api_v1_voices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/VoiceOut"},"type":"array","title":"Response List Voices Api V1 Voices Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/voices/library":{"get":{"tags":["voices"],"summary":"Library Voices","description":"The ready-made voice shelf shown in the studio next to the user's clones.","operationId":"library_voices_api_v1_voices_library_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/voices/library/public":{"get":{"tags":["voices"],"summary":"Library Voices Public","description":"The full actor catalogue for the public marketing pages.\n\nUnauthenticated and outside the rollout on purpose: names, languages and\nsample availability are marketing data, and the samples themselves are\nalready served without auth. Using an actor still needs an account and\nthe studio's gates.","operationId":"library_voices_public_api_v1_voices_library_public_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/LibraryVoiceOut"},"type":"array","title":"Response Library Voices Public Api V1 Voices Library Public Get"}}}}}}},"/api/v1/voices/library/{voice_id}/preview":{"get":{"tags":["voices"],"summary":"Library Voice Preview","description":"Redirect to the voice's pre-rendered sample clip, in `lang` if the\nactor has a sample in that language, otherwise the native one.\n\nUnauthenticated on purpose: an <audio> tag can't send a bearer token, and\nthe samples are fixed marketing lines, not user content.","operationId":"library_voice_preview_api_v1_voices_library__voice_id__preview_get","parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Voice Id"}},{"name":"lang","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/voices/{voice_id}":{"get":{"tags":["voices"],"summary":"Get Voice","operationId":"get_voice_api_v1_voices__voice_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Voice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["voices"],"summary":"Delete Voice","operationId":"delete_voice_api_v1_voices__voice_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"voice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Voice Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/generations/suggest":{"post":{"tags":["generations"],"summary":"Suggest Script","operationId":"suggest_script_api_v1_generations_suggest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/generations":{"post":{"tags":["generations"],"summary":"Create Generation","operationId":"create_generation_api_v1_generations_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["generations"],"summary":"List Generations","operationId":"list_generations_api_v1_generations_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GenerationOut"},"title":"Response List Generations Api V1 Generations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/generations/{generation_id}":{"get":{"tags":["generations"],"summary":"Get Generation","operationId":"get_generation_api_v1_generations__generation_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["generations"],"summary":"Delete Generation","operationId":"delete_generation_api_v1_generations__generation_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Generation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/generations/{generation_id}/save":{"post":{"tags":["generations"],"summary":"Save Generation","operationId":"save_generation_api_v1_generations__generation_id__save_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/generations/{generation_id}/audio":{"get":{"tags":["generations"],"summary":"Stream Generation Audio","operationId":"stream_generation_audio_api_v1_generations__generation_id__audio_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Generation Id"}},{"name":"redirect","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Redirect"}},{"name":"download","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Download"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments/create-checkout":{"post":{"tags":["payments"],"summary":"Create Checkout","operationId":"create_checkout_api_v1_payments_create_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/webhook":{"post":{"tags":["payments"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_v1_payments_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Stripe Webhook Api V1 Payments Webhook Post"}}}}}}},"/api/v1/payments/portal":{"get":{"tags":["payments"],"summary":"Billing Portal","operationId":"billing_portal_api_v1_payments_portal_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/payments/status":{"get":{"tags":["payments"],"summary":"Payment Status","operationId":"payment_status_api_v1_payments_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentStatusResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/clips/{share_token}":{"get":{"tags":["shares"],"summary":"Get Shared Clip","operationId":"get_shared_clip_api_v1_clips__share_token__get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedClipOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clips/{share_token}/play":{"post":{"tags":["shares"],"summary":"Record Play","operationId":"record_play_api_v1_clips__share_token__play_post","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RecordPlayIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayRecordedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clips/{share_token}/audio":{"get":{"tags":["shares"],"summary":"Stream Shared Audio","operationId":"stream_shared_audio_api_v1_clips__share_token__audio_get","parameters":[{"name":"share_token","in":"path","required":true,"schema":{"type":"string","title":"Share Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"list_notifications_api_v1_notifications_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NotificationOut"},"title":"Response List Notifications Api V1 Notifications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications/unread-count":{"get":{"tags":["notifications"],"summary":"Unread Count","operationId":"unread_count_api_v1_notifications_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountOut"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/notifications/read":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_api_v1_notifications_read_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Response Mark All Read Api V1 Notifications Read Post"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/admin/dashboard":{"get":{"tags":["admin"],"summary":"Admin Dashboard","operationId":"admin_dashboard_api_v1_admin_dashboard_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"24h","title":"Range"}},{"name":"recent_limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Recent Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDashboard"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/generations/{generation_id}/audio":{"get":{"tags":["admin"],"summary":"Stream Admin Generation Audio","operationId":"stream_admin_generation_audio_api_v1_admin_generations__generation_id__audio_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Generation Id"}},{"name":"redirect","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Redirect"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/bans":{"get":{"tags":["admin"],"summary":"List Bans","operationId":"list_bans_api_v1_admin_bans_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_revoked","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Revoked"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BanOut"},"title":"Response List Bans Api V1 Admin Bans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create Ban","operationId":"create_ban_api_v1_admin_bans_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBanRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/bans/{ban_id}":{"delete":{"tags":["admin"],"summary":"Revoke Ban","operationId":"revoke_ban_api_v1_admin_bans__ban_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"ban_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ban Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/library-voices/sync":{"post":{"tags":["admin"],"summary":"Sync Library","description":"Load backend/app/data/library_voices.json into the voices table and render\nthe sample clips. Same as `python -m scripts.seed_library_voices`, for\nenvironments without a shell. Idempotent.","operationId":"sync_library_api_v1_admin_library_voices_sync_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"regenerate_previews","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Regenerate Previews"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibrarySyncOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/email/unsubscribe":{"get":{"tags":["email"],"summary":"Unsubscribe","operationId":"unsubscribe_api_v1_email_unsubscribe_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/email/track/open.gif":{"get":{"tags":["email"],"summary":"Track Open","operationId":"track_open_api_v1_email_track_open_gif_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/email/track/click":{"get":{"tags":["email"],"summary":"Track Click","operationId":"track_click_api_v1_email_track_click_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/api-keys":{"get":{"tags":["api-keys"],"summary":"List Api Keys","operationId":"list_api_keys_api_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyOut"},"type":"array","title":"Response List Api Keys Api V1 Api Keys Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["api-keys"],"summary":"Create Api Key","operationId":"create_api_key_api_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/v1/api-keys/{key_id}":{"delete":{"tags":["api-keys"],"summary":"Revoke Api Key","operationId":"revoke_api_key_api_v1_api_keys__key_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"AdminDailyStats":{"properties":{"day":{"type":"string","format":"date","title":"Day"},"signups":{"type":"integer","title":"Signups"},"clones":{"type":"integer","title":"Clones"},"generations":{"type":"integer","title":"Generations"},"clip_plays":{"type":"integer","title":"Clip Plays"}},"type":"object","required":["day","signups","clones","generations","clip_plays"],"title":"AdminDailyStats"},"AdminDashboard":{"properties":{"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"range":{"type":"string","title":"Range"},"grain":{"type":"string","title":"Grain"},"totals":{"$ref":"#/components/schemas/AdminTotals"},"period":{"$ref":"#/components/schemas/AdminPeriodStats"},"previous":{"anyOf":[{"$ref":"#/components/schemas/AdminPeriodStats"},{"type":"null"}]},"series":{"items":{"$ref":"#/components/schemas/AdminSeriesPoint"},"type":"array","title":"Series"},"last_12_hours":{"$ref":"#/components/schemas/AdminPeriodStats"},"last_24_hours":{"$ref":"#/components/schemas/AdminPeriodStats"},"last_7_days":{"$ref":"#/components/schemas/AdminPeriodStats"},"daily":{"items":{"$ref":"#/components/schemas/AdminDailyStats"},"type":"array","title":"Daily"},"recent_generations":{"items":{"$ref":"#/components/schemas/AdminGeneration"},"type":"array","title":"Recent Generations"},"recent_signups":{"items":{"$ref":"#/components/schemas/AdminSignup"},"type":"array","title":"Recent Signups"},"signup_sources":{"items":{"$ref":"#/components/schemas/AdminSignupSource"},"type":"array","title":"Signup Sources"},"paid_accounts":{"items":{"$ref":"#/components/schemas/AdminPaidAccount"},"type":"array","title":"Paid Accounts"}},"type":"object","required":["generated_at","range","grain","totals","period","previous","series","last_12_hours","last_24_hours","last_7_days","daily","recent_generations","recent_signups","signup_sources","paid_accounts"],"title":"AdminDashboard"},"AdminGeneration":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"voice_name":{"type":"string","title":"Voice Name"},"transcript":{"type":"string","title":"Transcript"},"translated_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translated Transcript"},"english_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"English Transcript"},"language":{"type":"string","title":"Language"},"duration_seconds":{"type":"number","title":"Duration Seconds"},"status":{"$ref":"#/components/schemas/GenerationStatus"},"play_count":{"type":"integer","title":"Play Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"audio_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Path"}},"type":"object","required":["id","email","full_name","voice_name","transcript","translated_transcript","english_transcript","language","duration_seconds","status","play_count","created_at","audio_path"],"title":"AdminGeneration"},"AdminPaidAccount":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"plan":{"$ref":"#/components/schemas/Plan"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"clones":{"type":"integer","title":"Clones"},"generations":{"type":"integer","title":"Generations"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"}},"type":"object","required":["id","email","full_name","plan","created_at","clones","generations","stripe_customer_id"],"title":"AdminPaidAccount"},"AdminPeriodStats":{"properties":{"signups":{"type":"integer","title":"Signups"},"clones":{"type":"integer","title":"Clones"},"users_who_cloned":{"type":"integer","title":"Users Who Cloned"},"generations":{"type":"integer","title":"Generations"},"clip_plays":{"type":"integer","title":"Clip Plays"},"paid_users":{"type":"integer","title":"Paid Users"}},"type":"object","required":["signups","clones","users_who_cloned","generations","clip_plays","paid_users"],"title":"AdminPeriodStats"},"AdminSeriesPoint":{"properties":{"bucket":{"type":"string","format":"date-time","title":"Bucket"},"signups":{"type":"integer","title":"Signups"},"clones":{"type":"integer","title":"Clones"},"generations":{"type":"integer","title":"Generations"},"clip_plays":{"type":"integer","title":"Clip Plays"}},"type":"object","required":["bucket","signups","clones","generations","clip_plays"],"title":"AdminSeriesPoint"},"AdminSignup":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"plan":{"$ref":"#/components/schemas/Plan"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"clones":{"type":"integer","title":"Clones"},"generations":{"type":"integer","title":"Generations"},"acquisition_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acquisition Source"},"acquisition_medium":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acquisition Medium"},"acquisition_referrer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acquisition Referrer"},"acquisition_landing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acquisition Landing"}},"type":"object","required":["id","email","full_name","plan","created_at","clones","generations"],"title":"AdminSignup"},"AdminSignupSource":{"properties":{"medium":{"type":"string","title":"Medium"},"source":{"type":"string","title":"Source"},"signups":{"type":"integer","title":"Signups"}},"type":"object","required":["medium","source","signups"],"title":"AdminSignupSource"},"AdminTotals":{"properties":{"users":{"type":"integer","title":"Users"},"paid_users":{"type":"integer","title":"Paid Users"},"voices":{"type":"integer","title":"Voices"},"generations":{"type":"integer","title":"Generations"},"completed_generations":{"type":"integer","title":"Completed Generations"},"failed_generations":{"type":"integer","title":"Failed Generations"},"clip_plays":{"type":"integer","title":"Clip Plays"},"users_who_cloned":{"type":"integer","title":"Users Who Cloned"}},"type":"object","required":["users","paid_users","voices","generations","completed_generations","failed_generations","clip_plays","users_who_cloned"],"title":"AdminTotals"},"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"ApiKeyCreate"},"ApiKeyCreated":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"secret":{"type":"string","title":"Secret"}},"type":"object","required":["id","name","key_prefix","created_at","last_used_at","secret"],"title":"ApiKeyCreated"},"ApiKeyOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","name","key_prefix","created_at","last_used_at"],"title":"ApiKeyOut"},"AttributionIn":{"properties":{"source":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Source"},"medium":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Medium"},"campaign":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Campaign"},"landing":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Landing"},"referrer":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Referrer"}},"type":"object","title":"AttributionIn"},"BanOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"$ref":"#/components/schemas/BanType"},"value":{"type":"string","title":"Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"banned_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Banned By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"revoked_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revoked By"}},"type":"object","required":["id","type","value","reason","banned_by","created_at","revoked_at","revoked_by"],"title":"BanOut"},"BanType":{"type":"string","enum":["account","email","email_domain","phone","ip"],"title":"BanType"},"Body_clone_voice_api_v1_voices_clone_post":{"properties":{"audio":{"type":"string","contentMediaType":"application/octet-stream","title":"Audio"},"name":{"type":"string","maxLength":255,"minLength":1,"title":"Name"},"language":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Language"}},"type":"object","required":["audio","name"],"title":"Body_clone_voice_api_v1_voices_clone_post"},"CheckoutRequest":{"properties":{"plan":{"type":"string","enum":["pro","unlimited","global"],"title":"Plan","description":"Subscription plan to purchase"},"country":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Country","description":"ISO country from the client geo lookup"}},"type":"object","required":["plan"],"title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"CheckoutResponse"},"CreateBanRequest":{"properties":{"type":{"$ref":"#/components/schemas/BanType"},"value":{"type":"string","maxLength":320,"minLength":1,"title":"Value"},"reason":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Reason"}},"type":"object","required":["type","value"],"title":"CreateBanRequest"},"CreateBanResponse":{"properties":{"ban":{"$ref":"#/components/schemas/BanOut"},"deactivated_users":{"type":"integer","title":"Deactivated Users"},"linked_ip_bans":{"type":"integer","title":"Linked Ip Bans","default":0}},"type":"object","required":["ban","deactivated_users"],"title":"CreateBanResponse"},"DashboardStats":{"properties":{"clips_created":{"type":"integer","title":"Clips Created"},"voices_cloned":{"type":"integer","title":"Voices Cloned"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"generation_limit":{"type":"integer","title":"Generation Limit"},"plan":{"$ref":"#/components/schemas/Plan"}},"type":"object","required":["clips_created","voices_cloned","credits_remaining","generation_limit","plan"],"title":"DashboardStats"},"GenerationCreate":{"properties":{"voice_id":{"type":"string","format":"uuid","title":"Voice Id"},"transcript":{"type":"string","maxLength":50000,"minLength":1,"title":"Transcript"},"language":{"type":"string","maxLength":16,"title":"Language"},"accent":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Accent"},"emotion":{"anyOf":[{"type":"string","enum":["neutral","calm","content","angry","sad","scared"]},{"type":"null"}],"title":"Emotion"},"speed":{"type":"number","maximum":1.5,"minimum":0.6,"title":"Speed","default":1.0}},"type":"object","required":["voice_id","transcript","language"],"title":"GenerationCreate"},"GenerationOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"voice_id":{"type":"string","title":"Voice Id"},"voice_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Voice Name"},"transcript":{"type":"string","title":"Transcript"},"translated_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translated Transcript"},"language":{"type":"string","title":"Language"},"accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"emotion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emotion"},"speed":{"type":"number","title":"Speed","default":1.0},"output_audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Audio Url"},"duration_seconds":{"type":"number","title":"Duration Seconds"},"status":{"$ref":"#/components/schemas/GenerationStatus"},"share_token":{"type":"string","title":"Share Token"},"play_count":{"type":"integer","title":"Play Count"},"saved_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Saved At"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","user_id","voice_id","transcript","language","output_audio_url","duration_seconds","status","share_token","play_count","created_at"],"title":"GenerationOut"},"GenerationStatus":{"type":"string","enum":["processing","completed","failed"],"title":"GenerationStatus"},"GoogleCodeRequest":{"properties":{"code":{"type":"string","minLength":1,"title":"Code"},"redirect_uri":{"type":"string","minLength":1,"title":"Redirect Uri"},"attribution":{"anyOf":[{"$ref":"#/components/schemas/AttributionIn"},{"type":"null"}]}},"type":"object","required":["code","redirect_uri"],"title":"GoogleCodeRequest"},"GoogleOAuthRequest":{"properties":{"access_token":{"type":"string","minLength":10,"title":"Access Token"}},"type":"object","required":["access_token"],"title":"GoogleOAuthRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LibraryOut":{"properties":{"variant":{"type":"string","title":"Variant"},"voices":{"items":{"$ref":"#/components/schemas/LibraryVoiceOut"},"type":"array","title":"Voices"}},"type":"object","required":["variant","voices"],"title":"LibraryOut"},"LibrarySyncOut":{"properties":{"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"},"deactivated":{"type":"integer","title":"Deactivated"},"previews_rendered":{"type":"integer","title":"Previews Rendered"},"preview_failures":{"items":{"type":"string"},"type":"array","title":"Preview Failures"}},"type":"object","required":["created","updated","deactivated","previews_rendered","preview_failures"],"title":"LibrarySyncOut"},"LibraryVoiceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"language":{"type":"string","title":"Language"},"gender":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gender"},"tagline":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tagline"},"has_preview":{"type":"boolean","title":"Has Preview"},"languages":{"items":{"type":"string"},"type":"array","title":"Languages"},"multilingual":{"type":"boolean","title":"Multilingual"},"preview_languages":{"items":{"type":"string"},"type":"array","title":"Preview Languages"},"requires_pro":{"type":"boolean","title":"Requires Pro"}},"type":"object","required":["id","name","language","gender","tagline","has_preview","languages","multilingual","preview_languages","requires_pro"],"title":"LibraryVoiceOut"},"LinkExchangeRequest":{"properties":{"token":{"type":"string","maxLength":2048,"title":"Token"}},"type":"object","required":["token"],"title":"LinkExchangeRequest"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MessageResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"MessageResponse"},"NotificationOut":{"properties":{"id":{"type":"string","title":"Id"},"type":{"$ref":"#/components/schemas/NotificationType"},"message":{"type":"string","title":"Message"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"read":{"type":"boolean","title":"Read"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","type","message","read","created_at"],"title":"NotificationOut"},"NotificationType":{"type":"string","enum":["clip_played","credit_earned","low_credits"],"title":"NotificationType"},"PaymentStatusResponse":{"properties":{"plan":{"$ref":"#/components/schemas/Plan"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"generation_limit":{"type":"integer","title":"Generation Limit"},"stripe_customer_found":{"type":"boolean","title":"Stripe Customer Found"}},"type":"object","required":["plan","credits_remaining","generation_limit","stripe_customer_found"],"title":"PaymentStatusResponse"},"Plan":{"type":"string","enum":["free","pro","unlimited","global"],"title":"Plan"},"PlayRecordedOut":{"properties":{"new_play":{"type":"boolean","title":"New Play"},"play_count":{"type":"integer","title":"Play Count"},"credits_awarded":{"type":"integer","title":"Credits Awarded"}},"type":"object","required":["new_play","play_count","credits_awarded"],"title":"PlayRecordedOut"},"PortalResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalResponse"},"RecordPlayIn":{"properties":{"distinct_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Distinct Id"}},"type":"object","title":"RecordPlayIn"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"},"full_name":{"type":"string","maxLength":255,"minLength":1,"title":"Full Name"},"phone_number":{"anyOf":[{"type":"string","maxLength":32,"minLength":5},{"type":"null"}],"title":"Phone Number"},"phone_country":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Phone Country"},"sms_consent":{"type":"boolean","title":"Sms Consent","description":"User consents to receive a one-time SMS verification code from Polyvox.","default":false},"verify_method":{"type":"string","pattern":"^(email|phone)$","title":"Verify Method","default":"email"},"attribution":{"anyOf":[{"$ref":"#/components/schemas/AttributionIn"},{"type":"null"}]}},"type":"object","required":["email","password","full_name"],"title":"RegisterRequest"},"RegisterResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"phone_verification_required":{"type":"boolean","title":"Phone Verification Required","default":true}},"type":"object","required":["access_token"],"title":"RegisterResponse"},"SendPhoneCodeRequest":{"properties":{"phone_number":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Phone Number"},"phone_country":{"anyOf":[{"type":"string","maxLength":2,"minLength":2},{"type":"null"}],"title":"Phone Country"}},"type":"object","title":"SendPhoneCodeRequest"},"SharedClipOut":{"properties":{"share_token":{"type":"string","title":"Share Token"},"voice_name":{"type":"string","title":"Voice Name"},"transcript":{"type":"string","title":"Transcript"},"translated_transcript":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Translated Transcript"},"language":{"type":"string","title":"Language"},"duration_seconds":{"type":"number","title":"Duration Seconds"},"play_count":{"type":"integer","title":"Play Count"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["share_token","voice_name","transcript","language","duration_seconds","play_count","created_at"],"title":"SharedClipOut"},"SuggestRequest":{"properties":{"prompt":{"type":"string","maxLength":500,"minLength":1,"title":"Prompt"},"tone":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Tone"},"voice_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Voice Name"}},"type":"object","required":["prompt"],"title":"SuggestRequest"},"SuggestResponse":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"SuggestResponse"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"}},"type":"object","required":["access_token"],"title":"TokenResponse"},"UnreadCountOut":{"properties":{"count":{"type":"integer","title":"Count"}},"type":"object","required":["count"],"title":"UnreadCountOut"},"UpdateProfileRequest":{"properties":{"full_name":{"anyOf":[{"type":"string","maxLength":255,"minLength":1},{"type":"null"}],"title":"Full Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"}},"type":"object","title":"UpdateProfileRequest"},"UserPublic":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"full_name":{"type":"string","title":"Full Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"plan":{"$ref":"#/components/schemas/Plan"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"is_active":{"type":"boolean","title":"Is Active"},"email_verified":{"type":"boolean","title":"Email Verified"},"phone_verified":{"type":"boolean","title":"Phone Verified"},"hindi_gate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hindi Gate"},"voice_actors":{"type":"boolean","title":"Voice Actors","default":false}},"type":"object","required":["id","email","full_name","avatar_url","plan","credits_remaining","is_active","email_verified","phone_verified","hindi_gate"],"title":"UserPublic"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyPhoneCodeRequest":{"properties":{"code":{"type":"string","maxLength":10,"minLength":4,"title":"Code"}},"type":"object","required":["code"],"title":"VerifyPhoneCodeRequest"},"VerifyRequest":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"VerifyRequest"},"VoiceOut":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"name":{"type":"string","title":"Name"},"provider":{"type":"string","title":"Provider"},"cartesia_voice_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cartesia Voice Id"},"has_cartesia":{"type":"boolean","title":"Has Cartesia"},"has_elevenlabs":{"type":"boolean","title":"Has Elevenlabs"},"original_audio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Original Audio Url"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","user_id","name","provider","cartesia_voice_id","has_cartesia","has_elevenlabs","original_audio_url","is_active","created_at"],"title":"VoiceOut"},"VoiceSlotsOut":{"properties":{"used":{"type":"integer","title":"Used"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},"type":"object","required":["used","limit"],"title":"VoiceSlotsOut"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"/api/v1/login"}}}}}}