Comment utiliser les APIs DigitalOcean: Guide du développeur pour l'infrastructure cloud

Ashley Innocent

Ashley Innocent

24 March 2026

Comment utiliser les APIs DigitalOcean: Guide du développeur pour l'infrastructure cloud

Apidog pour les entreprises

Déploiement sur site

SSO & RBAC

Conforme SOC 2

Explorer Apidog Enterprise

TL;DR

Les API DigitalOcean gèrent les Droplets, les volumes, les pare-feu, les équilibreurs de charge, les clusters Kubernetes, et bien plus encore. Authentifiez-vous avec des jetons d'accès personnels, appelez `api.digitalocean.com/v2`, et gérez les limites de débit. Pour les tests, utilisez Apidog pour valider les configurations, tester le provisionnement de l'infrastructure et documenter vos flux de travail d'automatisation.

Introduction

DigitalOcean simplifie le cloud computing. Alors qu'AWS et GCP proposent des centaines de services, DigitalOcean se concentre sur l'essentiel : le calcul (droplets), le stockage (volumes), le réseau (adresses IP flottantes, pare-feu), Kubernetes managé et la plateforme d'applications. L'API reflète cette simplicité.

Les développeurs utilisent l'API de DigitalOcean pour :

💡
Si vous automatisez l'infrastructure, Apidog vous aide à tester les appels d'API, à enregistrer les configurations d'infrastructure en tant que modèles réutilisables et à collaborer avec votre équipe sur les flux de travail de provisionnement.
bouton

Authentification

Jetons d'accès personnels

  1. Allez dans le Tableau de bord DigitalOcean → API → Générer un nouveau jeton
  2. Nommez le jeton et définissez l'expiration
  3. Copiez et stockez en toute sécurité

Utilisation du jeton :

curl -X GET "https://api.digitalocean.com/v2/account" \
  -H "Authorization: Bearer YOUR_TOKEN"

Format de la réponse

{
  "account": {
    "droplet_limit": 25,
    "email": "you@example.com",
    "name": "Your Name",
    "uuid": "abc123xyz",
    "email_verified": true,
    "status": "active"
  }
}

Droplets (machines virtuelles)

Lister tous les Droplets

curl -X GET "https://api.digitalocean.com/v2/droplets" \
  -H "Authorization: Bearer YOUR_TOKEN"

Créer un Droplet

curl -X POST "https://api.digitalocean.com/v2/droplets" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-droplet",
    "region": "nyc1",
    "size": "s-2vcpu-4gb",
    "image": "ubuntu-20-04-x64",
    "ssh_keys": ["ssh-rsa AAAA..."],
    "backups": false,
    "ipv6": true,
    "tags": ["web", "production"]
  }'

Tailles populaires :

Régions :

Obtenir les détails du Droplet

curl -X GET "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Supprimer un Droplet

curl -X DELETE "https://api.digitalocean.com/v2/droplets/DROPLET_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Actions sur les Droplets

Redémarrage :

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "reboot"
  }'

Redimensionner :

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "resize",
    "size": "s-4vcpu-8gb"
  }'

Instantané :

curl -X POST "https://api.digitalocean.com/v2/droplets/DROPLET_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "snapshot",
    "name": "my-snapshot"
  }'

Volumes (stockage par blocs)

Créer un volume

curl -X POST "https://api.digitalocean.com/v2/volumes" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "size_gigabytes": 100,
    "name": "my-volume",
    "region": "nyc1",
    "description": "Data volume for web servers"
  }'

Attacher un volume à un Droplet

curl -X POST "https://api.digitalocean.com/v2/volumes/VOLUME_ID/actions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "attach",
    "droplet_id": DROPLET_ID
  }'

Lister les volumes

curl -X GET "https://api.digitalocean.com/v2/volumes" \
  -H "Authorization: Bearer YOUR_TOKEN"

Réseau

Lister les IPs flottantes

curl -X GET "https://api.digitalocean.com/v2/floating_ips" \
  -H "Authorization: Bearer YOUR_TOKEN"

Attribuer une IP flottante

curl -X POST "https://api.digitalocean.com/v2/floating_ips" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "droplet_id": DROPLET_ID,
    "region": "nyc1"
  }'

Créer un pare-feu

curl -X POST "https://api.digitalocean.com/v2/firewalls" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "web-firewall",
    "inbound_rules": [
      {
        "protocol": "tcp",
        "ports": "80",
        "sources": {
          "addresses": ["0.0.0.0/0"]
        }
      },
      {
        "protocol": "tcp",
        "ports": "443",
        "sources": {
          "addresses": ["0.0.0.0/0"]
        }
      },
      {
        "protocol": "tcp",
        "ports": "22",
        "sources": {
          "addresses": ["your-ip/32"]
        }
      }
    ],
    "outbound_rules": [
      {
        "protocol": "tcp",
        "ports": "80",
        "destinations": {
          "addresses": ["0.0.0.0/0"]
        }
      }
    ],
    "droplet_ids": [DROPLET_ID]
  }'

Équilibreurs de charge

Créer un équilibreur de charge

curl -X POST "https://api.digitalocean.com/v2/load_balancers" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-lb",
    "region": "nyc1",
    "algorithm": "round_robin",
    "health_check": {
      "protocol": "http",
      "port": 80,
      "path": "/",
      "check_interval_seconds": 10,
      "response_timeout_seconds": 5,
      "healthy_threshold": 3,
      "unhealthy_threshold": 3
    },
    "forwarding_rules": [
      {
        "entry_protocol": "http",
        "entry_port": 80,
        "target_protocol": "http",
        "target_port": 80
      },
      {
        "entry_protocol": "https",
        "entry_port": 443,
        "target_protocol": "https",
        "target_port": 443,
        "tls_passthrough": true
      }
    ],
    "droplet_ids": [DROPLET_ID_1, DROPLET_ID_2]
  }'

Clusters Kubernetes

Créer un cluster Kubernetes

curl -X POST "https://api.digitalocean.com/v2/kubernetes/clusters" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-cluster",
    "region": "nyc1",
    "version": "1.28",
    "node_pools": [
      {
        "name": "worker-pool",
        "size": "s-2vcpu-4gb",
        "count": 3,
        "auto_scale": true,
        "min_nodes": 2,
        "max_nodes": 6
      }
    ]
  }'

Lister les pools de nœuds

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools" \
  -H "Authorization: Bearer YOUR_TOKEN"

Mettre à l'échelle un pool de nœuds

curl -X PUT "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/node_pools/POOL_ID" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "count": 5
  }'

Supprimer le cluster

curl -X DELETE "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID" \
  -H "Authorization: Bearer YOUR_TOKEN"

Tests avec Apidog

Le provisionnement d'infrastructure est coûteux. Testez minutieusement avant de créer des ressources.

1. Configuration de l'environnement

DIGITALOCEAN_TOKEN: your_token
BASE_URL: https://api.digitalocean.com/v2
DEFAULT_REGION: nyc1
DEFAULT_SIZE: s-2vcpu-4gb

2. Valider les réponses

pm.test('Droplet created successfully', () => {
  const response = pm.response.json()
  pm.expect(response.droplet).to.have.property('id')
  pm.expect(response.droplet.status).to.eql('new')
})

pm.test('Token is valid', () => {
  const response = pm.response.json()
  pm.expect(response.account).to.exist
  pm.expect(response.account.status).to.eql('active')
})

3. Concepts de "dry run" (simulation)

DigitalOcean n'offre pas de véritables simulations, mais vous pouvez valider les entrées :

const validRegions = ['nyc1', 'sfo3', 'ams3', 'sgp1']
const validSizes = ['s-1vcpu-1gb', 's-2vcpu-2gb', 's-2vcpu-4gb']

pm.test('Region is valid', () => {
  const requestBody = JSON.parse(pm.request.body.raw)
  pm.expect(validRegions).to.include(requestBody.region)
})

pm.test('Size is valid', () => {
  const requestBody = JSON.parse(pm.request.body.raw)
  pm.expect(validSizes).to.include(requestBody.size)
})

Testez gratuitement les API d'infrastructure DigitalOcean avec Apidog

Erreurs courantes et correctifs

401 Non autorisé

Cause : Jeton invalide ou expiré.

Correctif : Régénérez votre jeton depuis le tableau de bord. Vérifiez le format de l'en-tête d'autorisation.

422 Entité non traitable

Cause : Paramètres invalides (mauvaise région, taille, image, etc.).

Correctif : Consultez la documentation de l'API DigitalOcean pour les valeurs valides. Problèmes courants :

429 Trop de requêtes

Cause : Limite de débit dépassée (par défaut 2000 requêtes/heure).

Correctif : Implémentez un mécanisme de "backoff" :

async function doRequest(url, options, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await fetch(url, options)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
      continue
    }
    return response
  }
  throw new Error('Rate limited')
}

Limite de Droplets atteinte

Cause : Le compte a trop de Droplets.

Correctif : Supprimez les Droplets inutilisés ou demandez une augmentation de la limite au support.

Alternatives et comparaisons

Fonctionnalité DigitalOcean AWS GCP
Tailles de Droplets Fixes Personnalisées Personnalisées
Kubernetes DOKS Géré EKS GKE
Stockage objet Spaces S3 Cloud Storage
Stockage par blocs Volumes EBS Persistent Disk
Équilibreurs de charge Intégrés ELB Cloud Load Balancing
Tier gratuit 200 $ de crédit Limité 300 $ de crédit
Simplicité de l'API ★★★★★ ★★☆☆☆ ★★★☆☆

DigitalOcean l'emporte sur la simplicité. L'API est directe, et la plupart des opérations fonctionnent sans avoir à gérer des dizaines de services imbriqués.

Cas d'utilisation réels

Environnements de développement. Une startup crée des environnements de développement isolés par branche. Chaque PR déclenche des appels d'API pour créer un Droplet avec le dernier code. Après la fusion, le Droplet est détruit. Les développeurs testent dans des environnements similaires à la production sans configuration manuelle.

Serveurs web à mise à l'échelle automatique. Une application web surveille la charge. Lorsque le CPU dépasse 70 %, l'API crée de nouveaux Droplets et les ajoute à l'équilibreur de charge. Lorsque la charge diminue, les Droplets sont détruits. Les coûts restent bas tandis que les performances restent élevées.

Clusters de bases de données. Un service de base de données géré provisionne des volumes primaires et de réplication à travers les régions. L'API gère automatiquement la configuration de la réplication, la planification des sauvegardes et la configuration du basculement.

Conclusion

Voici ce que vous avez appris :

bouton

FAQ

Combien coûte un Droplet ?Les prix commencent à 5 $/mois pour 1 vCPU/1 Go. Consultez la page des tarifs pour les prix actuels. La facturation horaire est disponible.

Puis-je utiliser des clés SSH avec les Droplets créés via l'API ?Oui. Incluez l'empreinte de la clé SSH dans le tableau `ssh_keys` lors de la création des Droplets.

Quelle est la différence entre les volumes et les Spaces ?Les volumes sont du stockage par blocs attaché aux Droplets. Les Spaces sont du stockage objet (comme S3). Utilisez les volumes pour les bases de données, les Spaces pour les fichiers.

Comment obtenir la configuration Kubernetes ?

curl -X GET "https://api.digitalocean.com/v2/kubernetes/clusters/CLUSTER_ID/kubeconfig" \
  -H "Authorization: Bearer YOUR_TOKEN"

Puis-je redimensionner un Droplet ?Oui, utilisez l'action de redimensionnement. Les réductions de taille nécessitent un arrêt. Les augmentations peuvent être effectuées pendant l'exécution.

Quelle est la différence entre les sauvegardes et les instantanés ?Les sauvegardes sont des copies automatiques hebdomadaires/quotidiennes gérées par DigitalOcean. Les instantanés sont des images manuelles à la demande que vous créez.

Combien de temps faut-il pour créer un Droplet ?Généralement 30 à 60 secondes. Certaines régions et tailles peuvent prendre plus de temps.

Puis-je utiliser Terraform avec DigitalOcean ?Oui. DigitalOcean dispose d'un fournisseur Terraform officiel. C'est excellent pour l'infrastructure en tant que code.

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API

Comment utiliser les APIs DigitalOcean: Guide du développeur pour l'infrastructure cloud