# Discovery e fallback [#discovery-e-fallback] > Pergunta: "como uso discovery sem implementar fallback de endpoint?" Passe `apiKey` para `connectTranscription()`. A biblioteca obtém os candidatos, tenta-os na ordem recebida e devolve a primeira sessão cujo `start()` conclui — isto é, cuja conexão de socket foi confirmada. O registry público é fechado ao provider `sofya_as_service`; não registre providers arbitrários como estratégia de fallback. ```ts import { connectTranscription, TranscriptionConnectionError, TranscriptionEnvironmentError, } from '@sofya-sdk/transcription'; try { const session = await connectTranscription({ apiKey: '', overrides: { languages: { transcription: 'pt-BR' } }, }); await session.stop(); } catch (error) { if (error instanceof TranscriptionEnvironmentError) { console.error(error.code); } else if (error instanceof TranscriptionConnectionError) { for (const attempt of error.attempts) console.error(attempt.provider, attempt.endpoint); } throw error; } ``` `TranscriptionConnectionError` tem código `all_candidates_failed`. Seus `attempts` ficam na ordem tentada e contêm provider, endpoint e causa; não contêm credenciais ou headers. Há uma exceção importante: erro de ambiente **não** vira tentativa. Se faltar browser, contexto seguro ou microfone, `TranscriptionEnvironmentError` aborta a jornada imediatamente; o SDK não repete a mesma precondição inválida para cada candidato. `resolveTranscriptionConfig()` apenas resolve entradas diretas ou discovery em candidatos. Use `connectTranscription()` quando quiser que a biblioteca possua a tentativa e o fallback.