# Create Recording Upload and transcribe a recording file or re-transcribe an existing meeting bot recording. You have three options: 1. Upload a file directly - Provide recording_file and transcription_model 2. Provide a URL - Provide recording_url and transcription_model 3. Re-transcribe from meeting bot - Provide meeting_bot_id (optionally override transcription parameters) When using meeting_bot_id, the recording and default transcription settings will be copied from the specified meeting bot. You can override transcription_model, lang, profanity_filter, and custom_vocabulary parameters if needed. Endpoint: POST /recording Version: v1 Security: bearerAuth ## Request fields (multipart/form-data): - `transcription_model` (string) The transcription model to use (realtime models not supported for uploads) Enum: "whisper", "deepgram", "assembly-ai", "speechmatics", "rev-ai", "elevenlabs", "gladia" - `recording_file` (string) Audio or video file to be transcribed. Supported formats: MP3, WAV, MP4, WEBM, M4A, FLAC. Maximum file size: 1GB. Required if meeting_bot_id is not provided. - `meeting_bot_id` (string) ID of an existing meeting bot to re-transcribe its recording. When provided, uses the bot's recording and transcription settings as defaults. Required if recording_file is not provided. - `lang` (string) Language of the recording content, which will be provided to the transcription model. Refer to the [Bot Language](/concepts/bot-language) page for more information. Example: "en" - `webhook_url` (string) URL to receive status updates during transcription - `store_recording_for_1_year` (boolean) Recordings are stored for 1 day by default. This extends storage to 1 year. Refer to [your billing page](https://platform.skribby.io?to=billing) for cost implications and availability. - `profanity_filter` (boolean) Whether to censor profanity in transcription. - `custom_vocabulary` (array) Provide certain words or phrases to improve transcription. Only supported on certain models, refer to [your billing page](https://platform.skribby.io?to=billing) to view availability per model. - `transcription_credentials` (string) Optional credential identifier issued by the Skribby platform when bringing your own API key for the selected transcription model. ## Response 200 fields (application/json): - `id` (string) Unique recording identifier - `status` (string) Current status of the recording Enum: "transcribing", "finished", "failed" - `webhook_url` (string,null) Webhook URL for receiving status updates - `recording_url` (string,null) URL to the original recording file - `recording_available_until` (string,null) When the recording will be deleted - `lang` (string,null) Language specified when creating the recording - `detected_lang` (string,null) Language detected from the audio - `transcript` (array) Transcript segments - `transcript.start` (number) Start time in seconds Example: 4 - `transcript.end` (number) End time in seconds Example: 5.62 - `transcript.speaker` (integer) Speaker ID - `transcript.speaker_name` (string,null) Name of the speaker (only available for transcription models which support speaker diarization). This field is only present when we are confident we can link a specific participant to this speaker. If no participant could be confidently linked to the speaker, this will be null and potential_speaker_names will be provided instead. Example: "John Doe" - `transcript.potential_speaker_names` (array,null) Array of potential speaker matches with confidence scores. This field is only present when we cannot confidently link a single participant to the speaker. If speaker_name is provided, this field will be null. - `transcript.potential_speaker_names.name` (string) Name of the potential speaker Example: "John Doe" - `transcript.potential_speaker_names.confidence` (number) Confidence score for this speaker match Example: 0.64 - `transcript.confidence` (number) Confidence score for transcript accuracy Example: 0.9980372 - `transcript.transcript` (string) The transcribed text Example: "This is a quick test." - `transcript.utterances` (array) Detailed utterance information (model-specific) - `transcription_model` (string) Model used for transcription - `events` (array) List of processing events - `events.event` (string) Type of event Example: "status_update" - `events.data` (object) Event data - `events.data.old_status` (string) Example: "joining" - `events.data.new_status` (string) Example: "recording" - `events.created_at` (string) When the event occurred - `profanity_filter` (boolean) Whether profanity filter was enabled - `custom_vocabulary` (array) Words or phrases provided when creating meeting bot for transcription model - `created_at` (string) When the recording was uploaded ## Response 400 fields (application/json): - `message` (string) Error message Example: "The selected transcription model is invalid." - `errors` (object) Error code - `errors.transcription_model` (array) List of errors per parameter Example: ["The selected transcription model is invalid."] ## Response 401 fields (application/json): - `message` (string) Error message Example: "Unauthenticated."