Free · verified · OpenAI-compatible

Embeddings without the meter running.

Warm open models on CPU for embeddings, reranking, and classification. Keep your OpenAI client, switch the API base, and get signed provenance receipts on every result.

Embeddings p50
Live…
same-origin /status.json
Warm vector model
384d
BAAI/bge-small-en-v1.5
Anonymous free tier
60 rpm
1500 requests/day · per IP/instance
Receipt verification
Signed
no inference rerun

Measured, not marketed

Live latency. Live models.

This table is populated from the service's real /status.json response. Latencies are this-instance p50s since start, not a synthetic promise.

Loading live status…

Raw JSON ↗

CapabilityWarm modelp50State
Waiting for /status.json…

Actually free

Useful limits, stated plainly.

No card. No email. Anonymous access uses a short-lived demo bearer; a revocable durable key doubles the minute rate and gives you a stable identity.

Anonymous demo bearer

60 requests/minute

Start without signup

  • 1500 requests/day per IP, per active instance
  • Rate limits are in-process abuse guardrails
  • Mint again when the bearer expires

What “verified” means

Each embeddings, rerank, and classify response includes a provenance_receipt: a signed envelope binding source commitments, routing and served-model facts, and a semantic output hash. POST /v1/provenance/verify checks that receipt without rerunning inference. It proves receipt integrity and declared execution evidence—not embedding quality, answer truth, or cryptographic attestation of model-weight execution at serve time.

Keep your stack

Drop-in, live-checked diffs.

These exact constructor shapes returned 384-dimensional vectors from the live API on 2026-08-18. The model line changes from a proprietary id to Bay Run's pinned open model.

openai

OpenAI Python

Live-checked · openai-python 2.16.0 + 3.2.0

 import os
 from openai import OpenAI
 client = OpenAI(
     api_key=os.environ["BAY_RUN_API_KEY"],
+    base_url="https://run.huggingbay.xyz/v1",
 )
 response = client.embeddings.create(
-    model="text-embedding-3-small",
+    model="BAAI/bge-small-en-v1.5",
     input=["hello", "verified vectors"],
 )

openai

OpenAI Node

Live-checked · openai-node 7.5.0

 import OpenAI from "openai";
 const client = new OpenAI({
   apiKey: process.env.BAY_RUN_API_KEY,
+  baseURL: "https://run.huggingbay.xyz/v1",
 });
 const response = await client.embeddings.create({
-  model: "text-embedding-3-small",
+  model: "BAAI/bge-small-en-v1.5",
   input: ["hello", "verified vectors"],
 });

langchain-openai

LangChain Python

Live-checked · langchain-openai 1.5.2

 from langchain_openai import OpenAIEmbeddings
 embeddings = OpenAIEmbeddings(
     api_key=os.environ["BAY_RUN_API_KEY"],
-    model="text-embedding-3-small",
+    model="BAAI/bge-small-en-v1.5",
+    base_url="https://run.huggingbay.xyz/v1",
 )
 vector = embeddings.embed_query("free, verified embeddings")

@langchain/openai

LangChain JavaScript

Live-checked · @langchain/openai 1.5.8

 import { OpenAIEmbeddings } from "@langchain/openai";
 const embeddings = new OpenAIEmbeddings({
   apiKey: process.env.BAY_RUN_API_KEY,
-  model: "text-embedding-3-small",
+  model: "BAAI/bge-small-en-v1.5",
+  configuration: { baseURL: "https://run.huggingbay.xyz/v1" },
 });
 const vector = await embeddings.embedQuery("free, verified embeddings");

llama-index-embeddings-openai

LlamaIndex

Live-checked · llama-index-embeddings-openai 0.6.0

 from llama_index.embeddings.openai import OpenAIEmbedding
 embeddings = OpenAIEmbedding(
     api_key=os.environ["BAY_RUN_API_KEY"],
-    model="text-embedding-3-small",
+    model_name="BAAI/bge-small-en-v1.5",
+    api_base="https://run.huggingbay.xyz/v1",
 )
 vector = embeddings.get_text_embedding("free, verified embeddings")

ai + @ai-sdk/openai-compatible

Vercel AI SDK

Live-checked · AI SDK 7.0.67 + openai-compatible 3.0.31

-import { openai } from "@ai-sdk/openai";
+import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
 import { embed } from "ai";
+const bayRun = createOpenAICompatible({
+  name: "bay-run",
+  apiKey: process.env.BAY_RUN_API_KEY,
+  baseURL: "https://run.huggingbay.xyz/v1",
+});
 const { embedding } = await embed({
-  model: openai.embeddingModel("text-embedding-3-small"),
+  model: bayRun.embeddingModel("BAAI/bge-small-en-v1.5"),
   value: "free, verified embeddings",
 });