{"record":{"id":"234d0f15613c157c","repo":"moeru-ai/airi","slug":"speech-engine-answered-response-status-respon-234d0f","errorCode":null,"errorMessage":"Speech engine answered ${response.status} ${response.statusText} for /${engineRequest.endpoint}${suffix}","messagePattern":"Speech engine answered (.+?) (.+?) for /(.+?)(.+?)","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/provider-inference/src/providers/local/voicevox/engine.ts","lineNumber":207,"sourceCode":"    throw new Error('The Base URL is not an absolute http:// or https:// address.')\n  }\n\n  const doFetch = options?.fetch ?? globalThis.fetch\n  const response = await doFetch(url, {\n    method: POST_ENDPOINTS.has(engineRequest.endpoint) ? 'POST' : 'GET',\n    // No engine in the family redirects. A redirect therefore means the Base URL\n    // points at something else, and following it would hide that.\n    redirect: 'error',\n    signal: options?.signal,\n    ...(engineRequest.body === undefined\n      ? {}\n      : { body: JSON.stringify(engineRequest.body), headers: { 'Content-Type': 'application/json' } }),\n  })\n\n  if (!response.ok) {\n    const detail = (await response.text()).trim()\n    const suffix = detail ? `: ${detail.slice(0, 200)}` : ''\n    throw new Error(`Speech engine answered ${response.status} ${response.statusText} for /${engineRequest.endpoint}${suffix}`)\n  }\n\n  return response\n}\n","sourceCodeStart":189,"sourceCodeEnd":212,"githubUrl":"https://github.com/moeru-ai/airi/blob/f679616c34f1cf6d282c8d64264242af944b3fed/packages/provider-inference/src/providers/local/voicevox/engine.ts#L189-L212","documentation":"The engine responded with a non-success HTTP status for the requested endpoint; the message carries the status, statusText, and endpoint path so the failure is attributable to a specific engine route (e.g. /audio_query or /synthesis). It fires after fetch when the response is not OK, surfacing upstream rejection (bad voice id, engine error, missing speaker) to the provider layer.","triggerScenarios":"Thrown at packages/provider-inference/src/providers/local/voicevox/engine.ts:207 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the engine logs for the endpoint and status reported in the message","Verify the voice/speaker id exists on the engine (400 usually means unknown speaker or style)","Ensure query parameters like text are within engine limits; 429/5xx warrant retry after backoff"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f679616c34f1cf6d282c8d64264242af944b3fed","analyzedAt":"2026-09-08T13:18:15.005Z","contentChangedAt":"2026-09-08T13:18:15.005Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}