DocumentationOuvrir Moon AI
Parcourir la documentation

Embeddings

Référence de POST /v1/embeddings : transformer des textes en vecteurs au format d’OpenAI, pour la recherche sémantique ou le regroupement, avec Moon Blur.

Sur cette page

POST /v1/embeddings transforme un ou plusieurs textes en vecteurs de nombres. Deux textes proches par le sens donnent des vecteurs proches : c’est la base d’une recherche sémantique, d’un regroupement de documents ou d’une détection de doublons. Le point d’accès suit le format d’OpenAI ; les SDK s’utilisent sans changement.

HTTP
POST https://api.realmoon.ai/v1/embeddings
  • Authentification : clé sk-moon-… avec la portée inference (voir Authentification).
  • Corps : JSON, 8 Mo au plus.
  • Réponse : un objet list de vecteurs.

ParamètresLien vers la section Paramètres

ParamètreTypeObligatoireDescription
modelchaîneouiUn modèle de type embedding de GET /v1/models?type=embedding.
inputchaîne, tableau de chaînes, ou jetonsouiLe texte, ou jusqu’à 2 048 textes. Une liste d’entiers (ou une liste de listes d’entiers) est lue comme des jetons déjà découpés. Pas de chaîne vide.
dimensionsentiernonTaille des vecteurs, entre 1 et la taille du modèle. Seulement pour les modèles qui l’acceptent (custom_dimensions à true dans /v1/models).
encoding_formatchaînenonfloat (par défaut) ou base64 : les nombres en float32 little-endian, encodés en base64.
input_typechaînenonquery (une question) ou document (un texte à retrouver), pour les modèles qui distinguent les deux.
userchaînenonIdentifiant de votre utilisateur final. Accepté, n’est pas transmis.

Tout autre paramètre est refusé avec 400 unknown_parameter.

ExempleLien vers la section Exemple

cURL
curl https://api.realmoon.ai/v1/embeddings \
  -H "Authorization: Bearer $MOONAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "mistralai/mistral-embed-2312",
    "input": ["Comment résilier mon contrat ?", "Les horaires d’ouverture du magasin"]
  }'
Python
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.realmoon.ai/v1", api_key=os.environ["MOONAI_API_KEY"])

result = client.embeddings.create(
    model="mistralai/mistral-embed-2312",
    input=["Comment résilier mon contrat ?", "Les horaires d’ouverture du magasin"],
)
for item in result.data:
    print(item.index, len(item.embedding))
JavaScript
import OpenAI from 'openai';

const client = new OpenAI({ baseURL: 'https://api.realmoon.ai/v1', apiKey: process.env.MOONAI_API_KEY });

const result = await client.embeddings.create({
  model: 'mistralai/mistral-embed-2312',
  input: ['Comment résilier mon contrat ?', 'Les horaires d’ouverture du magasin'],
});
for (const item of result.data) console.log(item.index, item.embedding.length);

RéponseLien vers la section Réponse

Réponse
{
  "object": "list",
  "model": "mistralai/mistral-embed-2312",
  "data": [
    { "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, 0.0789] },
    { "object": "embedding", "index": 1, "embedding": [-0.0311, 0.0042, 0.0517] }
  ],
  "usage": { "prompt_tokens": 18, "total_tokens": 18, "credits": 1 }
}

Les vecteurs sont raccourcis dans l’exemple : un vrai vecteur de ce modèle a 1 024 nombres.

ChampTypeDescription
objectchaîneToujours list.
modelchaîneLe modèle appelé.
data[].objectchaîneToujours embedding.
data[].indexentierPosition du texte dans input.
data[].embeddingtableau ou chaîneLe vecteur : une liste de nombres, ou une chaîne base64 avec encoding_format: "base64".
usage.prompt_tokens, usage.total_tokensentierJetons comptés.
usage.creditsentierCrédits facturés pour la requête.

En-têtes : X-Moon-Request-Id, X-Moon-Prompt-Storage: none, X-Moon-Blur et, quand Moon Blur a remplacé des valeurs, X-Moon-Blur-Redactions.

Moon BlurLien vers la section Moon Blur

Quand Moon Blur est actif sur la clé (c’est le cas par défaut), les données personnelles détectées dans les textes sont remplacées avant l’envoi au modèle. Seuls les vecteurs des passages concernés changent. L’en-tête X-Moon-Blur vaut on ou off, et X-Moon-Blur-Redactions donne le nombre de valeurs remplacées. Un texte donné sous forme de jetons n’est pas lu par Moon Blur. Voir Confidentialité.

ModèlesLien vers la section Modèles

Liste au 5 novembre 2026 ; la liste à jour, avec les prix et la taille des vecteurs, vient de GET /v1/models?type=embedding.

ModèleTaille des vecteursdimensions
openai/text-embedding-3-small1 536oui
openai/text-embedding-3-large3 072oui
mistralai/mistral-embed-23121 024non
mistralai/codestral-embed-25051 536non
google/gemini-embedding-0013 072non
qwen/qwen3-embedding-8b4 096non
qwen/qwen3-embedding-4b2 560non
baai/bge-m31 024non
intfloat/multilingual-e5-large1 024non
voyageai/voyage-4, voyageai/voyage-4-lite, voyageai/voyage-code-4selon le modèlenon
perplexity/pplx-embed-v1-4bselon le modèlenon

Gardez le même modèle pour vos documents et pour vos questions : des vecteurs de deux modèles différents ne se comparent pas.

CoûtsLien vers la section Coûts

Avant l’appel, la requête retient le plus que les textes peuvent compter (un jeton par octet du texte, plus quelques jetons par texte). Elle est ensuite facturée sur les jetons réellement comptés, ou sur le coût réel annoncé par le fournisseur. Une requête qui échoue ne coûte rien.

LimitesLien vers la section Limites

LimiteValeur
Textes par requête2 048
Taille de la requête8 Mo, et environ 1 million de jetons
Taille de la réponsenombre de textes × taille des vecteurs : 3 millions de nombres au plus
Requêtes en cours par workspace8
Attente de la réponse du modèle85 secondes au plus

Au-delà de la taille de réponse, l’API indique combien de textes ce modèle accepte en une requête : découpez en plusieurs appels.

ErreursLien vers la section Erreurs

HTTPcodeSignification
400missing_required_parametermodel absent.
400unknown_parameterParamètre inconnu.
400unsupported_parameterdimensions sur un modèle qui ne l’accepte pas, ou valeur refusée par le modèle (avec une indication).
400unsupported_valuedimensions hors limites, ou encoding_format inconnu.
400nullinput mal formé, vide, trop gros, ou trop de textes (param: "input") ; input_type inconnu ; corps JSON invalide.
403org_policyLes règles de votre organisation refusent ce modèle.
404model_not_foundModèle inconnu ou qui ne sert pas ce point d’accès.
413request_too_largeCorps de plus de 8 Mo.
413moon_blur_payload_too_largeUn texte dépasse 500 000 caractères, trop long pour Moon Blur : rien n’est envoyé ni facturé.
429too_many_concurrentDéjà 8 requêtes d’embeddings en cours pour ce workspace.
429upstream_rate_limitedLe modèle est surchargé : réessayez après Retry-After (10 secondes).
502, 504upstream_error, upstream_timeoutLe modèle a échoué ou n’a pas répondu à temps.
503moon_blur_unavailableMoon Blur n’a pas pu analyser les textes : rien n’est envoyé ni facturé.

Les erreurs de clé, de solde et de plafonds sont dans Erreurs.

Voir aussiLien vers la section Voir aussi

  • Modèles : les champs dimensions, custom_dimensions et context_length.
  • Confidentialité : ce que Moon Blur détecte et ne détecte pas.

Moon AI

Moon AI en action

0:00

À découvrir

Captures de chat.realmoon.ai du 29 octobre 2026, avec des données fictives.

Moon AI

Vos préférences

Aucun suivi publicitaire.

Ce site ne dépose aucun cookie publicitaire ni cookie de mesure d’audience : notre serveur compte les visites sans cookie. Votre thème et la fermeture de l’information sur les cookies sont mémorisés sur cet appareil.

L’application Moon AI possède ses propres réglages de confidentialité.