Wispr AI LLM API
The LLM API from Wispr AI — 20 operation(s) for llm.
The LLM API from Wispr AI — 20 operation(s) for llm.
openapi: 3.0.3
info:
title: Wispr Backend Analytics LLM API
description: Wispr Backend API
version: 0.5.2
tags:
- name: LLM
paths:
/llm/api:
post:
tags:
- LLM
summary: Flow Api
operationId: flow_api
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Body_flow_api_llm_api_post'
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: []
/llm/asr:
post:
tags:
- LLM
summary: Asr
operationId: asr
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Body_asr_llm_asr_post'
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: []
/llm/formatting:
post:
tags:
- LLM
summary: Formatting
operationId: formatting
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FormattingRequest'
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: []
/llm/completion:
post:
tags:
- LLM
summary: Completion
operationId: completion
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CompletionRequest'
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: []
/llm/ocr:
post:
tags:
- LLM
summary: Ocr
operationId: ocr
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OCRRequest'
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: []
/llm/extract_asr_words:
post:
tags:
- LLM
summary: Extract Asr Words
operationId: extract_asr_words
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractASRWordsRequest'
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: []
/llm/format_non_english:
post:
tags:
- LLM
summary: Format Non English Endpoint
operationId: format_non_english_endpoint
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NonEnglishFormattingRequest'
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: []
/llm/asr_audio_chunks:
post:
tags:
- LLM
summary: Asr Audio Chunks
operationId: asr_audio_chunks
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AsrAudioChunksRequest'
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: []
/llm/command_mode_route:
post:
tags:
- LLM
summary: Command Mode Route
operationId: command_mode_route
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CommandModeRouteRequest'
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: []
/llm/command_mode:
post:
tags:
- LLM
summary: Command Mode
operationId: command_mode
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CommandModeRequest'
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: []
/llm/instruct_mode:
post:
tags:
- LLM
summary: Instruct Mode
operationId: instruct_mode
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InstructModeRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InstructModeResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/polish_text:
post:
tags:
- LLM
summary: Polish Text
operationId: polish_text
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PolishTextRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/PolishTextResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/extract_edited_words:
post:
tags:
- LLM
summary: Extract Edited Words
description: 'Extract proper nouns, technical terms, or domain-specific terms that were edited
between the original pasted text and the edited text.'
operationId: extract_edited_words
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractEditedWordsRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractEditedWordsResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/classify_intent:
post:
tags:
- LLM
summary: Classify Intent
description: 'Classify voice input into one of the provided routes.
Returns the matched route plus optional per-route structured data the classifier'
operationId: classify_intent
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClassifyIntentRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ClassifyIntentResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/detect_formality:
post:
tags:
- LLM
summary: Detect Formality
description: 'Classify text messages into one of three formality levels based on
capitalization, punctuation and other use of informal language.
Levels: very_casual, casual, formal'
operationId: detect_formality
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DetectFormalityRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DetectFormalityResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/check_sensibility:
post:
tags:
- LLM
summary: Check Sensibility
description: 'Check if a transcribed message makes sense in context.
Returns a score from 0.0 (nonsensical) to 1.0 (makes perfect sense).
Used to warn users before they send potentially embarrassing messages.'
operationId: check_sensibility
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CheckSensibilityRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CheckSensibilityResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/chat:
post:
tags:
- LLM
summary: Flow Response
operationId: flow_response
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FlowResponseRequest'
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: []
/llm/flow_state_2025:
get:
tags:
- LLM
summary: Fetch Flow State 2025
operationId: fetch_flow_state_2025
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/FlowState2025Response'
security:
- ApiKeyHeaderPatched: []
post:
tags:
- LLM
summary: Create Flow State 2025
operationId: create_flow_state_2025
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/HistoryRowsRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/FlowState2025Response'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/llm/voice_profile/latest:
get:
tags:
- LLM
summary: Fetch Latest Voice Profile
operationId: fetch_latest_voice_profile
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceProfileResponse'
security:
- ApiKeyHeaderPatched: []
/llm/voice_profile:
get:
tags:
- LLM
summary: Fetch Voice Profile
operationId: fetch_voice_profile
security:
- ApiKeyHeaderPatched: []
parameters:
- name: word_count_milestone
in: query
required: false
schema:
anyOf:
- enum:
- 2000
- 12000
- 37000
- 87000
- 162000
- 262000
- 362000
- 462000
- 562000
- 662000
type: integer
- type: 'null'
title: Word Count Milestone
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceProfileResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- LLM
summary: Create Voice Profile
operationId: create_voice_profile
security:
- ApiKeyHeaderPatched: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceProfileRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/VoiceProfileResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
TransformProviderConfig:
properties:
provider:
anyOf:
- $ref: '#/components/schemas/OpenAIProviderConfig'
- $ref: '#/components/schemas/CerebrasProviderConfig'
- $ref: '#/components/schemas/AnthropicProviderConfig'
- $ref: '#/components/schemas/RaceProviderConfig'
title: Provider
type: object
required:
- provider
title: TransformProviderConfig
description: Wrapper pairing a transform with its provider config.
CommandModeRouteRequest:
properties:
full_text:
type: string
title: Full Text
selected_text:
type: string
title: Selected Text
instruction:
type: string
title: Instruction
type: object
required:
- full_text
- selected_text
- instruction
title: CommandModeRouteRequest
WritingSample:
properties:
text:
type: string
title: Text
prompt_name:
anyOf:
- type: string
- type: 'null'
title: Prompt Name
type: object
required:
- text
title: WritingSample
description: A single writing sample provided by the user for voice/style matching.
PolishInstructions:
properties:
default:
additionalProperties:
type: boolean
type: object
title: Default
default: {}
custom:
additionalProperties:
type: boolean
type: object
title: Custom
default: {}
type: object
title: PolishInstructions
description: Saved toggle rules for Polish transforms (built-in defaults + custom).
Conversation:
properties:
id:
type: string
title: Id
description: Identifier of the conversation
participants:
items:
type: string
type: array
title: Participants
description: List of participants in the conversation
messages:
items:
$ref: '#/components/schemas/ChatMessage'
type: array
title: Messages
description: List of messages in the conversation
type: object
required:
- id
title: Conversation
AppType:
type: string
enum:
- email
- ai
- word
- terminal
- other
title: AppType
description: Represents the type of app the user is trying to paste in.
HistoryRow:
properties:
formatted_text:
type: string
title: Formatted Text
timestamp:
type: string
format: date-time
title: Timestamp
app_name:
type: string
title: App Name
detected_language:
anyOf:
- type: string
- type: 'null'
title: Detected Language
type: object
required:
- formatted_text
- timestamp
- app_name
title: HistoryRow
OCRRequest:
properties:
image:
type: string
title: Image
type: object
required:
- image
title: OCRRequest
FlowStateProcessingStatus:
type: string
enum:
- not_started
- processing
- complete
- failed
title: FlowStateProcessingStatus
DetectFormalityResponse:
properties:
formality_level:
$ref: '#/components/schemas/PersonalizationStyle'
description: Detected formality level of the text
type: object
required:
- formality_level
title: DetectFormalityResponse
FlowWorkFlows:
type: string
enum:
- slack_demo
- whatsapp_demo
- chat_gpt_demo
title: FlowWorkFlows
ExtractEditedWordsRequest:
properties:
potential_words:
type: string
title: Potential Words
description: Space-separated string of potential words to filter
type: object
required:
- potential_words
title: ExtractEditedWordsRequest
FlowResponseRequest:
properties:
workflow:
$ref: '#/components/schemas/FlowWorkFlows'
messages:
items:
additionalProperties:
type: string
propertyNames:
enum:
- speaker
- message
type: object
type: array
title: Messages
type: object
required:
- workflow
- messages
title: FlowResponseRequest
ClassifyIntentRoutesConfig:
properties:
dictation_short_circuit_provider:
oneOf:
- $ref: '#/components/schemas/OpenRouterProviderConfig'
- $ref: '#/components/schemas/CerebrasProviderConfig'
title: Dictation Short Circuit Provider
route_provider:
oneOf:
- $ref: '#/components/schemas/OpenRouterProviderConfig'
- $ref: '#/components/schemas/CerebrasProviderConfig'
title: Route Provider
type: object
required:
- dictation_short_circuit_provider
- route_provider
title: ClassifyIntentRoutesConfig
description: Provider configs for the short-circuit and routing classify-intent calls.
FlowState2025Response:
properties:
user_id:
type: string
title: User Id
processing_status:
$ref: '#/components/schemas/FlowStateProcessingStatus'
total_words:
anyOf:
- type: integer
- type: 'null'
title: Total Words
total_words_percentile:
anyOf:
- type: number
- type: 'null'
title: Total Words Percentile
last_active:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Last Active
total_dictations_desktop:
anyOf:
- type: integer
- type: 'null'
title: Total Dictations Desktop
total_dictations_mobile:
anyOf:
- type: integer
- type: 'null'
title: Total Dictations Mobile
wpm_desktop:
anyOf:
- type: number
- type: 'null'
title: Wpm Desktop
wpm_mobile:
anyOf:
- type: number
- type: 'null'
title: Wpm Mobile
longest_streak_days:
anyOf:
- type: integer
- type: 'null'
title: Longest Streak Days
top_app:
anyOf:
- type: string
- type: 'null'
title: Top App
top_app_day_of_week:
anyOf:
- type: string
- type: 'null'
title: Top App Day Of Week
top_app_hour_of_day:
anyOf:
- type: integer
- type: 'null'
title: Top App Hour Of Day
top_app_category:
anyOf:
- type: string
- type: 'null'
title: Top App Category
secondary_app_category:
anyOf:
- type: string
- type: 'null'
title: Secondary App Category
signature_phrase:
anyOf:
- type: string
- type: 'null'
title: Signature Phrase
signature_phrase_app:
anyOf:
- type: string
- type: 'null'
title: Signature Phrase App
most_used_phrase:
anyOf:
- type: string
- type: 'null'
title: Most Used Phrase
dictation_strength:
anyOf:
- type: string
- type: 'null'
title: Dictation Strength
alter_ego:
anyOf:
- type: string
- type: 'null'
title: Alter Ego
alter_ego_description:
anyOf:
- type: string
- type: 'null'
title: Alter Ego Description
avg_session_duration_desktop:
anyOf:
- type: number
- type: 'null'
title: Avg Session Duration Desktop
avg_session_duration_mobile:
anyOf:
- type: number
- type: 'null'
title: Avg Session Duration Mobile
goals:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Goals
type: object
required:
- user_id
- processing_status
title: FlowState2025Response
PolishTextResponse:
properties:
status:
$ref: '#/components/schemas/PolishStatus'
polished_text:
anyOf:
- type: string
- type: 'null'
title: Polished Text
model_version:
anyOf:
- type: string
- type: 'null'
title: Model Version
used_provider:
anyOf:
- $ref: '#/components/schemas/OpenAIProviderConfig'
- $ref: '#/components/schemas/CerebrasProviderConfig'
- $ref: '#/components/schemas/AnthropicProviderConfig'
- type: 'null'
title: Used Provider
type: object
required:
- status
title: PolishTextResponse
ChatMessage:
properties:
role:
$ref: '#/components/schemas/ChatRole'
description: Role of the message sender
content:
type: string
title: Content
description: Content of the message
sender_id:
anyOf:
- type: string
- type: 'null'
title: Sender Id
description: Identifier of the message sender
type: object
required:
- role
- content
title: ChatMessage
CheckSensibilityRequest:
properties:
transcript:
type: string
title: Transcript
description: The transcribed and formatted text to check
before_text:
type: string
title: Before Text
description: Text before the cursor/insertion point
default: ''
after_text:
type: string
title: After Text
description: Text after the cursor/insertion point
default: ''
app_context:
anyOf:
- type: string
- type: 'null'
title: App Context
description: Optional app context (e.g., app name, URL)
type: object
required:
- transcript
title: CheckSensibilityRequest
NonEnglishFormattingRequest:
properties:
content:
type: string
title: Content
description: Text content to format
app_type:
$ref: '#/components/schemas/AppType'
description: Application type, to help with selecting application specific prompt
detected_language:
anyOf:
- type: string
- type: 'null'
title: Detected Language
description: Detected language of the text
user_languages:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: User Languages
description: List of user languages
type: object
required:
- content
- app_type
title: NonEnglishFormattingRequest
DetectFormalityRequest:
properties:
text:
type: string
title: Text
description: Text message to classify for formality level
type: object
required:
- text
title: DetectFormalityRequest
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ToolCallDefinition:
properties:
name:
type: string
title: Name
description: The name of the function
description:
anyOf:
- type: string
- type: 'null'
title: Description
description: A description of what the function does
parameters:
anyOf:
- type: object
- type: 'null'
title: Parameters
description: JSON Schema object for the function parameters
type: object
required:
- name
title: ToolCallDefinition
PolishStatus:
type: string
enum:
- succeeded
- long_text
- short_text
- timeout
- error
- cancelled
- no_changes
- not_editable
- no_text
- no_instructions
title: PolishStatus
description: Outcome of a Polish text-refinement request.
AsrAudioChunksRequest:
properties:
access_token:
type: string
title: Access Token
description: Access token for authentication
audio:
anyOf:
- type: string
- type: 'null'
title: Audio
description: Base64 encoded audio data
audio_packets:
anyOf:
- $ref: '#/components/schemas/BasetenAudioPackets'
- type: 'null'
description: Structured audio packets data
pipeline:
items:
type: string
type: array
title: Pipeline
description: List of pipeline steps to execute
context:
$ref: '#/components/schemas/Context'
description: Context information including dictionary and user details
language:
items:
type: string
type: array
title: Language
description: List of language codes to consider
app:
type: string
title: App
description: Application type (ai, email, other)
user:
type: object
title: User
description: User information including UUID
metadata:
type: object
title: Metadata
description: Additional metadata including session ID and client version
prev_asr_text:
type: string
title: Prev Asr Text
description: Previous ASR text for context
default: ''
prev_llm_text:
type: string
title: Prev Llm Text
description: Previous LLM text for context
default: ''
prev_detected_language:
anyOf:
- type: string
- type: 'null'
title: Prev Detected Language
description: Previously detected language
type: object
required:
- access_token
- pipeline
- context
- app
- user
- metadata
title: AsrAudioChunksRequest
CommandModeRequest:
properties:
full_text:
type: string
title: Full Text
selected_text:
type: string
title: Selected Text
instruction:
type: string
title: Instruction
type: object
required:
- full_text
- selected_text
- instruction
title: CommandModeRequest
InstructSessionHistoryMessage:
properties:
role:
type: string
enum:
- user
- assistant
title: Role
content:
type: string
maxLength: 4096
title: Content
type: object
required:
- role
- content
title: InstructSessionHistoryMessage
description: One prior turn of an instruct chat session, mirroring what the chat UI shows.
ChatRole:
type: string
enum:
- user
- human
- assistant
title: ChatRole
ClassifyIntentRequest:
properties:
config:
$ref: '#/components/schemas/ClassifyIntentRoutesConfig'
description: Provider configuration for classification
routes:
items:
$ref: '#/components/schemas/RouteDefinition'
type: array
title: Routes
description: Available routes to classify against
short_circuit_route:
anyOf:
- type: string
- type: 'null'
title: Short Circuit Route
description: If set, a fast model first determines if the request should go to this route. If so, returns immediately; otherwise, a smarter model classifies across all routes. If not set, a single smart model call is used.
context:
$ref: '#/components/schemas/Cl
# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wispr-ai/refs/heads/main/openapi/wispr-ai-llm-api-openapi.yml