Wispr AI Authentication API

The Authentication API from Wispr AI — 38 operation(s) for authentication.

OpenAPI Specification

wispr-ai-authentication-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Wispr Backend Analytics Authentication API
  description: Wispr Backend API
  version: 0.5.2
tags:
- name: Authentication
paths:
  /health:
    get:
      tags:
      - Authentication
      summary: Health
      operationId: health
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /version:
    get:
      tags:
      - Authentication
      summary: Version
      operationId: version
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /warmup:
    get:
      tags:
      - Authentication
      summary: Warmup
      operationId: warmup
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - ApiKeyHeaderPatched: []
  /google/sign_in:
    get:
      tags:
      - Authentication
      summary: Google Sign In
      operationId: google_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /apple/sign_in:
    get:
      tags:
      - Authentication
      summary: Apple Sign In
      operationId: apple_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /microsoft/sign_in:
    get:
      tags:
      - Authentication
      summary: Microsoft Sign In
      operationId: microsoft_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /sso/sign_in:
    get:
      tags:
      - Authentication
      summary: Sso Sign In
      operationId: sso_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: email
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /authkit/google/sign_in:
    get:
      tags:
      - Authentication
      summary: Authkit Google Sign In
      operationId: authkit_google_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /authkit/sso/sign_in:
    get:
      tags:
      - Authentication
      summary: Authkit Sso Sign In
      operationId: authkit_sso_sign_in
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: email
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /authkit/google/callback:
    get:
      tags:
      - Authentication
      summary: Authkit Google Callback
      operationId: authkit_google_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /authkit/sso/callback:
    get:
      tags:
      - Authentication
      summary: Authkit Sso Callback
      operationId: authkit_sso_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /google/login:
    get:
      tags:
      - Authentication
      summary: Google Callback
      operationId: google_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /apple/login:
    get:
      tags:
      - Authentication
      summary: Apple Callback
      operationId: apple_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /microsoft/login:
    get:
      tags:
      - Authentication
      summary: Microsoft Callback
      operationId: microsoft_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /sso/callback:
    get:
      tags:
      - Authentication
      summary: Sso Callback
      description: 'Handle SSO callback for both SP-initiated and IdP-initiated flows.


        SP-initiated: Has session parameter → uses PKCE-enabled Supabase client

        IdP-initiated: No session parameter → uses admin Supabase client

        AuthKit tracer: state parameter without session → AuthKit callback, with legacy fallback'
      operationId: sso_callback
      parameters:
      - name: source
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Source
      - name: is_platform_user
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Is Platform User
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /user_status:
    get:
      tags:
      - Authentication
      summary: User Status
      operationId: user_status
      parameters:
      - name: email
        in: query
        required: true
        schema:
          type: string
          title: Email
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email_verification_status:
    get:
      tags:
      - Authentication
      summary: Email Verification Status
      description: "Check if a user's email is verified by checking the email_confirmed_at field.\n\nArgs:\n    user_id: The Supabase user ID\n\nReturns:\n    A response with the is_verified status"
      operationId: email_verification_status
      parameters:
      - name: user_id
        in: query
        required: true
        schema:
          type: string
          title: User Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /signup:
    post:
      tags:
      - Authentication
      summary: Signup
      operationId: signup
      parameters:
      - name: trial_promo
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Trial Promo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignupUserRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /signup_raw_email:
    post:
      tags:
      - Authentication
      summary: Signup Raw Email
      operationId: signup_raw_email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RawEmailSignupRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /confirm_raw_email:
    get:
      tags:
      - Authentication
      summary: Confirm Email
      operationId: confirm_email
      parameters:
      - name: email
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: email
          - type: 'null'
          title: Email
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /add_to_waitlist:
    post:
      tags:
      - Authentication
      summary: Add To Waitlist
      operationId: add_to_waitlist
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddToWaitlistRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/signup:
    post:
      tags:
      - Authentication
      summary: Sign Up With Email
      operationId: sign_up_with_email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignupWithEmailRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/signup-captcha:
    post:
      tags:
      - Authentication
      summary: Sign Up With Email Captcha
      operationId: sign_up_with_email_captcha
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignupWithEmailCaptchaRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/signin:
    post:
      tags:
      - Authentication
      summary: Sign In With Email
      operationId: sign_in_with_email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SigninWithEmailRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigninWithEmailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/signin-captcha:
    post:
      tags:
      - Authentication
      summary: Sign In With Email Captcha
      operationId: sign_in_with_email_captcha
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SigninWithEmailCaptchaRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SigninWithEmailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/login:
    get:
      tags:
      - Authentication
      summary: Email Callback
      description: Handle email verification callback from Supabase.
      operationId: email_callback
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
  /email/reset-password-callback:
    get:
      tags:
      - Authentication
      summary: Reset Password Callback
      operationId: reset_password_callback
      responses:
        '200':
          description: Successful Response
          content:
            text/html:
              schema:
                type: string
  /email/reset-password:
    post:
      tags:
      - Authentication
      summary: Reset Password
      operationId: reset_password
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResetPasswordRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/request-reset-password:
    post:
      tags:
      - Authentication
      summary: Request Reset Password
      description: "Request a password reset email for a user.\n\nArgs:\n    reset_request: The request containing the user's email\n    authentication_service: Authentication service instance\n    supabase_client: Supabase client instance\n\nReturns:\n    JSON response indicating success/failure of the request"
      operationId: request_reset_password
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestResetPasswordRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/request-reset-password-captcha:
    post:
      tags:
      - Authentication
      summary: Request Reset Password Captcha
      description: "Request a password reset email for a user.\n\nArgs:\n    reset_request: The request containing the user's email and captcha token\n    authentication_service: Authentication service instance\n    supabase_client: Supabase client instance\n\nReturns:\n    JSON response indicating success/failure of the request"
      operationId: request_reset_password_captcha
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestResetPasswordCaptchaRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/resend-verification-email:
    post:
      tags:
      - Authentication
      summary: Resend Verification Email
      operationId: resend_verification_email
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendVerificationEmailRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/resend-verification-email-captcha:
    post:
      tags:
      - Authentication
      summary: Resend Verification Email Captcha
      operationId: resend_verification_email_captcha
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResendVerificationEmailCaptchaRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /email/validate:
    get:
      tags:
      - Authentication
      summary: Validate Email
      description: "Validate an email address using Twilio SendGrid's API for signup.\n\nArgs:\n    email: The email address to validate\n\nReturns:\n    A JSON response with the validation result (dictionary with \"verdict\" and \"score\") and status code"
      operationId: validate_email
      parameters:
      - name: email
        in: query
        required: true
        schema:
          type: string
          title: Email
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /.well-known/apple-app-site-association:
    get:
      tags:
      - Authentication
      summary: Apple App Site Association
      description: Returns the Apple App Site Association file.
      operationId: apple_app_site_association
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /email/create-user:
    post:
      tags:
      - Authentication
      summary: Create User
      description: 'Admin endpoint to create a new user and send them a password reset email.

        Only accessible by Wispr admins (@wispr.ai emails).'
      operationId: create_user
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '429':
          description: Too Many Requests
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - ApiKeyHeaderPatched: []
  /device/complete:
    post:
      tags:
      - Authentication
      summary: Device Complete
      description: 'Called by the web app after successful auth to submit tokens for a device code.

        Pushes tokens to a Redis list — the Server-Sent Events (SSE) stream picks them up instantly via BLPOP.'
      operationId: device_complete
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceCodeCompleteRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
      - ApiKeyHeaderPatched: []
  /device/stream:
    get:
      tags:
      - Authentication
      summary: Device Stream
      description: 'Server-Sent Events (SSE) endpoint — desktop holds this connection open until tokens arrive or timeout.

        Uses Redis BLPOP (blocking list pop) to block until data is pushed, with 25s cycles

        for Application Load Balancer (ALB) heartbeats.'
      operationId: device_stream
      parameters:
      - name: device_code
        in: query
        required: true
        schema:
          type: string
          format: uuid
          title: Device Code
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /device/poll:
    get:
      tags:
      - Authentication
      summary: Device Poll
      description: 'Fallback polling endpoint — desktop uses this if the SSE connection drops.

        Checks both the main list (LPOP) and the delivered key (GETDEL) in case

        BLPOP consumed the token but the SSE stream died before delivery.'
      operationId: device_poll
      parameters:
      - name: device_code
        in: query
        required: true
        schema:
          type: string
          format: uuid
          title: Device Code
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceAuthResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    SignupWithEmailRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
        password:
          type: string
          title: Password
        full_name:
          type: string
          title: Full Name
        device_code:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Device Code
      type: object
      required:
      - email
      - password
      - full_name
      title: SignupWithEmailRequest
      description: Email-and-password signup request, optionally tied to a device code.
    RequestResetPasswordRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
      type: object
      required:
      - email
      title: RequestResetPasswordRequest
      description: Request to send a password-reset email to the given address.
    ResetPasswordRequest:
      properties:
        access_token:
          type: string
          title: Access Token
        refresh_token:
          type: string
          title: Refresh Token
        new_password:
          type: string
          title: New Password
      type: object
      required:
      - access_token
      - refresh_token
      - new_password
      title: ResetPasswordRequest
      description: Password-reset request authenticated by access and refresh tokens.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SigninWithEmailRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
        password:
          type: string
          title: Password
        is_platform_user:
          type: boolean
          title: Is Platform User
          default: false
        workos_capable:
          type: boolean
          title: Workos Capable
          default: false
        mcp_login_state:
          anyOf:
          - type: string
          - type: 'null'
          title: Mcp Login State
        provision:
          type: boolean
          title: Provision
          default: true
      type: object
      required:
      - email
      - password
      title: SigninWithEmailRequest
      description: Email-and-password sign-in request with platform and WorkOS flags.
    SignupWithEmailCaptchaRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
        password:
          type: string
          title: Password
        full_name:
          type: string
          title: Full Name
        captcha_token:
          type: string
          title: Captcha Token
        device_code:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Device Code
        redirect_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      type: object
      required:
      - email
      - password
      - full_name
      - captcha_token
      title: SignupWithEmailCaptchaRequest
      description: Email-and-password signup request guarded by a required captcha token.
    SigninWithEmailCaptchaRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
        password:
          type: string
          title: Password
        is_platform_user:
          type: boolean
          title: Is Platform User
          default: false
        workos_capable:
          type: boolean
          title: Workos Capable
          default: false
        mcp_login_state:
          anyOf:
          - type: string
          - type: 'null'
          title: Mcp Login State
        provision:
          type: boolean
          title: Provision
          default: true
        captcha_token:
          type: string
          title: Captcha Token
      type: object
      required:
      - email
      - password
      - captcha_token
      title: SigninWithEmailCaptchaRequest
      description: Email sign-in request that additionally carries a captcha token.
    ResendVerificationEmailCaptchaRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
        captcha_token:
          type: string
          title: Captcha Token
        redirect_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Redirect Url
      type: object
      required:
      - email
      - captcha_token
      title: ResendVerificationEmailCaptchaRequest
      description: Resend-verification request guarded by a required captcha token.
    CreateUserRequest:
      properties:
        email:
          type: string
          format: email
          tit

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wispr-ai/refs/heads/main/openapi/wispr-ai-authentication-api-openapi.yml