continuedev/continue · error

HTTP ${e.response.status} ${e.response.statusText} from ${e.

Error message

HTTP ${e.response.status} ${e.response.statusText} from ${e.response.url}\n\n${e.response.body}

What it means

Thrown in the Ollama customFetch path when a caught error's message references /api/show and the response was non-OK. /api/show is used to fetch model details, so this indicates Ollama answered but rejected the request — typically because the requested model name is not pulled/installed locally.

Source

Thrown at core/llm/index.ts:483

          const error = await this.parseError(resp);
          throw error;
        }

        return resp;
      } catch (e: any) {
        Logger.error(e, {
          context: "llm_fetch",
          url: String(input),
          method: init?.method || "GET",
          model: this.model,
          provider: this.providerName,
        });

        // Errors to ignore
        if (e.message.includes("/api/tags")) {
          throw new Error(`Error fetching tags: ${e.message}`);
        } else if (e.message.includes("/api/show")) {
          throw new Error(
            `HTTP ${e.response.status} ${e.response.statusText} from ${e.response.url}\n\n${e.response.body}`,
          );
        } else {
          if (!isAbortError(e)) {
            // Don't pollute console with abort errors. Check on name instead of instanceof, to avoid importing node-fetch here
            console.debug(
              `${e.message}\n\nCode: ${e.code}\nError number: ${e.errno}\nSyscall: ${e.erroredSysCall}\nType: ${e.type}\n\n${e.stack}`,
            );
          }
          if (
            e.code === "ECONNREFUSED" &&
            e.message.includes("http://127.0.0.1:11434")
          ) {
            const message = (await isOllamaInstalled())
              ? "Unable to connect to local Ollama instance. Ollama may not be running."
              : "Unable to connect to local Ollama instance. Ollama may not be installed or may not running.";
            throw new Error(message);
          }

View on GitHub (pinned to 5522c6f44c)

Solutions

  1. List installed models: curl http://localhost:11434/api/tags (or ollama list) and match the exact name/tag
  2. Pull the model: ollama pull <model>
  3. Fix typos or wrong tags in the model name in your config
  4. For partially pulled models, re-run ollama pull to complete it

Example fix

# before
model: "mistral"  # not installed -> 404 from /api/show
# after
ollama pull mistral
model: "mistral:latest"
Defensive patterns

Strategy: validation

Validate before calling

const tags = await (await fetch('http://localhost:11434/api/tags')).json(); if (!tags.models.some(m => m.name === modelName)) throw new Error('model not pulled');

Type guard

const modelExists = (tags: { models: { name: string }[] }, name: string) => tags.models.some(m => m.name === name);

Try / catch

catch (e) { if (e.message.includes('/api/show') && /404/.test(e.message)) { await pullModel(); retry(); } else throw e; }

Prevention

When it happens

Trigger: Requesting a model that isn't present locally (e.g. mistral when only llama3 is pulled), a misspelled or non-canonical model tag, or a partially-pulled model, causing Ollama's /api/show to return 404.

Common situations: Using a model name from config that was never pulled on this machine; switching machines without re-pulling models; tag mismatches (e.g. llama3 vs llama3:latest vs llama3:8b).

Related errors


AI-assisted analysis of continuedev/continue@5522c6f44c (2026-08-27). Data as JSON: /api/errors/1f1f20d05ce53e2d. Report an issue: GitHub.