Modèles
La liste des modèles de GetVibe API et la manière d’adresser les modèles dans le champ model. Variantes de route via les suffixes :network, :nexus, :sub5 — route, prix et comportement de mise en cache différents.
Le champ model accepte le nom exact du modèle. La liste complète, avec les prix et la prise en charge du cache, se trouve sur la page du catalogue.
- Les ID utilisent
vendor/model(au format OpenRouter), par exempleanthropic/claude-opus-5;claude-opus-5est accepté comme alias d’entrée avec une facturation identique. model:aliasfixe un canal, par exempleopenai/gpt-5.6-sol:yellow.GET /v1/modelsrépertorie un ID par modèle ;?variants=1renvoie la liste complète.
Comment une requête est facturée
La plupart des canaux sont des carnets de marché : de nombreux vendeurs proposent le même modèle à des prix différents. Votre requête est exécutée auprès de l’offre la moins chère qui l’accepte, et vous êtes facturé du coût de cette exécution, majoré de notre commission. Le tarif par token est donc une plage, et non un nombre unique : il dépend du niveau du carnet qui a exécuté la requête.
GET /api/catalog et GET /v1/pricing publient cette plage pour chaque modèle (pricing) et pour chaque canal (channels[]), lue à partir de la même grille GET /api/model-ladder?model=<model> qui fournit ses nombres d’offres.
| Paramètre | Type | Description |
|---|---|---|
basis | "fill" | "fixed" | "mixed" | "fill" : facturé au palier qui remplit la demande, plus la commission. "fixed" : facturé au tarif indiqué (from = typical = to). "mixed" (niveau du modèle uniquement) : certains canaux de chaque type. |
priceFrom | {input, output} | Le niveau le moins cher, c’est-à-dire le tarif minimal auquel une requête peut être facturée. |
priceTypical | {input, output} | Le niveau médian pondéré par les offres : la moitié des offres du carnet d’ordres se situe à ce niveau ou en dessous. Il indique où se situe l’offre, et non une prévision de votre prochaine exécution. Au niveau du modèle, il s’agit de celui du canal par défaut. |
priceTo | {input, output} | Le niveau le plus cher du carnet d’ordres, c’est-à-dire le montant maximal auquel une requête sans max_price peut être facturée. |
pool | string | null | Canal uniquement. Le carnet auprès duquel le canal achète, tel que l’échelle tarifaire l’affiche. Chaque pool est publié comme un canal exactement. |
maxPriceCeiling | {input, output} | null | Canal uniquement. Lorsqu’une requête contient max_price, ce canal ne sera pas exécuté au-dessus de la valeur la plus basse entre max_price et ce plafond. Sans max_price, aucun plafond n’est envoyé. |
minChargePerRequest | number | USD par REQUEST, et non par 1M. Présent uniquement sur un canal dont le fournisseur facture un minimum par requête (règle du fournisseur) : au moins une requête réussie est facturée, par exemple $0.0000143. Une requête dont les tokens coûteraient moins cher, par exemple une requête courte ou composée principalement de lectures du cache, est facturée à ce montant. Au niveau du modèle (nullable), il s’agit de la valeur par défaut du canal. |
fill | {"24h", "7d"} | null | Canal uniquement (et sur chaque pool desservi par /api/model-ladder). Lorsque nos requêtes payantes sur ce canal ont effectivement été exécutées : pour chaque niveau, la part des requêtes et des tokens ; avgPrice, le prix moyen payé pondéré par les tokens, c’est-à-dire le prix typique que vous paierez réellement ; ainsi que les parts exécutées en dessous ou au-dessus de l’échelle tarifaire du jour (les carnets évoluent), ou facturées au minimum par requête. null pour une fenêtre comptant moins de 20 requêtes. |
ladder | string | Modèle uniquement. L’URL /api/model-ladder avec la liste complète des niveaux et le nombre d’offres. |
inputUsd / outputUsd | number | Conservés pour assurer la compatibilité. Sur un canal de remplissage, ils sont égaux à priceFrom : il s’agit du prix plancher, et non d’un prix fixe. |
"pricing": {
"basis": "fill",
"unit": "USD per 1M tokens",
"priceFrom": { "input": 0.465, "output": 2.325 },
"priceTypical": { "input": 0.5, "output": 2.5 },
"priceTo": { "input": 1.5, "output": 7.5 },
"minChargePerRequest": 0.0000125,
"ladder": "/api/model-ladder?model=claude-opus-5.5",
"ladderUpdatedAt": "2026-09-25T08:45:01.522Z",
"ladderStale": false
},
"channels": [
{ "address": "claude-opus-5.5:claude-code", "isDefault": true,
"inputUsd": 0.465, "outputUsd": 2.325,
"basis": "fill", "pool": "cc/claude-opus-5-5",
"priceFrom": { "input": 0.465, "output": 2.325 },
"priceTypical": { "input": 0.5, "output": 2.5 },
"priceTo": { "input": 1.5, "output": 7.5 },
"maxPriceCeiling": { "input": 0.6, "output": 3 },
"minChargePerRequest": 0.0000125 }
]claude-code : une requête est traitée sur le niveau qui l’accepte, entre priceFrom et priceTo. Pour plafonner le coût d’une requête, envoyez max_price : sans celui-ci, n’importe quel niveau de l’échelle peut être utilisé ; avec celui-ci, la requête ne sera jamais traitée au-dessus de votre plafond. Pour voir la profondeur associée à un prix, consultez l’échelle ; pour voir où les requêtes sont effectivement traitées, consultez son fill. Chaque requête dans /v1/generations contient cost_detail.realisedRate, le prix par 1M auquel elle a été facturée, afin que vous puissiez la positionner sur l’échelle. Chaque requête réussie coûte au moins le minChargePerRequest du canal ; ainsi, une requête très petite ou principalement mise en cache est facturée à ce minimum plutôt qu’à son montant par jeton.Variantes d’un modèle
La plupart des modèles proposent plusieurs variantes publiques. La variante par défaut est sélectionnée automatiquement (la priorité dépend des paramètres de votre compte ou de votre clé). Pour imposer une variante précise pour une requête, ajoutez son alias après deux-points au nom du modèle :
"model": "gpt-6.1-sol" // default variant (auto)
"model": "gpt-6.1-sol:yellow" // explicit public variant
"model": "claude-opus-5.5" // use an id from the catalogExemple de requête avec une variante explicite :
curl https://getvibeapi.com/v1/chat/completions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4.8:yellow",
"messages": [{"role": "user", "content": "Hello!"}]
}'
# :yellow — pin a public variant for this requestAlias de variantes
Utilisez uniquement les alias du catalogue. Suffixes disponibles :
| Paramètre | Type | Description |
|---|---|---|
:yellow | suffix | Variant public ; la disponibilité et le prix dépendent du modèle. |
:codex / :claude-code | suffix | Pools d’abonnements ; les modèles proposés par chacun figurent dans le catalogue. |
:pixel | suffix | Variant public pour les modèles multimédias. |
Lister les modèles via l’API
Vous pouvez récupérer par programmation la liste complète des identifiants de modèles disponibles :
curl https://getvibeapi.com/v1/models \
-H "Authorization: Bearer $GETVIBE_API_KEY"En plus de id/object/created/owned_by, chaque entrée contient type (chat, embedding, rerank, image, video, audio, music, 3d), architecture.input_modalities / output_modalities et endpoints — où envoyer une requête pour ce modèle.
- La liste par défaut contient uniquement des modèles de chat, d’embedding et de rerank, afin que le sélecteur de modèles d’un IDE ne propose jamais un modèle qui ne peut pas gérer de chat.
- Les modèles multimédias (image, vidéo, audio, musique, 3D) sont listés sur demande :
?type=image(ou une liste :?type=image,video),?output_modalities=image;?modality=et?category=sont des synonymes detype. - Tout en une fois :
?all=true,?type=allouGET /v1/models/all. Les médias sont répertoriés avec leurs variantes (model:alias) — exactement l’identifiant à envoyer. GET /v1/models/{id}renvoie un modèle ; un ID inconnu renvoie une 404 aveccode: "model_not_found".
curl "https://getvibeapi.com/v1/models?type=image,video" \
-H "Authorization: Bearer $GETVIBE_API_KEY"Abonnez-vous aux mises à jour du catalogue (RSS et JSON Feed)
Chaque modèle ajouté au catalogue et nos publications sur les nouveautés sont publiés dans un flux ouvert — aucune clé n’est nécessaire. Consultez-le depuis un lecteur RSS ou un agent, afin que celui-ci puisse adapter son approche à l’évolution des modèles. Le flux contient l’historique complet, page par page, et chaque événement fournit ce dont un agent a besoin pour appeler le modèle immédiatement.
/rss.xml(alias/feed.xml) est au format RSS 2.0 ;/feed.jsonest au format JSON Feed 1.1 avec un bloc_metaau niveau du flux et un bloc_catalogpar événement.- Pages : 50 événements chacune,
?limit=jusqu’à 100, du plus récent au plus ancien. La page suivante (plus ancienne) est indiquée parnext_urldans JSON Feed et par<atom:link rel="next">dans RSS (RFC 5005, avec égalementrel="first"etrel="previous"). Les liens contiennent un curseur : ainsi, la publication d’un modèle pendant votre parcours des pages ne décale jamais un événement que vous avez déjà lu. Utilisez les liens tels qu’ils sont renvoyés. - Filtres :
?kind=text|image|video|audio|music|3d|newset?since=YYYY-MM-DD— uniquement les événements à partir de ce jour UTC, inclus. Les filtres fonctionnent avec la pagination et sont conservés dans les liens. - Un événement
model_addedcontient le titre, la date d’apparition du modèle dans le catalogue, un lien vers la page du modèle, une description et, dans_catalog: les identifiants publics à envoyer commemodel(ni variantes de routes:alias, ni noms de fournisseurs), les points de terminaison, les modalités d’entrée et de sortie, la fenêtre de contexte et la taille maximale de sortie, les capacités (outils, JSON / sortie structurée, vision, raisonnement et ses niveaux, mise en cache), le prix public de départ en USD avec son unité, pour les médias chaque paramètre de requête avec ses valeurs autorisées, une requête prête à l’emploi (curlet JSON) et un lien vers la documentation. Un événementnewsest une publication présentant les nouveautés. - L’
guidd’un événement ne change jamais. Le flux ne contient aucun résultat de génération enregistré, uniquement un exemple de requête. - Interrogez le flux au maximum une fois toutes les quelques minutes : chaque page possède ses propres
ETagetLast-Modified; envoyezIf-None-Match/If-Modified-Sinceet une page inchangée répondra304sans corps. Pour ne récupérer que les nouveautés, mémorisez la date du dernier événement que vous avez traité et utilisez-la pour demander?since=.
curl -sS "https://getvibeapi.com/feed.json?since=2026-10-01&limit=100"
curl -sS -i https://getvibeapi.com/feed.json -H 'If-None-Match: "<ETag from the previous response>"' # -> 304