---
title: "No model runs here — /chat/completions and the rest, refused"
description: "Why this host answers 404 to /chat/completions, /v1/models and the rest of the OpenAI-compatible probe: no model is hosted or proxied here, an empty model list would read as a broken gateway, and 405 would assert a resource that does not exist."
canonical: "https://www.pathwren.workers.dev/inference.html"
url: "https://www.pathwren.workers.dev/inference.md"
format: "markdown"
source: "the bytes of /inference.html, in the build that wrote the page"
generator: "surfaces/ai-crawler-index/build.py"
generated: "2026-09-14T09:49:20+00:00"
license: "CC0-1.0"
---

# This host runs no model

> Why this host answers 404 to /chat/completions, /v1/models and the rest of the OpenAI-compatible probe: no model is hosted or proxied here, an empty model list would read as a broken gateway, and 405 would assert a resource that does not exist.

Every path below answers `404`, for every method, with
`application/json` in the body. There is no inference endpoint here, no model is
hosted, nothing is proxied to one, and no key would change that. The same facts as data:
[/inference.json](https://www.pathwren.workers.dev/inference.json).

```text
$ curl -s -X POST https://www.pathwren.workers.dev/v1/chat/completions
{
  "error": {
    "message": "This origin does not serve an OpenAI-compatible inference API. ...",
    "type": "invalid_request_error",
    "param": null,
    "code": "not_an_inference_endpoint"
  },
  ...
}
```

## Who asked

One client, seven requests, ten seconds, three addresses, on
**2026-09-01** between `02:49:36Z` and `02:49:46Z`. It
enumerated the model list at four mount points, then POSTed three spellings of
`chat/completions`. That order is the fingerprint of a sweep for an
unauthenticated OpenAI-compatible gateway — a vLLM, llama.cpp, Ollama, LM Studio or
LiteLLM instance published by accident. Its user-agent was the string `Mozilla/5.0`
and nothing else: no product, no version, no `+https://` URL. We record it as
observed; we do not guess who it was.

| Path | Method seen | Status | Evidence |
| --- | --- | --- | --- |
| `/v1/chat/completions` | `POST` | `404` | observed 2026-09-01T02:49:43Z |
| `/chat/completions` | `POST` | `404` | observed 2026-09-01T02:49:45Z |
| `/openai/v1/chat/completions` | `POST` | `404` | observed 2026-09-01T02:49:46Z |
| `/v1/models` | `GET` | `404` | observed 2026-09-01T02:49:36Z |
| `/openai/v1/models` | `GET` | `404` | observed 2026-09-01T02:49:38Z |
| `/api/v1/models` | `GET` | `404` | observed 2026-09-01T02:49:40Z |
| `/models` | `GET` | `404` | observed 2026-09-01T02:49:41Z |
| `/v1/completions` | `POST` | `404` | same probe, answered by extension |
| `/v1/embeddings` | `POST` | `404` | same probe, answered by extension |
| `/v1/responses` | `POST` | `404` | same probe, answered by extension |
| `/v1/messages` | `POST` | `404` | Anthropic spelling, answered by extension |
| `/v1/complete` | `POST` | `404` | Anthropic spelling, answered by extension |

## Why not just serve an empty model list

Returning `200` with `{"object":"list","data":[]}` at
`/v1/models` would be schema-valid, and it is still refused.
[/.well-known/x402](https://www.pathwren.workers.dev/.well-known/x402) is served as `200` because it
answers a question about *resources* — “does anything here require payment?”
— where *none* is both true and useful. `/v1/models` answers a question about
the *server*: a `200` asserts the OpenAI Models API is implemented at this
origin. It is not. An empty model list is also exactly what a misconfigured or still-loading
gateway returns, so a `200` would make this host indistinguishable from a broken LLM
proxy, invite the retries that follow one, and get it filed as inference infrastructure by
anything reading that column.

Ask what a correct client does next. After a `200` on `/v1/models` it
POSTs `/v1/chat/completions`, fails, and concludes the host is broken. After this
`404` it concludes the host is not an inference endpoint — exactly true — and learns
what it is instead in the same response.

## Why 404 and not 405

Until 2026-09-01T12:06Z a POST here returned `405` with a zero-byte body,
produced by the static-asset handler's method check rather than by any decision.
[RFC 9110 §15.5.6](https://www.rfc-editor.org/rfc/rfc9110.html#section-15.5.6): 405 “indicates that the method received in the request-line is known by the
origin server but not supported by *the target resource*. The origin server MUST
generate an Allow header field in a 405 response…” — so it asserted that something
exists at `/chat/completions`, and it sent no `Allow` header, breaking
the MUST as well. [§15.5.5](https://www.rfc-editor.org/rfc/rfc9110.html#section-15.5.5):
404 “indicates that the origin server did not find a current representation for the target
resource” — true here for every method, so every method gets it, and no
`Allow` header is sent because none would be honest.

## What this host does answer

A probe looking for a machine-callable endpoint is welcome; it is only looking for the wrong
one. Three MCP servers over JSON-RPC: [/mcp](https://www.pathwren.workers.dev/mcp.html),
[/mcp/triage](https://www.pathwren.workers.dev/mcp-triage.html), [/mcp/doctor](https://www.pathwren.workers.dev/mcp-doctor.html) (see the
[transport contract](https://www.pathwren.workers.dev/mcp-transport.html)). An
[OpenAPI 3.1 document](https://www.pathwren.workers.dev/openapi.json), the whole
[dataset](https://www.pathwren.workers.dev/data/agents.json) under CC0, this host's own
[traffic](https://www.pathwren.workers.dev/stats.json), and [/llms.txt](https://www.pathwren.workers.dev/llms.txt) for the map.

## If you got the same probe

Two things are worth knowing. If you *do* run an OpenAI-compatible gateway and any of
those paths returned `200` without a credential, that is the finding the sweep came
for: an open endpoint someone else can spend your compute through. Check it with the same
requests, unauthenticated, from off your network. If you do not run one, do not invent a stub to
make the 404 tidy — an empty model list reads as a broken gateway rather than as “not an
inference endpoint”, and a `405` on POST is worse, because it tells the scanner
a resource is there. Answer `404` for every method and put the reason in the error
envelope the caller already parses. It costs one route, and it is the only answer that is
true.

This host is independent and unaffiliated with OpenAI, Anthropic or any model
provider. The error envelopes above are borrowed so that your client can read the refusal;
nothing here impersonates either service. Refusals of record:
[the OAuth family](https://www.pathwren.workers.dev/security.html), the payment family, and this.

## Sitemap

- [Full sitemap (XML)](https://www.pathwren.workers.dev/sitemap.xml) — every page, with dates
- [Full sitemap (markdown)](https://www.pathwren.workers.dev/sitemap.md) — the same map, readable
- [llms.txt](https://www.pathwren.workers.dev/llms.txt) — the whole host in one text file
- [documents.json](https://www.pathwren.workers.dev/documents.json) — every document, with its ETag
- [A2A agents](https://www.pathwren.workers.dev/a2a.html)
- [About and method](https://www.pathwren.workers.dev/about.html)
- [API](https://www.pathwren.workers.dev/api.html)
- [/c/<channel>/](https://www.pathwren.workers.dev/c)
- [Changelog](https://www.pathwren.workers.dev/changelog.html)
- [Compliance](https://www.pathwren.workers.dev/compliance)
- [Contact](https://www.pathwren.workers.dev/contact)
- [Impressum · Anbieterkennzeichnung](https://www.pathwren.workers.dev/impressum)
- [AI Crawler Index](https://www.pathwren.workers.dev/index.html)
- [No model runs here](https://www.pathwren.workers.dev/inference.html)
- [Legal](https://www.pathwren.workers.dev/legal)
- [MCP server](https://www.pathwren.workers.dev/mcp-doctor.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-lint.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-markdown.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-netcheck.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-robots.html)
- [MCP transport: the GET and HEAD leg](https://www.pathwren.workers.dev/mcp-transport.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-triage.html)
- [MCP server](https://www.pathwren.workers.dev/mcp.html)
- [Packages](https://www.pathwren.workers.dev/packages.html)
- [Pricing](https://www.pathwren.workers.dev/pricing)
- [Privacy](https://www.pathwren.workers.dev/privacy.html)
- [API reference](https://www.pathwren.workers.dev/reference)
- [Access, keys and sign-up](https://www.pathwren.workers.dev/register)
- [Security posture](https://www.pathwren.workers.dev/security.html)
- [Services](https://www.pathwren.workers.dev/services)
- [Upstream status](https://www.pathwren.workers.dev/status.html)
- [Terms of use](https://www.pathwren.workers.dev/terms.html)
- [Trust](https://www.pathwren.workers.dev/trust)

## Machine copies of this page

- [HTML (canonical)](https://www.pathwren.workers.dev/inference.html)
- [JSON](https://www.pathwren.workers.dev/inference.json)
- [Markdown](https://www.pathwren.workers.dev/inference.md) — this document

This document is a markdown rendering of [https://www.pathwren.workers.dev/inference.html](https://www.pathwren.workers.dev/inference.html), generated from that page's own bytes in the same build. The HTML page is canonical.
