Files
Scriberr/api-docs/swagger.yaml
rishikanthc 0248b01cbd update docs
2025-12-31 15:47:19 -08:00

3185 lines
76 KiB
YAML

basePath: /api/v1
definitions:
api.APIKeyListResponse:
properties:
created_at:
type: string
description:
type: string
id:
type: integer
is_active:
type: boolean
key_preview:
type: string
last_used:
type: string
name:
type: string
updated_at:
type: string
type: object
api.APIKeysWrapper:
properties:
api_keys:
items:
$ref: '#/definitions/api.APIKeyListResponse'
type: array
type: object
api.ChangePasswordRequest:
properties:
confirmPassword:
type: string
currentPassword:
type: string
newPassword:
minLength: 6
type: string
required:
- confirmPassword
- currentPassword
- newPassword
type: object
api.ChangeUsernameRequest:
properties:
newUsername:
maxLength: 50
minLength: 3
type: string
password:
type: string
required:
- newUsername
- password
type: object
api.ChatCreateRequest:
properties:
model:
type: string
title:
type: string
transcription_id:
type: string
required:
- model
- transcription_id
type: object
api.ChatMessageRequest:
properties:
content:
type: string
required:
- content
type: object
api.ChatMessageResponse:
properties:
content:
type: string
created_at:
type: string
id:
type: integer
role:
type: string
type: object
api.ChatModelsResponse:
properties:
models:
items:
type: string
type: array
type: object
api.ChatSessionResponse:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
last_activity_at:
type: string
last_message:
$ref: '#/definitions/api.ChatMessageResponse'
message_count:
type: integer
model:
type: string
provider:
type: string
title:
type: string
transcription_id:
type: string
updated_at:
type: string
type: object
api.ChatSessionWithMessages:
properties:
created_at:
type: string
id:
type: string
is_active:
type: boolean
last_activity_at:
type: string
last_message:
$ref: '#/definitions/api.ChatMessageResponse'
message_count:
type: integer
messages:
items:
$ref: '#/definitions/api.ChatMessageResponse'
type: array
model:
type: string
provider:
type: string
title:
type: string
transcription_id:
type: string
updated_at:
type: string
type: object
api.CreateAPIKeyRequest:
properties:
description:
type: string
name:
maxLength: 100
minLength: 1
type: string
required:
- name
type: object
api.CreateAPIKeyResponse:
properties:
description:
type: string
id:
type: integer
key:
type: string
name:
type: string
type: object
api.ErrorResponse:
properties:
error:
type: string
type: object
api.LLMConfigRequest:
properties:
api_key:
type: string
base_url:
type: string
is_active:
type: boolean
openai_base_url:
type: string
provider:
enum:
- ollama
- openai
type: string
required:
- provider
type: object
api.LLMConfigResponse:
properties:
base_url:
type: string
created_at:
type: string
has_api_key:
description: Don't return actual API key
type: boolean
id:
type: integer
is_active:
type: boolean
openai_base_url:
type: string
provider:
type: string
updated_at:
type: string
type: object
api.LoginRequest:
properties:
password:
type: string
username:
type: string
required:
- password
- username
type: object
api.LoginResponse:
properties:
token:
type: string
user:
properties:
id:
type: integer
username:
type: string
type: object
type: object
api.NoteCreateRequest:
properties:
content:
minLength: 1
type: string
end_time:
minimum: 0
type: number
end_word_index:
minimum: 0
type: integer
quote:
minLength: 1
type: string
start_time:
minimum: 0
type: number
start_word_index:
description: Use gte=0 so 0 is valid (first word/time); avoid 'required' which
fails for zero values
minimum: 0
type: integer
required:
- content
- quote
type: object
api.NoteUpdateRequest:
properties:
content:
minLength: 1
type: string
required:
- content
type: object
api.RefreshTokenResponse:
properties:
token:
type: string
type: object
api.RegisterRequest:
properties:
confirmPassword:
type: string
password:
minLength: 6
type: string
username:
maxLength: 50
minLength: 3
type: string
required:
- confirmPassword
- password
- username
type: object
api.RegistrationStatusResponse:
properties:
registration_enabled:
description: Match tests expecting snake_case key
type: boolean
type: object
api.SetUserDefaultProfileRequest:
properties:
profile_id:
type: string
required:
- profile_id
type: object
api.SpeakerMappingRequest:
properties:
custom_name:
type: string
original_speaker:
type: string
required:
- custom_name
- original_speaker
type: object
api.SpeakerMappingResponse:
properties:
custom_name:
type: string
id:
type: integer
original_speaker:
type: string
type: object
api.SpeakerMappingsUpdateRequest:
properties:
mappings:
items:
$ref: '#/definitions/api.SpeakerMappingRequest'
type: array
required:
- mappings
type: object
api.SummarizeRequest:
properties:
content:
type: string
model:
type: string
template_id:
type: string
transcription_id:
type: string
required:
- content
- model
- transcription_id
type: object
api.SummarySettingsRequest:
properties:
default_model:
minLength: 1
type: string
required:
- default_model
type: object
api.SummarySettingsResponse:
properties:
default_model:
type: string
type: object
api.SummaryTemplateRequest:
properties:
description:
type: string
model:
minLength: 1
type: string
name:
minLength: 1
type: string
prompt:
minLength: 1
type: string
required:
- model
- name
- prompt
type: object
api.UpdateUserSettingsRequest:
properties:
auto_transcription_enabled:
type: boolean
type: object
api.UserSettingsResponse:
properties:
auto_transcription_enabled:
type: boolean
default_profile_id:
type: string
type: object
api.ValidateOpenAIKeyRequest:
properties:
api_key:
type: string
type: object
api.YouTubeDownloadRequest:
properties:
title:
type: string
url:
type: string
required:
- url
type: object
models.JobStatus:
enum:
- uploaded
- pending
- processing
- completed
- failed
type: string
x-enum-varnames:
- StatusUploaded
- StatusPending
- StatusProcessing
- StatusCompleted
- StatusFailed
models.MultiTrackFile:
properties:
created_at:
type: string
file_name:
description: Original filename (used as speaker name)
type: string
file_path:
description: Full path to audio file
type: string
gain:
description: Gain value from .aup file
type: number
id:
type: integer
mute:
description: Whether track is muted
type: boolean
offset:
description: Offset in seconds from .aup file
type: number
pan:
description: Pan value from .aup file (-1.0 to 1.0)
type: number
track_index:
description: Order of the track
type: integer
transcription_job:
allOf:
- $ref: '#/definitions/models.TranscriptionJob'
description: Relationships
transcription_job_id:
type: string
updated_at:
type: string
type: object
models.Note:
properties:
content:
description: The user's note content (markdown/plain)
type: string
created_at:
type: string
end_time:
type: number
end_word_index:
type: integer
id:
type: string
quote:
description: The exact quoted text chosen by the user
type: string
start_time:
description: Time bounds for the selection (in seconds)
type: number
start_word_index:
description: Indexed selection into transcript by word positions
type: integer
transcription:
allOf:
- $ref: '#/definitions/models.TranscriptionJob'
description: Relationships
transcription_id:
type: string
updated_at:
type: string
type: object
models.Summary:
properties:
content:
type: string
created_at:
type: string
id:
type: string
model:
type: string
template_id:
type: string
transcription:
allOf:
- $ref: '#/definitions/models.TranscriptionJob'
description: Relationships
transcription_id:
type: string
updated_at:
type: string
type: object
models.SummaryTemplate:
properties:
created_at:
type: string
description:
type: string
id:
type: string
model:
type: string
name:
type: string
prompt:
type: string
updated_at:
type: string
type: object
models.TranscriptionJob:
properties:
audio_path:
type: string
aup_file_path:
type: string
created_at:
type: string
deleted_at:
type: string
diarization:
type: boolean
error_message:
type: string
id:
type: string
individual_transcripts:
description: JSON-serialized map[string]*string
type: string
is_multi_track:
type: boolean
merge_error:
type: string
merge_status:
description: none, pending, processing, completed, failed
type: string
merged_audio_path:
type: string
multi_track_files:
description: Relationships
items:
$ref: '#/definitions/models.MultiTrackFile'
type: array
multi_track_folder:
type: string
parameters:
allOf:
- $ref: '#/definitions/models.WhisperXParams'
description: WhisperX parameters
status:
$ref: '#/definitions/models.JobStatus'
summary:
type: string
title:
type: string
transcript:
type: string
updated_at:
type: string
type: object
models.TranscriptionJobExecution:
properties:
actual_parameters:
allOf:
- $ref: '#/definitions/models.WhisperXParams'
description: Parameters used for this execution (may differ from job parameters
due to profiles)
completed_at:
type: string
created_at:
description: Metadata
type: string
error_message:
type: string
id:
type: string
merge_duration:
description: Merge phase duration in milliseconds
type: integer
merge_end_time:
type: string
merge_start_time:
type: string
multi_track_timings:
description: Multi-track specific timing data
type: string
processing_duration:
description: Duration in milliseconds
type: integer
started_at:
description: Execution timing
type: string
status:
allOf:
- $ref: '#/definitions/models.JobStatus'
description: Execution results
transcription_job:
allOf:
- $ref: '#/definitions/models.TranscriptionJob'
description: Relationship
transcription_job_id:
type: string
updated_at:
type: string
type: object
models.TranscriptionProfile:
properties:
created_at:
type: string
description:
type: string
id:
type: string
is_default:
type: boolean
name:
type: string
parameters:
$ref: '#/definitions/models.WhisperXParams'
updated_at:
type: string
type: object
models.WhisperXParams:
properties:
align_model:
description: Alignment settings
type: string
api_key:
description: OpenAI settings
type: string
attention_context_left:
description: NVIDIA Parakeet-specific parameters for long-form audio
type: integer
attention_context_right:
type: integer
batch_size:
type: integer
beam_size:
type: integer
best_of:
type: integer
callback_url:
description: Webhook settings
type: string
chunk_size:
type: integer
compression_ratio_threshold:
type: number
compute_type:
type: string
condition_on_previous_text:
type: boolean
device:
description: Device and computation
type: string
device_index:
type: integer
diarize:
description: Diarization settings
type: boolean
diarize_model:
description: 'Options: ''pyannote'', ''nvidia_sortformer'''
type: string
fp16:
type: boolean
hf_token:
description: Token and progress
type: string
highlight_words:
type: boolean
initial_prompt:
type: string
interpolate_method:
type: string
is_multi_track_enabled:
description: Multi-track transcription settings
type: boolean
language:
type: string
length_penalty:
type: number
logprob_threshold:
type: number
max_line_count:
type: integer
max_line_width:
description: Output formatting
type: integer
max_new_tokens:
description: Voxtral settings
type: integer
max_speakers:
type: integer
min_speakers:
type: integer
model:
description: Model parameters
type: string
model_cache_only:
type: boolean
model_dir:
type: string
model_family:
description: Model family (whisper or nvidia)
type: string
no_align:
type: boolean
no_speech_threshold:
type: number
output_format:
description: Output settings
type: string
patience:
type: number
print_progress:
type: boolean
return_char_alignments:
type: boolean
segment_resolution:
type: string
speaker_embeddings:
type: boolean
suppress_numerals:
type: boolean
suppress_tokens:
type: string
task:
description: Task and language
type: string
temperature:
description: Transcription quality settings
type: number
temperature_increment_on_fallback:
type: number
threads:
type: integer
vad_method:
description: VAD (Voice Activity Detection) settings
type: string
vad_offset:
type: number
vad_onset:
type: number
verbose:
type: boolean
type: object
transcription.QuickTranscriptionJob:
properties:
audio_path:
type: string
created_at:
type: string
error_message:
type: string
expires_at:
type: string
id:
type: string
parameters:
$ref: '#/definitions/models.WhisperXParams'
status:
$ref: '#/definitions/models.JobStatus'
transcript:
type: string
type: object
host: localhost:8080
info:
contact:
email: support@swagger.io
name: API Support
url: http://www.swagger.io/support
description: Audio transcription service using WhisperX
license:
name: MIT
url: https://opensource.org/licenses/MIT
termsOfService: http://swagger.io/terms/
title: Scriberr API
version: "1.0"
paths:
/api/v1/admin/queue/stats:
get:
description: Get current queue statistics
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get queue statistics
tags:
- admin
/api/v1/api-keys:
get:
description: Get all API keys for the current user (without exposing the actual
keys)
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.APIKeysWrapper'
security:
- BearerAuth: []
summary: List API keys
tags:
- api-keys
post:
consumes:
- application/json
description: Create a new API key for external API access
parameters:
- description: API key creation details
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.CreateAPIKeyRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/api.CreateAPIKeyResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create API key
tags:
- api-keys
/api/v1/api-keys/{id}:
delete:
description: Delete an API key
parameters:
- description: API Key ID
in: path
name: id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Delete API key
tags:
- api-keys
/api/v1/auth/change-password:
post:
consumes:
- application/json
description: Change the current user's password
parameters:
- description: Password change details
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.ChangePasswordRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Change user password
tags:
- auth
/api/v1/auth/change-username:
post:
consumes:
- application/json
description: Change the current user's username
parameters:
- description: Username change details
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.ChangeUsernameRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Change username
tags:
- auth
/api/v1/auth/login:
post:
consumes:
- application/json
description: Authenticate user and return JWT token
parameters:
- description: User credentials
in: body
name: credentials
required: true
schema:
$ref: '#/definitions/api.LoginRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.LoginResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
summary: Login
tags:
- auth
/api/v1/auth/logout:
post:
description: Logout user and invalidate token (client-side action)
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Logout user
tags:
- auth
/api/v1/auth/refresh:
post:
description: Rotate refresh token and return new access token
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.RefreshTokenResponse'
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
summary: Refresh access token
tags:
- auth
/api/v1/auth/register:
post:
consumes:
- application/json
description: Register the initial admin user (only allowed when no users exist)
parameters:
- description: Registration details
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.RegisterRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/api.LoginResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"409":
description: Conflict
schema:
additionalProperties:
type: string
type: object
summary: Register initial admin user
tags:
- auth
/api/v1/auth/registration-status:
get:
description: Check if the application requires initial user registration
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.RegistrationStatusResponse'
summary: Check registration status
tags:
- auth
/api/v1/chat/models:
get:
description: Get list of available OpenAI chat models
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.ChatModelsResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get available chat models
tags:
- chat
/api/v1/chat/sessions:
post:
consumes:
- application/json
description: Create a new chat session for a transcription
parameters:
- description: Chat session creation request
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.ChatCreateRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/api.ChatSessionResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Create a new chat session
tags:
- chat
/api/v1/chat/sessions/{session_id}:
delete:
description: Delete a chat session and all its messages
parameters:
- description: Chat Session ID
in: path
name: session_id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Delete a chat session
tags:
- chat
get:
description: Get a specific chat session with all its messages
parameters:
- description: Chat Session ID
in: path
name: session_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.ChatSessionWithMessages'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get a chat session with messages
tags:
- chat
/api/v1/chat/sessions/{session_id}/messages:
post:
consumes:
- application/json
description: Send a message to a chat session and get streaming response
parameters:
- description: Chat Session ID
in: path
name: session_id
required: true
type: string
- description: Message content
in: body
name: message
required: true
schema:
$ref: '#/definitions/api.ChatMessageRequest'
produces:
- text/plain
responses:
"200":
description: Streaming response
schema:
type: string
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Send a message to a chat session
tags:
- chat
/api/v1/chat/sessions/{session_id}/title:
put:
consumes:
- application/json
description: Update the title of a chat session
parameters:
- description: Chat Session ID
in: path
name: session_id
required: true
type: string
- description: Title update request
in: body
name: request
required: true
schema:
additionalProperties:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.ChatSessionResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Update chat session title
tags:
- chat
/api/v1/chat/sessions/{session_id}/title/auto:
post:
description: Uses the configured LLM to summarize the first exchange into a
concise title. Only updates if the current title appears default/user-unset.
parameters:
- description: Chat Session ID
in: path
name: session_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.ChatSessionResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Auto-generate chat session title
tags:
- chat
/api/v1/chat/transcriptions/{transcription_id}/sessions:
get:
description: Get all chat sessions for a specific transcription
parameters:
- description: Transcription ID
in: path
name: transcription_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/api.ChatSessionResponse'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get chat sessions for a transcription
tags:
- chat
/api/v1/config/openai/validate:
post:
consumes:
- application/json
description: Validate the provided OpenAI API key and return available Whisper
models
parameters:
- description: API Key
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.ValidateOpenAIKeyRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Validate OpenAI API Key
tags:
- config
/api/v1/events:
get:
description: Subscribe to server-sent events
produces:
- text/event-stream
responses:
"200":
description: stream
schema:
type: string
summary: SSE Events
tags:
- events
/api/v1/llm/config:
get:
description: Get the current active LLM configuration
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.LLMConfigResponse'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Get LLM configuration
tags:
- llm
post:
consumes:
- application/json
description: Create or update LLM configuration settings
parameters:
- description: LLM configuration details
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.LLMConfigRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.LLMConfigResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Create or update LLM configuration
tags:
- llm
/api/v1/notes/{note_id}:
delete:
description: Delete a note by its ID
parameters:
- description: Note ID
in: path
name: note_id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
schema:
type: string
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete a note
tags:
- notes
get:
description: Get a note by its ID
parameters:
- description: Note ID
in: path
name: note_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Note'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get a note
tags:
- notes
put:
consumes:
- application/json
description: Update the content of a note
parameters:
- description: Note ID
in: path
name: note_id
required: true
type: string
- description: Note update payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.NoteUpdateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Note'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Update a note
tags:
- notes
/api/v1/profiles:
get:
description: Get list of all transcription profiles
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.TranscriptionProfile'
type: array
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: List transcription profiles
tags:
- profiles
post:
consumes:
- application/json
description: Create a new transcription profile
parameters:
- description: Profile data
in: body
name: profile
required: true
schema:
$ref: '#/definitions/models.TranscriptionProfile'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.TranscriptionProfile'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Create transcription profile
tags:
- profiles
/api/v1/profiles/{id}:
delete:
description: Delete a transcription profile
parameters:
- description: Profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Delete transcription profile
tags:
- profiles
get:
description: Get a transcription profile by ID
parameters:
- description: Profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionProfile'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get transcription profile
tags:
- profiles
put:
consumes:
- application/json
description: Update a transcription profile
parameters:
- description: Profile ID
in: path
name: id
required: true
type: string
- description: Updated profile data
in: body
name: profile
required: true
schema:
$ref: '#/definitions/models.TranscriptionProfile'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionProfile'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Update transcription profile
tags:
- profiles
/api/v1/profiles/{id}/set-default:
post:
description: Mark the specified profile as the default profile
parameters:
- description: Profile ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Set default transcription profile
tags:
- profiles
/api/v1/summaries:
get:
description: Get all summarization templates
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.SummaryTemplate'
type: array
security:
- ApiKeyAuth: []
- BearerAuth: []
- BearerAuth: []
summary: List summarization templates
tags:
- summaries
post:
consumes:
- application/json
description: Create a new summarization template
parameters:
- description: Template payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SummaryTemplateRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.SummaryTemplate'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
- BearerAuth: []
summary: Create summarization template
tags:
- summaries
/api/v1/summaries/{id}:
delete:
description: Delete a summarization template by ID
parameters:
- description: Template ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"204":
description: No Content
schema:
type: string
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Delete summarization template
tags:
- summaries
get:
description: Get a summarization template by ID
parameters:
- description: Template ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.SummaryTemplate'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
- BearerAuth: []
summary: Get summarization template
tags:
- summaries
put:
consumes:
- application/json
description: Update a summarization template by ID
parameters:
- description: Template ID
in: path
name: id
required: true
type: string
- description: Template payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SummaryTemplateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.SummaryTemplate'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
- BearerAuth: []
summary: Update summarization template
tags:
- summaries
/api/v1/summaries/settings:
get:
description: Get global summarization settings
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.SummarySettingsResponse'
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get summary settings
tags:
- summaries
post:
consumes:
- application/json
description: Create or update global summarization settings
parameters:
- description: Settings payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SummarySettingsRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.SummarySettingsResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Save summary settings
tags:
- summaries
/api/v1/summarize:
post:
consumes:
- application/json
description: Stream an LLM-generated summary for provided content; persists
latest summary for the transcription
parameters:
- description: Summarize request
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SummarizeRequest'
produces:
- text/event-stream
responses:
"200":
description: Event stream
schema:
type: string
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Summarize content
tags:
- summarize
/api/v1/transcription/{id}:
delete:
description: Delete a transcription job and its associated files
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Delete transcription job
tags:
- transcription
get:
description: Get details of a specific transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get transcription job details
tags:
- transcription
/api/v1/transcription/{id}/audio:
get:
description: Serve the audio file for a transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- audio/mpeg
- audio/wav
- audio/mp4
responses:
"200":
description: OK
schema:
type: file
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
summary: Get audio file
tags:
- transcription
/api/v1/transcription/{id}/execution:
get:
description: Get execution parameters and timing for a transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJobExecution'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get transcription job execution data
tags:
- transcription
/api/v1/transcription/{id}/kill:
post:
description: Cancel a currently running transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Kill running transcription job
tags:
- transcription
/api/v1/transcription/{id}/merge-status:
get:
description: Get the current merge status for a multi-track job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get multi-track merge status
tags:
- transcription
/api/v1/transcription/{id}/notes:
get:
description: Get all notes attached to a transcription, ordered by time and
creation
parameters:
- description: Transcription ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/models.Note'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: List notes for a transcription
tags:
- notes
post:
consumes:
- application/json
description: Create a new note attached to the specified transcription
parameters:
- description: Transcription ID
in: path
name: id
required: true
type: string
- description: Note create payload
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.NoteCreateRequest'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/models.Note'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Create a note for a transcription
tags:
- notes
/api/v1/transcription/{id}/speakers:
get:
description: Retrieves all custom speaker names for a transcription job
parameters:
- description: Transcription Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/api.SpeakerMappingResponse'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
- ApiKeyAuth: []
summary: Get speaker mappings for a transcription
tags:
- transcription
post:
consumes:
- application/json
description: Updates or creates custom speaker names for a transcription job
parameters:
- description: Transcription Job ID
in: path
name: id
required: true
type: string
- description: Speaker mappings to update
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SpeakerMappingsUpdateRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/api.SpeakerMappingResponse'
type: array
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
- ApiKeyAuth: []
summary: Update speaker mappings for a transcription
tags:
- transcription
/api/v1/transcription/{id}/start:
post:
consumes:
- application/json
description: Start transcription for an already uploaded audio file
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
- description: Transcription parameters
in: body
name: parameters
required: true
schema:
$ref: '#/definitions/models.WhisperXParams'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Start transcription for uploaded file
tags:
- transcription
/api/v1/transcription/{id}/status:
get:
description: Get the current status of a transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get job status
tags:
- transcription
/api/v1/transcription/{id}/summary:
get:
description: Get the most recent saved summary for the given transcription
parameters:
- description: Transcription ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.Summary'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get latest summary for transcription
tags:
- summarize
/api/v1/transcription/{id}/title:
put:
consumes:
- application/json
description: Update the title of an audio file / transcription
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
- description: Title update request
in: body
name: request
required: true
schema:
additionalProperties:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
- BearerAuth: []
summary: Update transcription title
tags:
- transcription
/api/v1/transcription/{id}/track-progress:
get:
description: Get real-time progress information for individual tracks in a multi-track
job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get multi-track job progress
tags:
- transcription
/api/v1/transcription/{id}/transcript:
get:
description: Get the transcript for a completed transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get transcript
tags:
- transcription
/api/v1/transcription/list:
get:
description: Get a list of all transcription jobs with optional search and filtering
parameters:
- default: 1
description: Page number
in: query
name: page
type: integer
- default: 10
description: Items per page
in: query
name: limit
type: integer
- description: Sort By
in: query
name: sort_by
type: string
- description: Sort Order (asc/desc)
in: query
name: sort_order
type: string
- description: Filter by status
in: query
name: status
type: string
- description: Search in title and audio filename
in: query
name: q
type: string
- description: Filter by updated_at > timestamp (RFC3339)
in: query
name: updated_after
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: List all transcription records
tags:
- transcription
/api/v1/transcription/models:
get:
description: Get list of supported WhisperX models
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties: true
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get supported models
tags:
- transcription
/api/v1/transcription/quick:
post:
consumes:
- multipart/form-data
description: Submit an audio file for temporary transcription (data discarded
after 6 hours)
parameters:
- description: Audio file
in: formData
name: audio
required: true
type: file
- description: JSON string of transcription parameters
in: formData
name: parameters
type: string
- description: Profile name to use for transcription
in: formData
name: profile_name
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/transcription.QuickTranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Submit quick transcription job
tags:
- transcription
/api/v1/transcription/quick/{id}:
get:
description: Get the current status of a quick transcription job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/transcription.QuickTranscriptionJob'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Get quick transcription status
tags:
- transcription
/api/v1/transcription/submit:
post:
consumes:
- multipart/form-data
description: Submit an audio file for transcription with WhisperX
parameters:
- description: Audio file
in: formData
name: audio
required: true
type: file
- description: Job title
in: formData
name: title
type: string
- description: Enable speaker diarization
in: formData
name: diarization
type: boolean
- default: base
description: Whisper model
in: formData
name: model
type: string
- description: Language code
in: formData
name: language
type: string
- default: 16
description: Batch size
in: formData
name: batch_size
type: integer
- default: float16
description: Compute type
in: formData
name: compute_type
type: string
- default: auto
description: Device
in: formData
name: device
type: string
- description: Enable VAD filter
in: formData
name: vad_filter
type: boolean
- default: 0.5
description: VAD onset
in: formData
name: vad_onset
type: number
- default: 0.363
description: VAD offset
in: formData
name: vad_offset
type: number
- description: Minimum speakers for diarization
in: formData
name: min_speakers
type: integer
- description: Maximum speakers for diarization
in: formData
name: max_speakers
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Submit a transcription job
tags:
- transcription
/api/v1/transcription/upload:
post:
consumes:
- multipart/form-data
description: Upload an audio file without starting transcription
parameters:
- description: Audio file
in: formData
name: audio
required: true
type: file
- description: Job title
in: formData
name: title
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Upload audio file
tags:
- transcription
/api/v1/transcription/upload-multitrack:
post:
consumes:
- multipart/form-data
description: Upload multiple audio files for multi-track transcription
parameters:
- description: Job title
in: formData
name: title
type: string
- description: Audio track files
in: formData
name: files
required: true
type: file
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Upload multi-track audio files
tags:
- transcription
/api/v1/transcription/upload-video:
post:
consumes:
- multipart/form-data
description: Upload a video file, extract audio from it using ffmpeg, and create
a transcription job
parameters:
- description: Video file
in: formData
name: video
required: true
type: file
- description: Job title
in: formData
name: title
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Upload video file for transcription
tags:
- transcription
/api/v1/transcription/youtube:
post:
consumes:
- application/json
description: Download audio from a YouTube video URL and prepare it for transcription
parameters:
- description: YouTube download request
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.YouTubeDownloadRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionJob'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- ApiKeyAuth: []
- BearerAuth: []
summary: Download audio from YouTube URL
tags:
- transcription
/api/v1/user/default-profile:
get:
description: Get the default transcription profile for the current user
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/models.TranscriptionProfile'
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Get user's default profile
tags:
- profiles
post:
consumes:
- application/json
description: Set the default transcription profile for the current user
parameters:
- description: Default profile request
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.SetUserDefaultProfileRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"404":
description: Not Found
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Set user's default profile
tags:
- profiles
/api/v1/user/settings:
get:
description: Get the current user's settings including auto-transcription preference
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.UserSettingsResponse'
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Get user settings
tags:
- user
put:
consumes:
- application/json
description: Update the current user's settings
parameters:
- description: Settings update request
in: body
name: request
required: true
schema:
$ref: '#/definitions/api.UpdateUserSettingsRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api.UserSettingsResponse'
"400":
description: Bad Request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
"500":
description: Internal Server Error
schema:
additionalProperties:
type: string
type: object
security:
- BearerAuth: []
summary: Update user settings
tags:
- user
/health:
get:
description: Check if the API is healthy
produces:
- application/json
responses:
"200":
description: OK
schema:
additionalProperties:
type: string
type: object
summary: Health check
tags:
- health
/transcription/{id}/logs:
get:
description: Get the raw transcription logs for a job
parameters:
- description: Job ID
in: path
name: id
required: true
type: string
produces:
- text/plain
responses:
"200":
description: Log content
schema:
type: string
"404":
description: Not Found
schema:
$ref: '#/definitions/api.ErrorResponse'
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/api.ErrorResponse'
summary: Get transcription logs
tags:
- transcription
securityDefinitions:
ApiKeyAuth:
in: header
name: X-API-Key
type: apiKey
BearerAuth:
description: JWT token with Bearer prefix
in: header
name: Authorization
type: apiKey
swagger: "2.0"