Lister les modèles et les tarifs de Devin Desktop
curl --request GET \
--url https://server.codeium.com/api/v2alpha/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"models": [
{
"uid": "<string>",
"name": "<string>",
"pricing_dimensions": [
{
"label": "<string>",
"unit": "<string>",
"value": 123,
"denominator": "<string>",
"info": "<string>"
}
]
}
]
}Référence de l’API
Lister les modèles et les tarifs de Devin Desktop
Listez les modèles Devin Desktop disponibles pour votre compte, avec leurs UID de modèle, leurs noms et les tarifs par token ou par message facturés à votre équipe.
GET
/
api
/
v2alpha
/
models
Lister les modèles et les tarifs de Devin Desktop
curl --request GET \
--url https://server.codeium.com/api/v2alpha/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"models": [
{
"uid": "<string>",
"name": "<string>",
"pricing_dimensions": [
{
"label": "<string>",
"unit": "<string>",
"value": 123,
"denominator": "<string>",
"info": "<string>"
}
]
}
]
}Vue d’ensemble
Renvoie les modèles disponibles pour le compte appelant, avec les tarifs réellement facturés à ce compte. Utilisez-le comme source de vérité programmatique pour la tarification des modèles, plutôt que de recopier les tarifs affichés sur la page des modèles. Les tarifs dépendent du plan et du modèle de facturation de l’appelant : deux équipes peuvent donc obtenir des valeurs différentes pour un même modèle.Cet endpoint est en version alpha (
v2alpha). La structure de la réponse est susceptible d’évoluer.Authentification
Transmettez une clé d’API dans l’en-têteAuthorization :
Authorization: Bearer <api-key>
cog_...). Le rôle de l’utilisateur de service doit inclure l’autorisation Use Devin Desktop, et l’accès à Devin Desktop doit être activé pour le compte.
Requête
string
Laissez ce paramètre non défini pour lister tous les modèles autorisés par votre plan et votre modèle de facturation, sans tenir compte des restrictions au niveau de la Team.Définissez-le sur
allowlist pour appliquer également la liste d’autorisation de modèles de votre Team, les contrôles de l’organisation et les restrictions de groupe : la liste correspondra alors à ce que les utilisateurs voient dans le sélecteur de modèles de Devin Desktop.Exemple de requête
curl https://server.codeium.com/api/v2alpha/models \
-H "Authorization: Bearer $DEVIN_API_KEY"
curl "https://server.codeium.com/api/v2alpha/models?filter=allowlist" \
-H "Authorization: Bearer $DEVIN_API_KEY"
Réponse
object[]
Modèles disponibles pour l’appelant. Les modèles désactivés ne sont pas inclus.
Afficher propriétés
Afficher propriétés
string
Identifiant stable du modèle, par exemple
claude-sonnet-4-5.string
Nom affiché dans le sélecteur de modèles.
object[]
Tarifs facturés à l’appelant pour ce modèle. Vide pour les modèles sans frais.
Afficher propriétés
Afficher propriétés
string
Ce qui est facturé, en snake_case :
input, output, cached_input, cache_read ou cache_write pour la tarification par token ; pour les prix exprimés dans une unité non monétaire, la quantité facturée, par exemple message pour une tarification au message. Les modèles Fusion indiquent également les prix de leur sidekick avec le préfixe sidekick_, par exemple sidekick_input ou sidekick_message.string
L’unité dans laquelle
value est exprimée, en snake_case, par exemple usd, acus ou credits.number
Le prix en
unit, par denominator.string
La quantité à laquelle le prix s’applique, par exemple
1M tokens ou message.string
Note facultative sur le prix, par exemple
Higher effort consumes more tokens.Exemple de réponse
Les modèles et les tarifs ci-dessous servent uniquement à illustrer la structure de la réponse. Appelez l’endpoint pour obtenir vos tarifs réels.{
"models": [
{
"uid": "claude-sonnet-4-5",
"name": "Claude Sonnet 4.5",
"pricing_dimensions": [
{ "label": "input", "unit": "usd", "value": 3, "denominator": "1M tokens" },
{ "label": "cached_input", "unit": "usd", "value": 0.3, "denominator": "1M tokens" },
{ "label": "output", "unit": "usd", "value": 15, "denominator": "1M tokens" }
]
},
{
"uid": "example-model",
"name": "Example Model",
"pricing_dimensions": [
{ "label": "message", "unit": "acus", "value": 0.5, "denominator": "message" }
]
}
]
}
Réponses d’erreur
Les erreurs sont renvoyées sous la forme{"error": "<message>"}.
| Statut | Cause |
|---|---|
400 | filter a une valeur autre que allowlist |
401 | Clé d’API manquante ou invalide |
403 | L’utilisateur associé à la clé n’a pas accès à Devin Desktop |
429 | Limite de débit dépassée ; attendez la durée indiquée par l’en-tête Retry-After avant de réessayer |

