OpenAI's larger embedding model
For search and RAG where finding the right passage matters more than storage or price per token.
OpenAI's text-embedding-3-large on the same API OpenAI serves it on, for $0.065 per 1M tokens instead of $0.13: its larger embedding model, with vectors that match OpenAI's own.
text-embedding-3-largeUpdated 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-large", 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)) # 3072 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.065 | 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.
$39.00 a year
Cost
Typical workloads at Zurelay's live prices, next to the list price.
Overview
Text Embedding 3 Large (text-embedding-3-large) is OpenAI's larger embedding model, for when retrieval quality matters most. It turns text into a vector of 3,072 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-large 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 3,072 dimensions by default. The dimensions parameter shortens them to any length from 1 to 3,072: the text-embedding-3 models are trained so that a shortened vector still works, and it comes back re-normalised. At 1,024 dimensions a vector takes a third of the storage of the full one and searches 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.065 per 1M on Zurelay against OpenAI's $0.13, 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
For search and RAG where finding the right passage matters more than storage or price per token.
$0.065 per 1M tokens against OpenAI's $0.13, 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 anything from 1 to 3,072 dimensions: shorter vectors come back re-normalised, take less storage and search faster.
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-largeWorks with the tools you already use
Compare
$0.01 per 1M input tokens
Pick Text Embedding 3 Small, OpenAI's small embedding model, for most search and RAG at a much lower price per token, with 1,536 dimensions.
Text Embedding 3 Small 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.065 per 1M input tokens, against OpenAI's list price of $0.13, 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-large 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-large can be searched with queries embedded through Zurelay, and the other way round. Only moving to another model, such as text-embedding-3-small, means embedding everything again: vectors from different models can't be compared.
Start with text-embedding-3-small: it costs much less per token, and its 1,536-dimension vectors suit most search and RAG. Pick text-embedding-3-large when finding the right passage matters more than storage and price. Whichever you pick, use it for everything you compare, since vectors from the two can't be mixed.
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-large 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.
3,072 by default. Set dimensions to any number from 1 to 3,072 for a shorter vector: the model is trained so that a shortened vector still works, and it comes back re-normalised. 1,024 dimensions take a third of the storage. Use the same length for every vector you compare.
Yes. Give LangChain's OpenAIEmbeddings or LlamaIndex's OpenAIEmbedding the model ID text-embedding-3-large, 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.
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.
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-large is down, the request fails with a 503 error you can retry.
Yes. In the dashboard's Playground, pick text-embedding-3-large, 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.