Listar los modelos y precios 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>"
}
]
}
]
}Referencia de la API
Listar los modelos y precios de Devin Desktop
Lista los modelos de Devin Desktop disponibles en tu cuenta, con sus UID de modelo, sus nombres y los precios por token o por mensaje que se le cobran a tu equipo.
GET
/
api
/
v2alpha
/
models
Listar los modelos y precios 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>"
}
]
}
]
}Descripción general
Este endpoint está en alfa (
v2alpha). La estructura de la respuesta puede cambiar.Autenticación
Authorization:
Authorization: Bearer <api-key>
cog_...). El rol del usuario de servicio debe incluir el permiso Use Devin Desktop y la cuenta debe tener habilitado el acceso a Devin Desktop.
solicitud
string
Déjalo sin definir para listar todos los modelos permitidos por tu plan y tu modelo de facturación, ignorando las restricciones a nivel de equipo.Establécelo en
allowlist para aplicar también la lista de modelos permitidos de tu equipo, los controles de la organización y las restricciones de grupo, de modo que la lista coincida con la que ven los usuarios en el selector de modelos de Devin Desktop.Ejemplo de solicitud
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"
Respuesta
object[]
Modelos disponibles para quien realiza la llamada. No se incluyen los modelos deshabilitados.
Mostrar propiedades
Mostrar propiedades
string
Identificador estable del modelo, p. ej.
claude-sonnet-4-5.string
Nombre que se muestra en el selector de modelos.
object[]
Precios que se cobran a quien realiza la llamada por este modelo. Vacío en el caso de los modelos sin cargo.
Mostrar propiedades
Mostrar propiedades
string
Aquello a lo que se aplica el precio, en snake_case:
input, output, cached_input, cache_read o cache_write para el precio por tokens; para precios en una unidad distinta de la moneda, la cantidad tarificada, p. ej. message para el precio por mensaje. Los modelos Fusion también listan los precios de su modelo secundario con el prefijo sidekick_, p. ej. sidekick_input o sidekick_message.string
La unidad en la que se expresa
value, en snake_case, p. ej. usd, acus o credits.number
El precio en
unit, por denominator.string
La cantidad a la que se aplica el precio, p. ej.
1M tokens o message.string
Nota opcional sobre el precio, p. ej.
Higher effort consumes more tokens.Ejemplo de respuesta
{
"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" }
]
}
]
}
Respuestas de error
{"error": "<message>"}.
| Estado | Causa |
|---|---|
400 | filter tiene un valor distinto de allowlist |
401 | Clave de API ausente o no válida |
403 | El usuario de la clave no tiene acceso a Devin Desktop |
429 | Se superó el límite de tasa; espera el tiempo indicado en el encabezado Retry-After antes de volver a intentarlo |

