For coding agents, discover the current recommended embedding shortlist first with GET /v1/models?recommended_for=embedding, then send the selected model explicitly to this endpoint.
Request Body
Synchronous request timeout: This non-chat endpoint waits for the routed model to finish. Large inputs, long audio, or large batches can exceed common 30s client defaults, so set your HTTP client timeout to at least 120s.
ID of the embedding model to use (e.g., text-embedding-3-small).
Input text to embed. Can be a string or array of strings.
Format for the embeddings: float or base64.
Number of dimensions for the output (model-specific).
A unique identifier representing your end-user for abuse monitoring.
Available Models
| Model | Dimensions | Description |
|---|
text-embedding-3-large | 3072 | Best quality |
text-embedding-3-small | 1536 | Balanced |
text-embedding-ada-002 | 1536 | Legacy |
Response
Array of embedding objects.Each object contains:
object (string): embedding
index (integer): Index in the input array
embedding (array): The embedding vector
Token usage with prompt_tokens and total_tokens.
curl -X POST "https://api.tokenlab.sh/v1/embeddings" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": "The quick brown fox jumps over the lazy dog"
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.tokenlab.sh/v1"
)
response = client.embeddings.create(
model="text-embedding-3-small",
input="The quick brown fox jumps over the lazy dog"
)
embedding = response.data[0].embedding
print(f"Embedding dimension: {len(embedding)}")
print(f"First 5 values: {embedding[:5]}")
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.tokenlab.sh/v1'
});
const response = await client.embeddings.create({
model: 'text-embedding-3-small',
input: 'The quick brown fox jumps over the lazy dog'
});
console.log(response.data[0].embedding.slice(0, 5));
<?php
$ch = curl_init('https://api.tokenlab.sh/v1/embeddings');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'text-embedding-3-small',
'input' => 'The quick brown fox jumps over the lazy dog'
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r(array_slice($data['data'][0]['embedding'], 0, 5));
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [0.0023, -0.0194, 0.0081, ...]
}
],
"model": "text-embedding-3-small",
"usage": {
"prompt_tokens": 9,
"total_tokens": 9
}
}
Batch Embeddings
# Embed multiple texts at once
response = client.embeddings.create(
model="text-embedding-3-small",
input=[
"First document text",
"Second document text",
"Third document text"
]
)
for i, data in enumerate(response.data):
print(f"Document {i}: {len(data.embedding)} dimensions")