Google Flow API v1

REST API for Google Flow (Veo 3.1 video, Gemini Omni Flash audio-native video, Imagen 4 and Nano Banana image generation) driven through one or more linked Google accounts, with a captcha-solver pipeline, per-account quarantine on Google 429 quota reasons and automated load balancing.

OpenAPI Specification

useapi-google-flow-v1-openapi.yml Raw ↑
# Derived from the first-party useapi.net Postman collection: https://useapi.net/assets/postman/google-flow-v1.json
# method: derived  |  no operation, path, parameter or example was invented.
openapi: 3.1.0
info:
  title: Google Flow API v1 by useapi.net
  version: 1.0.0
  description: "Experimental API for Google Flow with full support for Veo, Imagen 4, and Nano Banana.\n\n**Features:**\n\n\
    - Multiple Google accounts with automated load balancing\n    \n- Real-time webhooks for job events (replyUrl parameter)\n\
    \    \n- Async mode for fire-and-forget video generation\n    \n- Dynamic concurrency management\n    \n- Image and video\
    \ generation with reference image support\n    \n\n**Key Features:**\n\n- Generate images with Imagen 4 and Nano Banana\
    \ / Gemini 2.5 Flash Image\n    \n- Generate videos with Veo 3.1 Quality and Fast models\n    \n- T2V, I2V, I2V-FL, and\
    \ R2V generation modes\n    \n- Reference images support (style and context references)\n    \n- Use free Google accounts\
    \ for unlimited image generations\n    \n- Use Google AI Ultra subscription for unlimited Veo 3.1 Fast video generations\n\
    \    \n\n**Commands:**\n\n- [POST /images](https://useapi.net/docs/api-google-flow-v1/post-google-flow-images) - Generate\
    \ images with Imagen 4 or Nano Banana\n    \n- [POST /videos](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos)\
    \ - Generate videos with Veo 3.1 Quality or Fast\n    \n- [POST /assets/<email>](https://useapi.net/docs/api-google-flow-v1/post-google-flow-assets-email)\
    \ - Upload assets (PNG, JPEG)\n    \n- [POST /videos/extend](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-extend)\
    \ - Extend video with a new prompt\n    \n- [POST /videos/concatenate](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-concatenate)\
    \ - Concatenate multiple videos\n    \n- [GET /jobs](https://useapi.net/docs/api-google-flow-v1/get-google-flow-jobs)\
    \ - Get load balancing statistics\n    \n- [GET /jobs/<jobid>](https://useapi.net/docs/api-google-flow-v1/get-google-flow-jobs-jobid)\
    \ - Get job status and results\n    \n- [GET /accounts](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts)\
    \ - List all configured accounts\n    \n- [GET /accounts/<email>](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts-email)\
    \ - Get specific account configuration\n    \n- [POST /accounts](https://useapi.net/docs/api-google-flow-v1/post-google-flow-accounts)\
    \ - Configure Google Flow account\n    \n- [DELETE /accounts/<email>](https://useapi.net/docs/api-google-flow-v1/delete-google-flow-accounts-email)\
    \ - Delete account configuration\n    \n- [GET /accounts/captcha-stats](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts-captcha-stats)\
    \ - Query captcha solving statistics\n    \n\nVisit [https://useapi.net/docs/api-google-flow-v1](https://useapi.net/docs/api-google-flow-v1)\
    \ for complete documentation.\n\n---\n**Updated:** June 9, 2026"
  contact:
    name: useapi.net support
    email: support@useapi.net
    url: https://useapi.net/docs/support
  x-derived-from: https://useapi.net/assets/postman/google-flow-v1.json
externalDocs:
  description: google-flow documentation
  url: https://useapi.net/docs/api-google-flow-v1
servers:
- url: https://api.useapi.net/v1/google-flow
security:
- bearerAuth: []
tags:
- name: google-flow
  description: Google Flow API v1 by useapi.net
paths:
  /accounts:
    get:
      operationId: getAccounts
      summary: GET accounts
      description: 'List all configured Google Flow accounts for your API token.


        Returns an object with account emails as keys and their health status.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts)'
      tags:
      - google-flow
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
    post:
      operationId: postAccounts
      summary: POST accounts
      description: 'Configure your Google account for Google Flow API access.


        Requires cookies from accounts.google.com. The email is automatically extracted from the cookies.


        See [Setup Google Flow](https://useapi.net/docs/start-here/setup-google-flow) for detailed instructions on how to
        obtain these cookies.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-accounts)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                cookies:
                  type: string
            example:
              cookies: Cookies copied from Chrome DevTools in table format. See Setup Google Flow guide for details.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /accounts/{email}:
    get:
      operationId: getAccountsByEmail
      summary: GET accounts/<email>
      description: 'Get configuration and health status for a specific Google Flow account.


        Returns health status, credits information, and available video models when account is healthy.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts-email)'
      tags:
      - google-flow
      parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
    delete:
      operationId: deleteAccountsByEmail
      summary: DELETE accounts/<email>
      description: 'Remove Google Flow account configuration.


        Cancels any scheduled refresh operations automatically.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/delete-google-flow-accounts-email)'
      tags:
      - google-flow
      parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /assets/{email}:
    post:
      operationId: postAssetsByEmail
      summary: POST assets/<email>
      description: 'Upload assets to Google Flow for use in image and video generation.


        Supports PNG/JPEG/WebP (image, up to 20 MB) and MP4 (video, up to 100 MB — for Omni Flash V2V edit via referenceVideo_1).


        Returns mediaGenerationId for use in reference parameters. Video uploads also return durationSeconds.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-assets-email)'
      tags:
      - google-flow
      parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /images:
    post:
      operationId: postImages
      summary: POST images
      description: 'Generate images using Imagen 4 or Nano Banana / Gemini 2.5 Flash Image.


        Supports up to 3 reference images and generates 1-4 variations.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-images)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                prompt:
                  type: string
                email:
                  type: string
                model:
                  type: string
                reference_1:
                  type: string
                reference_2:
                  type: string
                reference_3:
                  type: string
                reference_4:
                  type: string
                reference_5:
                  type: string
                reference_6:
                  type: string
                reference_7:
                  type: string
                reference_8:
                  type: string
                reference_9:
                  type: string
                reference_10:
                  type: string
                character_1:
                  type: string
                character_2:
                  type: string
                character_3:
                  type: string
                character_4:
                  type: string
                character_5:
                  type: string
                character_6:
                  type: string
                character_7:
                  type: string
                count:
                  type: string
                seed:
                  type: string
                aspectRatio:
                  type: string
                replyUrl:
                  type: string
                replyRef:
                  type: string
                captchaToken:
                  type: string
                captchaRetry:
                  type: string
                captchaOrder:
                  type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /videos:
    post:
      operationId: postVideos
      summary: POST videos
      description: 'Generate videos using Veo 3.1 (Quality / Fast / Lite / Lite Lower Priority) or Gemini Omni Flash.


        Supports T2V, I2V, I2V-FL, and R2V (Veo + Omni Flash) and V2V edit (Omni Flash only — via referenceVideo_1). Typical
        generation time: 60-180 seconds.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                prompt:
                  type: string
                email:
                  type: string
                model:
                  type: string
                startImage:
                  type: string
                endImage:
                  type: string
                referenceImage_1:
                  type: string
                referenceImage_2:
                  type: string
                referenceImage_3:
                  type: string
                referenceImage_4:
                  type: string
                referenceImage_5:
                  type: string
                referenceImage_6:
                  type: string
                referenceImage_7:
                  type: string
                character_1:
                  type: string
                character_2:
                  type: string
                character_3:
                  type: string
                character_4:
                  type: string
                character_5:
                  type: string
                character_6:
                  type: string
                character_7:
                  type: string
                referenceAudio_1:
                  type: string
                referenceAudio_2:
                  type: string
                referenceAudio_3:
                  type: string
                referenceAudio_4:
                  type: string
                referenceAudio_5:
                  type: string
                referenceVideo_1:
                  type: string
                startFrameIndex_1:
                  type: string
                endFrameIndex_1:
                  type: string
                count:
                  type: string
                seed:
                  type: string
                aspectRatio:
                  type: string
                duration:
                  type: string
                async:
                  type: string
                replyUrl:
                  type: string
                replyRef:
                  type: string
                captchaToken:
                  type: string
                captchaRetry:
                  type: string
                captchaOrder:
                  type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /jobs/:
    get:
      operationId: getJobs
      summary: GET jobs
      description: 'Get load balancing statistics across all configured Google Flow accounts.


        Provides real-time visibility into job distribution, account health, and performance metrics.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-jobs)'
      tags:
      - google-flow
      parameters:
      - name: options
        in: query
        required: true
        schema:
          type: string
        description: 'Level of detail: summary (default), executing, or history. Optional.'
        example: summary
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /jobs/{jobId}:
    get:
      operationId: getJobsByJobid
      summary: GET jobs/<jobId>
      description: 'Retrieve job status and results by job ID.


        Returns complete job information including generated images/videos with download URLs.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-jobs-jobid)'
      tags:
      - google-flow
      parameters:
      - name: jobId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /images/upscale:
    post:
      operationId: postImagesUpscale
      summary: POST images/upscale
      description: 'Upscale a previously generated image to 2K or 4K resolution.


        - 4K resolution requires a paid Google account (free accounts fail with 403 captcha_quality: PUBLIC_ERROR_UNUSUAL_ACTIVITY).


        **Body Parameters:**

        - `mediaGenerationId` (required) - The mediaGenerationId from POST /images

        - `resolution` (optional) - Target resolution: 2k (default), 4k

        - `captchaToken` (optional) - Your own reCAPTCHA v3 Enterprise token. Single attempt, no retry

        - `captchaRetry` (optional) - Number of captcha retry attempts (1-10, default: 3)

        - `captchaOrder` (optional) - Explicit captcha provider sequence as comma-separated string


        Note: captchaToken, captchaRetry, and captchaOrder are mutually exclusive.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-images-upscale)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mediaGenerationId:
                  type: string
                resolution:
                  type: string
                captchaRetry:
                  type: integer
            example:
              mediaGenerationId: user:12345-email:6a6f...-image:CAMaJDMx...
              resolution: 2k
              captchaRetry: 3
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /videos/upscale:
    post:
      operationId: postVideosUpscale
      summary: POST videos/upscale
      description: 'Upscale a previously generated video to 1080p or 4K resolution.


        - Requires paid Google AI subscription or remaining credits.

        - 4K requires Google AI Ultra subscription.

        - 1080p is free, 4K costs 50 credits.


        **Body Parameters:**

        - `mediaGenerationId` (required) - The mediaGenerationId from POST /videos

        - `resolution` (optional) - Target resolution: 1080p (default), 4k

        - `async` (optional) - true: Returns 201 immediately with jobId. false: Waits for completion. Default: false

        - `replyUrl` (optional) - Webhook URL for job event callbacks. Max 1024 characters

        - `replyRef` (optional) - Your reference ID stored with job. Max 1024 characters

        - `captchaToken` (optional) - Your own reCAPTCHA v3 Enterprise token. Single attempt, no retry

        - `captchaRetry` (optional) - Number of captcha retry attempts (1-10, default: 3)

        - `captchaOrder` (optional) - Explicit captcha provider sequence as comma-separated string


        Note: captchaToken, captchaRetry, and captchaOrder are mutually exclusive.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-upscale)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mediaGenerationId:
                  type: string
                resolution:
                  type: string
                async:
                  type: boolean
                captchaRetry:
                  type: integer
            example:
              mediaGenerationId: user:12345-email:6a6f...-video:CAMaJDMx...
              resolution: 1080p
              async: false
              captchaRetry: 3
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /videos/gif:
    post:
      operationId: postVideosGif
      summary: POST videos/gif
      description: 'Generate an animated GIF preview from a previously generated video.


        - No captcha required.

        - Can take up to 90 seconds.

        - Returns base64-encoded GIF data.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-gif)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mediaGenerationId:
                  type: string
            example:
              mediaGenerationId: user:12345-email:6a6f...-video:CAMaJDMx...
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /videos/extend:
    post:
      operationId: postVideosExtend
      summary: POST videos/extend
      description: 'Extend a previously generated video with a new prompt.


        Creates an additional 8-second segment that continues from the last ~1 second of the source video.


        **Body Parameters:**

        - `mediaGenerationId` (required) - The mediaGenerationId from POST /videos or POST /videos/extend

        - `prompt` (required) - Text description for what happens next

        - `model` (optional) - Video model: veo-3.1-fast (default), veo-3.1-fast-relaxed (Ultra only), veo-3.1-quality

        - `count` (optional) - Number of variations (1-4, default: 1)

        - `seed` (optional) - Seed for reproducible results

        - `async` (optional) - true: Returns 201 immediately. false: Waits for completion. Default: false

        - `replyUrl` (optional) - Webhook URL for callbacks

        - `replyRef` (optional) - Your reference ID

        - `captchaToken` (optional) - Your own reCAPTCHA v3 Enterprise token. Single attempt, no retry

        - `captchaRetry` (optional) - Retry attempts (1-10, default: 3)

        - `captchaOrder` (optional) - Explicit provider sequence


        Note: captchaToken, captchaRetry, and captchaOrder are mutually exclusive.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-extend)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                mediaGenerationId:
                  type: string
                prompt:
                  type: string
            example:
              mediaGenerationId: user:12345-email:6a6f...-video:CAMaJDMx...
              prompt: The camera slowly pans right revealing a majestic waterfall
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /videos/concatenate:
    post:
      operationId: postVideosConcatenate
      summary: POST videos/concatenate
      description: "Concatenate multiple videos into a single video.\n\nCombines 2-10 videos with optional trimming for smooth\
        \ transitions. Returns base64-encoded video (~7MB per input).\n\n**Body Parameters:**\n- `media` (required) - Array\
        \ of 2-10 video objects:\n  - `mediaGenerationId` (required) - Video reference from POST /videos\n  - `trimStart`\
        \ (optional) - Seconds to trim from start (0-8). Use 1 for extended videos to remove overlap.\n  - `trimEnd` (optional)\
        \ - Seconds to trim from end (0-8)\n\n- No captcha required.\n- All videos must have the same aspect ratio.\n- Synchronous\
        \ - waits for completion.\n\n[Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-videos-concatenate)"
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                media:
                  type: array
                  items:
                    type: object
                    properties:
                      mediaGenerationId:
                        type: string
            example:
              media:
              - mediaGenerationId: user:12345-email:...-video:...
              - mediaGenerationId: user:12345-email:...-video:...
                trimStart: 1
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /accounts/captcha-providers:
    get:
      operationId: getAccountsCaptchaProviders
      summary: GET accounts/captcha-providers
      description: 'Retrieve configured captcha provider API keys (masked for security).


        Returns masked keys for AntiCaptcha, EzCaptcha, CapSolver, and YesCaptcha if configured.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts-captcha-providers)'
      tags:
      - google-flow
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
    post:
      operationId: postAccountsCaptchaProviders
      summary: POST accounts/captcha-providers
      description: 'Configure captcha provider API keys for image and video generation.


        Supported providers: AntiCaptcha, EzCaptcha, CapSolver (promo code useapi for 8% discount), YesCaptcha.


        Set a field to empty string to remove that provider.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/post-google-flow-accounts-captcha-providers)'
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                AntiCaptcha:
                  type: string
                CapSolver:
                  type: string
            example:
              AntiCaptcha: <your AntiCaptcha API key>
              CapSolver: <your CapSolver API key>
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /accounts/captcha-stats:
    get:
      operationId: getAccountsCaptchaStats
      summary: GET accounts/captcha-stats
      description: 'Query captcha solving statistics for your account.


        Returns detailed information about captcha token requests including success/failure rates, solve times, and provider
        breakdowns.


        [Documentation](https://useapi.net/docs/api-google-flow-v1/get-google-flow-accounts-captcha-stats)'
      tags:
      - google-flow
      parameters:
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: Filter by date (YYYY-MM-DD). Defaults to today if limit not specified. Optional.
      - name: limit
        in: query
        required: false
        schema:
          type: string
        description: Number of records to return (max 50000). If specified, date filter is ignored. Optional.
      - name: provider
        in: query
        required: false
        schema:
          type: string
        description: 'Filter by captcha provider: AntiCaptcha, EzCaptcha, CapSolver, YesCaptcha, UserProvided. Optional.'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /voices:
    post:
      operationId: postVoices
      summary: POST voices
      description: Create a user (custom) voice on the specified account. Captcha-gated.
      tags:
      - google-flow
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                email:
                  type: string
                voice:
                  type: string
                displayName:
                  type: string
                dialog:
                  type: string
                voicePerformance:
                  type: string
                captchaToken:
                  type: string
                captchaRetry:
                  type: string
                captchaOrder:
                  type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
    get:
      operationId: getVoices
      summary: GET voices
      description: List system + user voices on the account. Fast — no audioUrl resolution. Use GET /voices/<ref> to play
        a specific voice.
      tags:
      - google-flow
      parameters:
      - name: email
        in: query
        required: true
        schema:
          type: string
        description: Account email. Required.
      - name: source
        in: query
        required: false
        schema:
          type: string
        description: Filter by 'system' or 'user'. Omit for both. Optional.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request — invalid or missing parameter
        '401':
          description: Unauthorized — invalid useapi.net API token
        '429':
          description: Too Many Requests — see the Retry-After header
  /voices/{ref}:
    get:
      operationId: getVoicesByRef
      summary: GET voices/<ref>
      description: Resolve a single voice with playback URL. System voice -> static sampleUrl. User voice -> signed audioUrl
        (~6h). CF-cached 1h.
      tags:
      - google-flow
      parameters:
      - name: ref
        in: path
        required: true
        schema:
          type: string
    

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/useapi/refs/heads/main/openapi/useapi-google-flow-v1-openapi.yml