openapi: 3.0.0
info:
  title: Vocova - AI Transcription
  description: |
    Vocova is an AI-powered transcription platform that converts audio and video
    to text in 100+ languages. Features include speaker identification, translation,
    and export to TXT, SRT, VTT, DOCX, and PDF.

    This OpenAPI spec describes the public-facing pages of Vocova for discovery
    by AI assistants and search engines. Vocova is a web application, not a
    REST API — these paths return HTML pages.

    ## Key Features
    - AI transcription in 100+ languages
    - Speaker identification (diarization)
    - URL import from 1,000+ platforms (YouTube, TikTok, Vimeo, Zoom, etc.)
    - Translation between languages
    - Export to TXT, SRT, VTT, DOCX, PDF

    ## Pricing
    - Free: 30 minutes to get started, $0
    - Plus Monthly: 1,800 minutes/month, $15/month
    - Plus Yearly: 1,800 minutes/month, $90/year ($7.50/month)
    - Pro Monthly: Unlimited minutes (marketed), $39/month
    - Pro Yearly: Unlimited minutes (marketed), $228/year ($19/month)
    - Pro Lifetime: Unlimited minutes (marketed), $399 one-time

  version: '1.0.0'
  contact:
    email: contact@vocova.app
    url: https://vocova.app
servers:
  - url: https://vocova.app
    description: Production

paths:
  /:
    get:
      operationId: getHomepage
      summary: "Homepage"
      description: "Main landing page with product overview, features, how it works, and pricing CTA."
      responses:
        '200':
          description: HTML page

  /tools:
    get:
      operationId: getToolsGallery
      summary: "All transcription tools"
      description: "Gallery of dedicated transcription tools across platforms, languages, formats, translation, summarization, and conversion."
      responses:
        '200':
          description: HTML page

  /pricing:
    get:
      operationId: getPricing
      summary: "Pricing page"
      description: "Free, Plus Monthly, Plus Yearly, Pro Monthly, Pro Yearly, and Pro Lifetime plan details."
      responses:
        '200':
          description: HTML page

  /blog:
    get:
      operationId: getBlog
      summary: "Blog"
      description: "Articles about transcription, productivity, accessibility, and AI speech-to-text."
      responses:
        '200':
          description: HTML page

  /faq:
    get:
      operationId: getFAQ
      summary: "FAQ page"
      description: "Frequently asked questions about Vocova transcription, pricing, languages, and exports."
      responses:
        '200':
          description: HTML page

  /about:
    get:
      operationId: getAbout
      summary: "About Vocova"
      description: "Product mission, audience, differentiators, and company background."
      responses:
        '200':
          description: HTML page

  /contact:
    get:
      operationId: getContact
      summary: "Contact"
      description: "Support channels, privacy contact, and self-serve discovery links."
      responses:
        '200':
          description: HTML page

  /developers:
    get:
      operationId: getDevelopers
      summary: "Developer resources"
      description: "Honest integration notes, agent discovery surface, authentication status, and public API status."
      responses:
        '200':
          description: HTML page

  /terms:
    get:
      operationId: getTerms
      summary: "Terms of service"
      description: "Vocova terms of service."
      responses:
        '200':
          description: HTML page

  /privacy:
    get:
      operationId: getPrivacy
      summary: "Privacy policy"
      description: "Vocova privacy policy and data handling practices."
      responses:
        '200':
          description: HTML page

  /login:
    get:
      operationId: getLogin
      summary: "Login"
      description: "Sign in to Vocova with email OTP or Google OAuth."
      responses:
        '200':
          description: HTML page

  /tools/transcribe-youtube:
    get:
      operationId: getToolTranscribeYoutube
      summary: "YouTube transcription"
      description: "Convert any YouTube video to accurate, searchable text"
      responses:
        '200':
          description: HTML page

  /tools/audio-to-text:
    get:
      operationId: getToolAudioToText
      summary: "Audio to text"
      description: "Upload any audio file and get accurate text instantly"
      responses:
        '200':
          description: HTML page

  /tools/video-to-text:
    get:
      operationId: getToolVideoToText
      summary: "Video to text"
      description: "Extract accurate text from any video file with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-podcast:
    get:
      operationId: getToolTranscribePodcast
      summary: "Podcast transcription"
      description: "Transcribe podcast episodes with speaker labels for show notes and repurposing"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-bilibili:
    get:
      operationId: getToolTranscribeBilibili
      summary: "Bilibili transcription"
      description: "Transcribe Bilibili videos to text, including multi-part series and Chinese dialects"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-zoom:
    get:
      operationId: getToolTranscribeZoom
      summary: "Zoom transcription"
      description: "Turn Zoom meeting recordings into searchable text transcripts"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-google-meet:
    get:
      operationId: getToolTranscribeGoogleMeet
      summary: "Google Meet transcription"
      description: "Transcribe Google Meet recordings with speaker labels, on any Workspace tier"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-tiktok:
    get:
      operationId: getToolTranscribeTiktok
      summary: "TikTok transcription"
      description: "Transcribe TikTok audio to text, including Duets, Stitches, and trending sounds"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-loom:
    get:
      operationId: getToolTranscribeLoom
      summary: "Loom transcription"
      description: "Transcribe Loom recordings into documentation, on any plan"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-vimeo:
    get:
      operationId: getToolTranscribeVimeo
      summary: "Vimeo transcription"
      description: "Transcribe Vimeo videos for accessibility compliance and subtitle generation"
      responses:
        '200':
          description: HTML page

  /tools/podcast-summarizer:
    get:
      operationId: getToolPodcastSummarizer
      summary: "Podcast summarizer"
      description: "Get key takeaways from any podcast episode in minutes"
      responses:
        '200':
          description: HTML page

  /tools/youtube-summarizer:
    get:
      operationId: getToolYoutubeSummarizer
      summary: "YouTube summarizer"
      description: "Get key points from any YouTube video in minutes"
      responses:
        '200':
          description: HTML page

  /tools/subtitle-generator:
    get:
      operationId: getToolSubtitleGenerator
      summary: "Subtitle generator"
      description: "Upload audio or video and get ready-to-use subtitle files"
      responses:
        '200':
          description: HTML page

  /tools/translate-audio:
    get:
      operationId: getToolTranslateAudio
      summary: "Audio translation"
      description: "Upload audio in any language and translate it to 140+ languages"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-interview:
    get:
      operationId: getToolTranscribeInterview
      summary: "Interview transcription"
      description: "Transcribe interviews with speaker diarization for research and documentation"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-lecture:
    get:
      operationId: getToolTranscribeLecture
      summary: "Lecture transcription"
      description: "Transcribe lectures for study notes and accessibility compliance"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-apple-podcasts:
    get:
      operationId: getToolTranscribeApplePodcasts
      summary: "Apple Podcasts transcription"
      description: "Full transcripts with speaker labels — beyond Apple's built-in feature"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-instagram:
    get:
      operationId: getToolTranscribeInstagram
      summary: "Instagram transcription"
      description: "Transcribe Reels and video posts — speech separated from background music"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-facebook:
    get:
      operationId: getToolTranscribeFacebook
      summary: "Facebook transcription"
      description: "Transcribe video posts and multi-hour Live streams with speaker labels"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-x:
    get:
      operationId: getToolTranscribeX
      summary: "X (Twitter) transcription"
      description: "Transcribe video tweets and Spaces — before they get deleted"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-soundcloud:
    get:
      operationId: getToolTranscribeSoundcloud
      summary: "SoundCloud transcription"
      description: "Transcribe speech from SoundCloud — voice separated from music"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-reddit:
    get:
      operationId: getToolTranscribeReddit
      summary: "Reddit transcription"
      description: "Transcribe Reddit videos — even the ones with terrible audio"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-dailymotion:
    get:
      operationId: getToolTranscribeDailymotion
      summary: "Dailymotion transcription"
      description: "Transcribe Dailymotion videos — strong with French and European content"
      responses:
        '200':
          description: HTML page

  /tools/mp4-to-text:
    get:
      operationId: getToolMp4ToText
      summary: "MP4 to text"
      description: "Transcribe MP4 video — any codec, any audio track, any source"
      responses:
        '200':
          description: HTML page

  /tools/mp3-to-text:
    get:
      operationId: getToolMp3ToText
      summary: "MP3 to text"
      description: "Transcribe MP3 files with VBR-aware timing and artifact tolerance"
      responses:
        '200':
          description: HTML page

  /tools/wav-to-text:
    get:
      operationId: getToolWavToText
      summary: "WAV to text"
      description: "Transcribe lossless WAV audio — sample rate myths debunked"
      responses:
        '200':
          description: HTML page

  /tools/m4a-to-text:
    get:
      operationId: getToolM4aToText
      summary: "M4A to text"
      description: "Transcribe M4A from Voice Memos, iPhone, and Apple devices"
      responses:
        '200':
          description: HTML page

  /tools/audio-converter:
    get:
      operationId: getToolAudioConverter
      summary: "Audio converter"
      description: "Convert audio files between MP3, WAV, M4A, FLAC and more"
      responses:
        '200':
          description: HTML page

  /tools/video-converter:
    get:
      operationId: getToolVideoConverter
      summary: "Video converter"
      description: "Convert video files between MP4, WebM, MOV, MKV and more"
      responses:
        '200':
          description: HTML page

  /tools/convert-mp4-to-mp3:
    get:
      operationId: getToolConvertMp4ToMp3
      summary: "MP4 to MP3"
      description: "Extract MP3 audio from MP4 videos at 192 kbps"
      responses:
        '200':
          description: HTML page

  /tools/mov-to-text:
    get:
      operationId: getToolMovToText
      summary: "MOV to text"
      description: "Transcribe MOV from iPhone, QuickTime, and ProRes cameras"
      responses:
        '200':
          description: HTML page

  /tools/srt-generator:
    get:
      operationId: getToolSrtGenerator
      summary: "SRT generator"
      description: "Generate spec-compliant SRT subtitles with proper formatting"
      responses:
        '200':
          description: HTML page

  /tools/vtt-generator:
    get:
      operationId: getToolVttGenerator
      summary: "VTT generator"
      description: "Generate WebVTT subtitles for HTML5 video and HLS streaming"
      responses:
        '200':
          description: HTML page

  /tools/bilingual-subtitles:
    get:
      operationId: getToolBilingualSubtitles
      summary: "Bilingual subtitles"
      description: "Generate dual-language subtitles from any audio or video file"
      responses:
        '200':
          description: HTML page

  /tools/translate-video:
    get:
      operationId: getToolTranslateVideo
      summary: "Video translation"
      description: "Translate video audio to 140+ languages with accurate subtitles"
      responses:
        '200':
          description: HTML page

  /tools/japanese-to-english:
    get:
      operationId: getToolJapaneseToEnglish
      summary: "Japanese to English"
      description: "Transcribe and translate Japanese audio to English text"
      responses:
        '200':
          description: HTML page

  /tools/chinese-to-english:
    get:
      operationId: getToolChineseToEnglish
      summary: "Chinese to English"
      description: "Transcribe and translate Mandarin Chinese audio to English text"
      responses:
        '200':
          description: HTML page

  /tools/spanish-to-english:
    get:
      operationId: getToolSpanishToEnglish
      summary: "Spanish to English"
      description: "Transcribe and translate Spanish audio to English text"
      responses:
        '200':
          description: HTML page

  /tools/korean-to-english:
    get:
      operationId: getToolKoreanToEnglish
      summary: "Korean to English"
      description: "Transcribe and translate Korean audio to English text"
      responses:
        '200':
          description: HTML page

  /tools/french-to-english:
    get:
      operationId: getToolFrenchToEnglish
      summary: "French to English"
      description: "Transcribe and translate French audio to English text"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-japanese:
    get:
      operationId: getToolTranscribeJapanese
      summary: "Japanese transcription"
      description: "Transcribe Japanese audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-spanish:
    get:
      operationId: getToolTranscribeSpanish
      summary: "Spanish transcription"
      description: "Transcribe Spanish audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-french:
    get:
      operationId: getToolTranscribeFrench
      summary: "French transcription"
      description: "Transcribe French audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-german:
    get:
      operationId: getToolTranscribeGerman
      summary: "German transcription"
      description: "Transcribe German audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-portuguese:
    get:
      operationId: getToolTranscribePortuguese
      summary: "Portuguese transcription"
      description: "Transcribe Portuguese audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-korean:
    get:
      operationId: getToolTranscribeKorean
      summary: "Korean transcription"
      description: "Transcribe Korean audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-chinese:
    get:
      operationId: getToolTranscribeChinese
      summary: "Chinese transcription"
      description: "Transcribe Chinese (Mandarin) audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-arabic:
    get:
      operationId: getToolTranscribeArabic
      summary: "Arabic transcription"
      description: "Transcribe Arabic audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-hindi:
    get:
      operationId: getToolTranscribeHindi
      summary: "Hindi transcription"
      description: "Transcribe Hindi audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-italian:
    get:
      operationId: getToolTranscribeItalian
      summary: "Italian transcription"
      description: "Transcribe Italian audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-russian:
    get:
      operationId: getToolTranscribeRussian
      summary: "Russian transcription"
      description: "Transcribe Russian audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-thai:
    get:
      operationId: getToolTranscribeThai
      summary: "Thai transcription"
      description: "Transcribe Thai audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-vietnamese:
    get:
      operationId: getToolTranscribeVietnamese
      summary: "Vietnamese transcription"
      description: "Transcribe Vietnamese audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-turkish:
    get:
      operationId: getToolTranscribeTurkish
      summary: "Turkish transcription"
      description: "Transcribe Turkish audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-indonesian:
    get:
      operationId: getToolTranscribeIndonesian
      summary: "Indonesian transcription"
      description: "Transcribe Indonesian audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-dutch:
    get:
      operationId: getToolTranscribeDutch
      summary: "Dutch transcription"
      description: "Transcribe Dutch audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-polish:
    get:
      operationId: getToolTranscribePolish
      summary: "Polish transcription"
      description: "Transcribe Polish audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-swedish:
    get:
      operationId: getToolTranscribeSwedish
      summary: "Swedish transcription"
      description: "Transcribe Swedish audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-cantonese:
    get:
      operationId: getToolTranscribeCantonese
      summary: "Cantonese transcription"
      description: "Transcribe Cantonese audio and video with AI"
      responses:
        '200':
          description: HTML page

  /tools/transcribe-tagalog:
    get:
      operationId: getToolTranscribeTagalog
      summary: "Tagalog transcription"
      description: "Transcribe Tagalog and Filipino audio and video with AI"
      responses:
        '200':
          description: HTML page
