{"record":{"id":"8af9c79fcaf08dd9","repo":"diegosouzapw/OmniRoute","slug":"no-credentials-configured-for-any-search-provider","errorCode":null,"errorMessage":"No credentials configured for any search provider. Add an API key for a search provider (${Object.keys(SEARCH_PROVIDERS).join(\", \")}) in the dashboard.","messagePattern":"No credentials configured for any search provider\\. Add an API key for a search provider \\((.+?)\\) in the dashboard\\.","errorType":"validation","errorClass":"WebSearchExecutionError","httpStatus":400,"severity":"error","filePath":"src/lib/search/executeWebSearch.ts","lineNumber":226,"sourceCode":"      const sortedIds = Object.values(SEARCH_PROVIDERS)\n        .filter((provider) => supportsSearchType(provider, searchType))\n        .sort((a, b) => a.costPerQuery - b.costPerQuery)\n        .map((provider) => provider.id);\n\n      for (const providerId of sortedIds) {\n        if (providerId === providerConfig.id) continue;\n        const altConfig = getSearchProvider(providerId);\n        const altCreds = await resolveSearchCredentials(providerId);\n        if (altConfig && altCreds) {\n          providerConfig = altConfig;\n          credentials = altCreds;\n          break;\n        }\n      }\n    }\n\n    if (!credentials) {\n      throw new WebSearchExecutionError(\n        `No credentials configured for any search provider. Add an API key for a search provider (${Object.keys(\n          SEARCH_PROVIDERS\n        ).join(\", \")}) in the dashboard.`,\n        400\n      );\n    }\n\n    const otherIds = Object.values(SEARCH_PROVIDERS)\n      .filter((provider) => supportsSearchType(provider, searchType))\n      .sort((a, b) => a.costPerQuery - b.costPerQuery)\n      .map((provider) => provider.id)\n      .filter((providerId) => providerId !== providerConfig!.id);\n\n    for (const providerId of otherIds) {\n      const creds = await resolveSearchCredentials(providerId);\n      if (creds) {\n        alternateProviderId = providerId;\n        alternateCredentials = creds;","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/search/executeWebSearch.ts#L208-L244","documentation":"Error \"No credentials configured for any search provider. Add an API key for a search provider (${Object.keys(SEARCH_PROVIDERS).join(\", \")}) in the dashboard.\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/search/executeWebSearch.ts:226 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}