{"record":{"id":"9fb3278ef3137e05","repo":"diegosouzapw/OmniRoute","slug":"no-credentials-configured-for-search-provider-p","errorCode":null,"errorMessage":"No credentials configured for search provider: ${providerConfig.id}. Add an API key for \"${providerConfig.id}\" in the dashboard.","messagePattern":"No credentials configured for search provider: (.+?)\\. Add an API key for \"(.+?)\" in the dashboard\\.","errorType":"validation","errorClass":"WebSearchExecutionError","httpStatus":400,"severity":"error","filePath":"src/lib/search/executeWebSearch.ts","lineNumber":178,"sourceCode":"\n  let credentials: Record<string, any> | null = null;\n  let alternateProviderId: string | undefined;\n  let alternateCredentials: Record<string, any> | null = null;\n\n  if (input.provider) {\n    credentials = await resolveSearchCredentials(providerConfig.id);\n    if (\n      !credentials &&\n      providerConfig.authType === \"none\" &&\n      typeof input.provider_options?.baseUrl === \"string\" &&\n      input.provider_options.baseUrl.trim().length > 0\n    ) {\n      credentials = {\n        providerSpecificData: { baseUrl: input.provider_options.baseUrl.trim() },\n      };\n    }\n    if (!credentials) {\n      throw new WebSearchExecutionError(\n        providerConfig.authType === \"none\"\n          ? `Search provider ${providerConfig.id} is not configured. Set its base URL in the dashboard or pass provider_options.baseUrl.`\n          : `No credentials configured for search provider: ${providerConfig.id}. Add an API key for \"${providerConfig.id}\" in the dashboard.`,\n        400\n      );\n    }\n  } else {\n    credentials = await resolveSearchCredentials(providerConfig.id);\n\n    if (!credentials) {\n      const fallbackProviders = Object.values(SEARCH_PROVIDERS)\n        .filter((provider) => provider.fallbackOnly && supportsSearchType(provider, searchType))\n        .sort((a, b) => a.costPerQuery - b.costPerQuery);\n\n      for (const fallbackProvider of fallbackProviders) {\n        providerConfig = fallbackProvider;\n        if (fallbackProvider.id === \"duckduckgo-free\") {\n          credentials = {};","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/search/executeWebSearch.ts#L160-L196","documentation":"Error \"No credentials configured for search provider: ${providerConfig.id}. Add an API key for \"${providerConfig.id}\" in the dashboard.\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/search/executeWebSearch.ts:178 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"}