Send a chat completion

All buyer traffic uses this endpoint:

https://api.modelvendor.com/v1/chat/completions

The request body pins both the seller and model:

{
  "seller": "alice-gpus",
  "model": "llama3.2:3b",
  "messages": [
    { "role": "user", "content": "Hello" }
  ]
}
curl https://api.modelvendor.com/v1/chat/completions \
  -H "Authorization: Bearer $MODELVENDOR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "seller": "alice-gpus",
    "model": "llama3.2:3b",
    "messages": [{"role":"user","content":"Hello"}]
  }'

Seller model

One connector, many model listings

A seller runs one OpenAI-compatible model gateway. Its GET /v1/models response advertises every available model. Each model receives its own marketplace listing, price, and capacity settings while sharing the same connector.

@alice-gpus
└── alice-gpus.modelvendor.com
    ├── llama3.2:3b
    ├── qwen3:32b
    └── mistral-small

Seller connector

Connect the model server you already run

Install the connector and point it at your local model server:

# macOS
brew install GrowwSoft/tap/modelvendor

# Linux
curl -fsSL https://modelvendor.com/install.sh | sh

# Windows (PowerShell)
winget install --id Cloudflare.cloudflared
Invoke-WebRequest https://github.com/GrowwSoft/modelvendor-connector/releases/latest/download/modelvendor_windows_amd64.zip -OutFile modelvendor.zip
Expand-Archive modelvendor.zip -DestinationPath .\modelvendor

# Then connect
modelvendor connect \
  --token <YOUR_CONNECT_TOKEN> \
  --upstream <YOUR_LOCAL_MODEL_SERVER_URL>

On Windows, install cloudflared first — the connector runs it to open the tunnel and cannot work without it — then download and unzip the connector and run modelvendor.exe from the folder it created. macOS and Linux install cloudflared for you. A one-command winget install for the connector itself is on the way; until it ships, winget will not find that package, so use the download above.

ModelVendor provisions a stable, protected hostname from your seller handle — the account @alice-gpus receives alice-gpus.modelvendor.com. You never manage tunnels, certificates, or temporary URLs, and your model server stays where it is.

Metering boundary

Tokens are counted at ModelVendor

Buyers never connect directly to seller machines. ModelVendor relays each request and computes billable tokens from the response it actually forwards, rather than trusting a seller-supplied usage field.

billed =
  (input_tokens  / 1,000,000 × seller_input_price) +
  (output_tokens / 1,000,000 × seller_output_price)

ModelVendor uses one immutable, versioned billing tokenizer for every model. Input is canonicalized as role plus content; output is counted exactly as forwarded, without added special tokens. This keeps arbitrary models listable and prices comparable.