HeyPuter/puter · warning · HttpError

bad_request

bad_request

Error message

Streaming transcription is not yet supported

What it means

The OpenAI STT provider checks args.stream and rejects with 400 / bad_request — neither transcriptions nor translations are wired for streaming in this driver yet. The check sits before the API-key and file guards so a streaming request fails fast. Streaming transcription may arrive later; until then the flag is unsupported.

Source

Thrown at src/backend/drivers/ai-speech2txt/providers/openai/OpenAISpeechToTextProvider.ts:151

    }

    async translate(args: ITranscribeArgs) {
        return this.#handleTranscription(args, true);
    }

    async #handleTranscription(args: ITranscribeArgs, translate: boolean) {
        if (args.test_mode) {
            return {
                ...SAMPLE_TRANSCRIPT,
                model:
                    args.model ||
                    (translate
                        ? DEFAULT_TRANSLATE_MODEL
                        : DEFAULT_TRANSCRIBE_MODEL),
            };
        }
        if (args.stream) {
            throw new HttpError(
                400,
                'Streaming transcription is not yet supported',
                { legacyCode: 'bad_request' },
            );
        }
        if (!this.#openai)
            throw new HttpError(500, 'OpenAI API key not configured', {
                legacyCode: 'internal_error',
            });
        this.requireFile(args);

        const actor = this.requireActor();

        const loaded = await loadFileInput(
            this.deps.stores,
            this.deps.fs,
            actor,
            args.file,

View on GitHub (pinned to 908ec23eda)

Solutions

  1. Drop stream (or set it false) for STT calls.
  2. If progressive results are needed, design around request/response polling until streaming ships.

Example fix

// before
driver.transcribe({ file, stream: true })
// after
driver.transcribe({ file })
Defensive patterns

Strategy: validation

Validate before calling

// STT does not stream; strip the flag before sending
const { stream: _stream, ...rest } = args;
await driver.transcribe(rest);

Prevention

When it happens

Trigger: Calling transcribe({ file, stream: true }) or translate({ file, stream: true }) against the openai provider; forwarding generic AI args that default stream to true.

Common situations: Reusing an args object from a chat-completion call that legitimately streams; an SDK helper defaulting stream to true across all AI methods.

Related errors


AI-assisted analysis of HeyPuter/puter@908ec23eda (2026-08-12). Data as JSON: /api/errors/dbe69ad4186543d8. Report an issue: GitHub.