Half OpenAI's price
$0.01 per 1M tokens against OpenAI's $0.02, with no minimum per request, and the vectors are free.
OpenAI's text-embedding-3-small on the same API OpenAI serves it on, for $0.01 per 1M tokens instead of $0.02: vectors for search and RAG that match OpenAI's own.
text-embedding-3-smallUpdated from openai import OpenAIclient = OpenAI( base_url="https://api.zurelay.com/v1", api_key="YOUR_ZURELAY_KEY",)response = client.embeddings.create( model="text-embedding-3-small", input=[ "How can I change my password?", "Invoices go out on the first of each month.", ],)for item in response.data: print(item.index, len(item.embedding)) # 1536 eachprint(response.usage.prompt_tokens, "tokens")Base URL https://api.zurelay.com/v1. Works with any OpenAI SDK, LangChain, LlamaIndex and the AI SDK. Embeddings API docs
Pricing
Pay as you go from prepaid credit, with no subscription. Top up from $10. Requests that fail are never billed.
| Rate | Zurelay | OpenAI list | You save |
|---|---|---|---|
Input per 1M tokens | $0.01 | 50%off | |
Output per 1M tokens | $0.00 | — | — |
Billed on the tokens you send, counted the way OpenAI counts them, with no minimum per request. The vectors are free, and shorter dimensions or base64 cost the same. Requests that fail cost nothing.
Move the sliders to your monthly usage.
$6.00 a year
Cost
Typical workloads at Zurelay's live prices, next to the list price.
Overview
Text Embedding 3 Small (text-embedding-3-small) is OpenAI's small, low-cost embedding model. It turns text into a vector of 1,536 numbers, placed so that texts with similar meanings sit close together, for semantic search, retrieval (RAG), clustering and recommendations. Zurelay serves it on OpenAI's embeddings endpoint with the same model ID, request and response, at 50% below OpenAI's list price, and the vectors match OpenAI's own.
Send text to POST https://api.zurelay.com/v1/embeddings with the model ID text-embedding-3-small and you get back one vector per input, in OpenAI's response shape. The input can be a string, an array of up to 2,048 strings, an array of token IDs from OpenAI's cl100k_base tokenizer, or an array of up to 2,048 token arrays. Each input can be up to 8,192 tokens, and one request up to 300,000 tokens in all.
Vectors have 1,536 dimensions by default. The dimensions parameter shortens them to any length from 1 to 1,536: the text-embedding-3 models are trained so that a shortened vector still works, and it comes back re-normalised. Shorter vectors take less storage and search faster. With encoding_format set to base64, each vector comes back as base64-encoded little-endian float32 numbers, smaller and faster to download; OpenAI's Python SDK asks for that by default and decodes it for you.
OpenAI's SDKs work as they are: set the base URL to https://api.zurelay.com/v1, use your Zurelay key and call client.embeddings.create. So do LangChain's OpenAIEmbeddings, LlamaIndex's OpenAIEmbedding, the Vercel AI SDK's OpenAI provider and apps that let you set an OpenAI base URL for embeddings. We checked every route against OpenAI's own API: for the same text the vectors match, with a cosine similarity of 0.9999 or more, so an index built with OpenAI's API keeps working when you query it through Zurelay.
It's billed on input tokens only, counted the way OpenAI counts them: $0.01 per 1M on Zurelay against OpenAI's $0.02, with no minimum per request, and the vectors are free. An embeddings request is always answered by the model you name: vectors from different models can't be compared, so Zurelay never answers with another one, and moving to another model means embedding everything you've stored again.
Strengths
$0.01 per 1M tokens against OpenAI's $0.02, with no minimum per request, and the vectors are free.
The vectors match OpenAI's for the same text, so an index you built with OpenAI's API needs no re-embedding to move to Zurelay.
Ask for fewer dimensions to save storage and search faster: the shortened vector comes back re-normalised and still works.
Send up to 2,048 texts at once and get their vectors back in the same order, billed per token, not per request.
Use cases
Find documents, products or tickets by what they mean, not the exact words, by the cosine similarity of their vectors.
Fetch the passages closest to a question and hand them to a chat model on the same Zurelay key.
Group near-duplicate records, support tickets or reviews by how close their vectors are.
Suggest similar articles, products or listings from the vectors of what someone looked at.
Get started
No waitlist and no new SDK. If your code already calls OpenAI's embeddings, it works with Zurelay, and so do the vectors you've stored.
Sign up, add credit and create an API key. Set a monthly budget or a rate limit per key if you like.
Change the base URL. The model IDs, the request and the vectors stay the same as OpenAI's.
https://api.zurelay.com/v1Call client.embeddings.create, or POST text to /v1/embeddings, one string or up to 2,048 at once, and get a vector for each.
text-embedding-3-smallWorks with the tools you already use
Compare
$0.065 per 1M input tokens
Pick Text Embedding 3 Large, OpenAI's larger embedding model, for more accurate retrieval with up to 3,072 dimensions, at a higher price per token.
Text Embedding 3 Large API$0.025 / $0.125 per 1M tokens
Pick GPT-6 Luna, OpenAI's fast, low-cost chat model, to write answers from what your search finds.
GPT-6 Luna API$0.04 per 1M input tokens
Pick GPT-6 Luna Decisions to classify or score text with probabilities, rather than compare texts by meaning.
GPT-6 Luna Decisions APIZurelay charges $0.01 per 1M input tokens, against OpenAI's list price of $0.02, so you save 50%. The vectors are free: you pay only for the tokens you send, counted the way OpenAI counts them, with no minimum per request. Requests that fail cost nothing.
Yes. Requests to text-embedding-3-small run on OpenAI's model, and we checked every route against OpenAI's own API: for the same text, the vectors match OpenAI's with a cosine similarity of 0.9999 or more. Zurelay is an independent service and is not affiliated with or endorsed by OpenAI.
Yes. Vectors you made with OpenAI's text-embedding-3-small can be searched with queries embedded through Zurelay, and the other way round. Only moving to another model, such as text-embedding-3-large, means embedding everything again: vectors from different models can't be compared.
Create a Zurelay API key, set the base URL to https://api.zurelay.com/v1 and call client.embeddings.create with model set to text-embedding-3-small and your text as input. Or POST the same JSON to https://api.zurelay.com/v1/embeddings with your key as a Bearer token. The docs at https://zurelay.com/docs/embeddings have examples in Python, Node.js and cURL.
Yes. Give LangChain's OpenAIEmbeddings or LlamaIndex's OpenAIEmbedding the model ID text-embedding-3-small, Zurelay's base URL and your key, or create the Vercel AI SDK's OpenAI provider with them. LangChain's Python class sends token IDs by default, which Zurelay accepts, so its default settings work.
1,536 by default. Set dimensions to any number from 1 to 1,536 for a shorter vector: the model is trained so that a shortened vector still works, and it comes back re-normalised. Use the same length for every vector you compare.
Up to 2,048 inputs a request, up to 8,192 tokens in each, and up to 300,000 tokens in the whole request. Empty strings aren't accepted. A request over a limit gets a 400 error that names the limit, and costs nothing.
Set encoding_format to base64 and each vector comes back as a base64 string of little-endian float32 numbers instead of a JSON array of numbers: smaller and faster to download. OpenAI's Python SDK asks for base64 by default and decodes it for you. It costs the same.
No, never for embeddings. Vectors from different models can't be compared, so another model's would be wrong for your index. If text-embedding-3-small is down, the request fails with a 503 error you can retry.
Yes. In the dashboard's Playground, pick text-embedding-3-small, write a few texts and embed them: you see each vector's first numbers, the tokens billed, the cost and the cosine similarity of every pair. Get code writes the same request for Python, Node.js or cURL.
Create a key in seconds, point the SDK you already use at Zurelay, and every request costs up to 90% less from the first token.