OpenAI Embeddings
Creates embeddings for text using OpenAI's embedding models
Creates embeddings for text using OpenAI's embedding models. This endpoint follows the OpenAI API specification and the requests are sent to the Azure OpenAI endpoint.
Before You Start
- API key: To use the API, ask your workspace admin for a workspace API key with the Embedding API scope. Personal API keys only include the Completion API scope and cannot call this endpoint.
Base URL
https://api.ajan.io/openai/{region}/v1/embeddingsParameters
All parameters from the OpenAI Embeddings endpoint are supported according to the OpenAI specifications, with the following exceptions:
model: Currently only thetext-embedding-ada-002model is supported.encoding_format: Supports bothfloatandbase64formats.
Rate limits
The default limits are 500 RPM (requests per minute) and 150,000 TPM (tokens per minute).
- RPM is enforced per workspace, model, and API key.
- TPM is shared by all API keys using the same model in a workspace.
- On dedicated deployments, admins can configure custom limits per model in Settings > Workspace > Products > API.
If you exceed your rate limit, you will receive a 429 Too Many Requests response.
Using OpenAI-compatible libraries
As the request and response format is the same as the OpenAI API, you can use popular libraries like the OpenAI Python library or the Vercel AI SDK to use the ajan API.
Example using the OpenAI Python library
python
from openai import OpenAI
client = OpenAI(
base_url="https://api.ajan.io/openai/eu/v1",
api_key="<YOUR_AJAN_API_KEY>"
)
embedding = client.embeddings.create(
model="text-embedding-ada-002",
input="The quick brown fox jumps over the lazy dog",
encoding_format="float"
)
print(embedding.data[0].embedding)Example using the Vercel AI SDK in Node.js
typescript
import { createOpenAI } from "@ai-sdk/openai";
const ajanProvider = createOpenAI({
baseURL: "https://api.ajan.io/openai/eu/v1",
apiKey: "<YOUR_AJAN_API_KEY>",
});
const response = await ajanProvider.embeddings.create({
model: "text-embedding-ada-002",
input: "The quick brown fox jumps over the lazy dog",
encoding_format: "float",
});
console.log(response.data[0].embedding);OpenAPI
openapi: 3.0.0
info:
title: ajan API
version: 3.0.0
servers:
- url: https://api.ajan.io
description: Production
security:
- bearerAuth: []
paths:
/openai/{region}/v1/embeddings:
post:
tags:
- Embeddings
summary: Creates embeddings for the given input text.
parameters:
- name: region
in: path
required: true
description: The region of the API to use.
schema:
type: string
enum:
- eu
- us
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmbeddingRequest'
example:
model: text-embedding-ada-002
input: The quick brown fox jumps over the lazy dog
encoding_format: float
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmbeddingResponse'
example:
data:
- embedding:
- 0.0023064255
- -0.009327292
- ...
index: 0
object: embedding
model: text-embedding-ada-002
object: list
usage:
prompt_tokens: 9
total_tokens: 9
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
oneOf:
- example: No embedding models available for the ${region} region
description: >-
Error message indicating either no models are available in the
region or the requested model is not available
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: The provided API key is invalid.
'429':
description: Rate Limit Exceeded
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Rate limit for public API exceeded
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Internal Server Error
security:
- bearerAuth: []
components:
schemas:
CreateEmbeddingRequest:
type: object
properties:
input:
description: >-
Input text to get embeddings for, encoded as a string or array of
tokens. To get embeddings for multiple inputs in a single request,
pass an array of strings or array of tokens, e.g. `["text1",
"text2"]`. Each input must not exceed 8192 tokens in length.
oneOf:
- type: string
- items:
type: string
type: array
- type: array
items:
type: number
- type: array
items:
type: array
items:
type: number
model:
description: >-
ID of the model to use. You can use the [List
models](https://platform.openai.com/docs/api-reference/models/list)
API to see all of your available models, or see OpenAI's [Model
overview](https://platform.openai.com/docs/models/overview) for
descriptions of them.
oneOf:
- type: string
- type: string
enum:
- text-embedding-ada-002
- text-embedding-3-small
- text-embedding-3-large
encoding_format:
description: >-
The format to return the embeddings in. Can be either `float` or
`base64`.
type: string
enum:
- float
- base64
default: float
dimensions:
description: >-
The number of dimensions the resulting output embeddings should
have. Only supported in `text-embedding-3` and later models.
type: integer
minimum: 1
user:
description: >-
A unique identifier representing your end-user, which can help
OpenAI to monitor and detect abuse.
type: string
required:
- model
- input
CreateEmbeddingResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Embedding'
description: The list of embeddings generated by the model.
model:
type: string
description: The name of the model used to generate the embedding.
object:
type: string
enum:
- list
description: The object type, which is always "list".
usage:
type: object
properties:
prompt_tokens:
type: integer
description: The number of tokens used for the prompt(s).
total_tokens:
type: integer
description: The total number of tokens used by the request.
required:
- prompt_tokens
- total_tokens
required:
- data
- model
- object
- usage
Embedding:
type: object
properties:
index:
type: integer
description: The index of the embedding in the list of embeddings.
embedding:
type: array
items:
type: number
description: >-
The embedding vector, which is a list of floats. The length of
vector depends on the model as listed in the [embedding
guide](https://platform.openai.com/docs/guides/embeddings).
object:
type: string
enum:
- embedding
description: The object type, which is always "embedding".
required:
- index
- embedding
- object
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: API key as Bearer token. Format "Bearer YOUR_API_KEY"