> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mettre à jour la liste de modèles autorisés de Devin Desktop

> Remplacez par programmation la liste de modèles autorisés de Devin Desktop pour votre équipe : définissez les UID de modèles et les balises autorisés, avec une vérification ETag par rapport à l’état actuel.

## Vue d’ensemble

Remplace la liste de modèles autorisés de votre équipe, c’est-à-dire le paramètre que les administrateurs gèrent dans les contrôles de l’organisation de Devin Desktop. Le corps de la requête décrit l’état complet souhaité : les deux listes remplacent celles qui sont enregistrées.

Pour éviter d’écraser une modification dont vous n’avez pas connaissance, la requête doit transmettre dans l’en-tête `If-Match` l’`ETag` d’une réponse [List Models](/fr/desktop/accounts/api-reference/list-models). Si la liste de modèles autorisés, les modèles disponibles ou leurs tarifs ont changé depuis cette réponse, la mise à jour est rejetée avec le code `412` : listez alors à nouveau les modèles.

> [!NOTE]
>
> Cet endpoint est en version alpha (`v2alpha`). La structure de la requête et de la réponse est susceptible d’évoluer.

## Authentification

Transmettez une clé d’API dans l’en-tête `Authorization` :

```
Authorization: Bearer <api-key>
```

Utilisez une [API key d’utilisateur de service](/fr/api-reference/authentication) Devin (`cog_...`). En plus de l’autorisation **Use Devin Desktop** requise par [List Models](/fr/desktop/accounts/api-reference/list-models), le rôle de l’utilisateur de service doit disposer de l’autorisation **Windsurf admin** (`account.windsurf.admin`), incluse dans le rôle intégré Account Admin. Sans cette autorisation, un utilisateur de service peut lister les modèles, mais reçoit une erreur `403` sur cet endpoint.

## Requête

**If-Match** `string` *required*

L'en-tête `ETag` d'une réponse `GET /api/v2alpha/models` reflétant l'état actuel. Obligatoire ; `*` n'est pas accepté.

**allowed\_model\_uids** `string[]` *required*

UID des modèles que les utilisateurs peuvent sélectionner, p. ex. `["claude-sonnet-4-5"]`. Passez `[]` pour autoriser les modèles uniquement par balise.

**allowed\_model\_tags** `string[]` *required*

Balises des modèles que les utilisateurs peuvent sélectionner, y compris les balises de fournisseur comme `provider-anthropic` ou `provider-openai`. Passez `[]` pour n'autoriser que les UID de modèles indiqués.

Les deux champs sont obligatoires. Les champs inconnus sont rejetés.

### Exemple de requête

```bash theme={null}
ETAG=$(curl -s -D - -o /dev/null https://server.codeium.com/api/v2alpha/models \
  -H "Authorization: Bearer $DEVIN_API_KEY" | awk 'tolower($1)=="etag:" {print $2}' | tr -d '\r')

curl -X PUT https://server.codeium.com/api/v2alpha/models \
  -H "Authorization: Bearer $DEVIN_API_KEY" \
  -H "If-Match: $ETAG" \
  -H "Content-Type: application/json" \
  -d '{"allowed_model_uids": ["claude-sonnet-4-5"], "allowed_model_tags": ["provider-anthropic"]}'
```

## Réponse

En cas de succès, la réponse est identique à celle de [List Models](/fr/desktop/accounts/api-reference/list-models), avec la nouvelle liste d’autorisation appliquée : chaque modèle accompagné de son indicateur `allowed`, les valeurs enregistrées de `allowed_model_uids` et `allowed_model_tags`, ainsi qu’un nouvel en-tête `ETag`.

## Réponses d’erreur

Les erreurs sont renvoyées sous la forme `{"error": "<message>"}`.

| Statut | Cause |
| - | - |
| `400` | Le corps n’est pas au format JSON, contient des champs inconnus ou ne comporte pas `allowed_model_uids` ou `allowed_model_tags` ; ou bien le paramètre de requête `filter` est défini (il n’est accepté que par [List Models](/fr/desktop/accounts/api-reference/list-models)) |
| `401` | Clé d’API manquante ou invalide, ou clé d’API de l’Ancien Windsurf (seules les API key d’utilisateur de service Devin `cog_...` sont acceptées) |
| `403` | L’utilisateur associé à la clé n’a pas accès à Devin Desktop, ou son rôle ne dispose pas de l’autorisation Windsurf admin (`account.windsurf.admin`) |
| `412` | `If-Match` ne correspond pas à l’`ETag` actuel ; récupérez à nouveau la liste des modèles, puis réessayez |
| `428` | En-tête `If-Match` manquant |
| `429` | Limite de débit dépassée ; attendez le délai indiqué par l’en-tête `Retry-After` avant de réessayer |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.