{"record":{"id":"eb40f6a1fc79f613","repo":"langgenius/dify","slug":"audio-too-large-eb40f6","errorCode":"audio_too_large","errorMessage":"Audio size exceeded. {message}","messagePattern":"Audio size exceeded\\. (.+?)","errorType":"error_code","errorClass":"AudioTooLargeError","httpStatus":413,"severity":"warning","filePath":"api/controllers/console/explore/trial.py","lineNumber":686,"sourceCode":"            # Get IDs before they might be detached from session\n            app_id = app_model.id\n            user_id = current_user.id\n\n            response = AudioService.transcript_asr(\n                app_model=app_model,\n                file=file,\n                session=db.session(),\n                end_user=None,\n            )\n            RecommendedAppService.add_trial_app_record(app_id, user_id, session=db.session())\n            return response\n        except services.errors.app_model_config.AppModelConfigBrokenError:\n            logger.exception(\"App model config broken.\")\n            raise AppUnavailableError()\n        except NoAudioUploadedServiceError:\n            raise NoAudioUploadedError()\n        except AudioTooLargeServiceError as e:\n            raise AudioTooLargeError(str(e))\n        except UnsupportedAudioTypeServiceError:\n            raise UnsupportedAudioTypeError()\n        except ProviderNotSupportSpeechToTextServiceError:\n            raise ProviderNotSupportSpeechToTextError()\n        except SpeechToTextDisabledServiceError:\n            raise SpeechToTextDisabledError()\n        except ProviderTokenNotInitError as ex:\n            raise ProviderNotInitializeError(ex.description)\n        except QuotaExceededError:\n            raise ProviderQuotaExceededError()\n        except ModelCurrentlyNotSupportError:\n            raise ProviderModelCurrentlyNotSupportError()\n        except InvokeError as e:\n            raise CompletionRequestError(e.description)\n        except ValueError as e:\n            raise e\n        except Exception as e:\n            logger.exception(\"internal server error.\")","sourceCodeStart":668,"sourceCodeEnd":704,"githubUrl":"https://github.com/langgenius/dify/blob/ef8544b173fd6cd7a8e71df2cab576e52bebbfbc/api/controllers/console/explore/trial.py#L668-L704","documentation":"HTTP 413 with error_code `audio_too_large`, raised by AudioTooLargeError(str(e)) when AudioService raises AudioTooLargeServiceError. The uploaded audio exceeds the configured max size; the service message is interpolated into 'Audio size exceeded. {message}'. This is enforced server-side before the provider STT call to avoid wasted upstream cost.","triggerScenarios":"POST TrialChatAudioApi with an audio file whose byte size exceeds the limit configured for the deployment (e.g. the AUDIO_MAX_SIZE / dify_config setting). The service measures the upload and raises before transcription.","commonSituations":"Long recording not trimmed; lossless format (wav) producing large files; operator lowered the size cap; mobile client recorded at high bitrate.","solutions":["Compress or trim the audio before upload (convert to a lower-bitrate mp3/opus, cut silence).","Check the deployment's configured audio size limit and, if you operate the server, raise AUDIO_MAX_SIZE in config if appropriate.","On the client, enforce the size cap before POSTing so the user gets immediate feedback."],"exampleFix":"// before - upload raw recording\nfd.append('file', hugeWavBlob)\n\n// after - enforce client cap and compress\nconst MAX = 15 * 1024 * 1024\nif (blob.size > MAX) { blob = await compressAudio(blob) }\nif (blob.size > MAX) { toast('Audio too large'); return }\nfd.append('file', blob)","handlingStrategy":"validation","validationCode":"const MAX_AUDIO_BYTES = 15 * 1024 * 1024 // match deployment cap\nif (file.size > MAX_AUDIO_BYTES) {\n  file = await compressOrTrimAudio(file)\n}\nif (file.size > MAX_AUDIO_BYTES) throw new Error('audio too large even after compression')","typeGuard":null,"tryCatchPattern":"try {\n  const r = await fetch(audioUrl, { method: 'POST', body: fd })\n  if (r.status === 413) showAudioTooLargeMessage()\n} catch (e) { reportToUser(e) }","preventionTips":["Enforce the size cap client-side before uploading.","Prefer compressed formats (mp3/opus) over raw wav.","Trim silence/long recordings before upload."],"tags":["dify","trial-api","console","explore","audio","upload","size-limit","http-413"],"backgroundTag":null,"analyzedSha":"ef8544b173fd6cd7a8e71df2cab576e52bebbfbc","analyzedAt":"2026-08-12T05:15:17.394Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}