Passer au contenu principal
Ce guide explique comment créer automatiquement plusieurs comptes à l’aide de l’Automation API tout en respectant les limites de débit de l’API. Il utilise l’endpoint /accounts.

Prérequis

Avant d’utiliser l’Automation API, assurez-vous d’avoir un access token. Pour obtenir un token, consultez le guide d’authentification. Incluez le token dans l’en-tête Authorization de votre requête :
Authorization: Bearer YOUR_ACCESS_TOKEN

Gérer les limites de débit

L’Automation API applique deux fenêtres de limitation de débit pour contrôler le trafic des requêtes :
Fenêtre de tempsNombre maximum de requêtes
10 secondes50 requêtes
1 heure1 000 requêtes
Si vous envoyez les requêtes trop rapidement lors de la création de nombreux comptes, l’API renvoie une réponse HTTP 429 (Too Many Requests). Pour éviter ces limites, traitez vos requêtes par lots contrôlés :
  • Envoyez un maximum de 50 requêtes toutes les 10 secondes.
  • Envoyez un maximum de 1 000 requêtes par heure.
Par exemple, pour créer 230 comptes, divisez vos requêtes comme suit :
LotRequêtesTemps d’attente
150Attendre 10 s
250Attendre 10 s
350Attendre 10 s
450Attendre 10 s
530Terminé

Formater les données d’entrée

Définissez vos comptes dans un fichier JSON. Chaque objet du tableau représente le corps de requête pour un seul compte.
[
  {
    "firstName": "Elton",
    "lastName": "John",
    "email": "elton@john.com",
    "preferredLocale": "en",
    "password": "pwd",
    "passwordConfirm": "pwd",
    "status": "ACTIVATED",
    "roles": [
      {
        "name": "ROLE_CUSTOMER_ADMIN",
        "sites": [],
        "customers": [99999],
        "privileges": []
      }
    ],
    "isProductRecoAllowed": true,
    "solutions": ["WEB_EXPERIMENTATION", "FEATURE_EXPERIMENTATION"]
  },
  {
    "firstName": "Poussiere",
    "lastName": "Etoile",
    "email": "poussiere@etoile.com",
    "password": "pwd",
    "passwordConfirm": "pwd",
    "preferredLocale": "en",
    "status": "ACTIVATED",
    "roles": [
      {
        "name": "ROLE_CUSTOMER_ADMIN",
        "sites": [],
        "customers": [99999],
        "privileges": []
      }
    ],
    "isProductRecoAllowed": false,
    "solutions": ["WEB_EXPERIMENTATION", "FEATURE_EXPERIMENTATION"]
  }
]

Créer des comptes avec Python

Le script Python suivant lit les comptes depuis votre fichier JSON, envoie les requêtes séquentiellement et gère automatiquement les limites de débit :
import json
import time
import requests

API_URL = "https://api.kameleoon.com/accounts"
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"

INPUT_FILE = "accounts.json"

MAX_PER_10_SECONDS = 50
MAX_PER_HOUR = 1000

TEN_SECONDS = 10
ONE_HOUR = 3600


def load_accounts(file_path):
    with open(file_path, "r") as f:
        return json.load(f)


def create_account(session, payload):
    headers = {
        "Authorization": f"Bearer {ACCESS_TOKEN}",
        "Content-Type": "application/json",
    }

    response = session.post(API_URL, json=payload, headers=headers)

    if response.status_code == 429:
        print("Rate limit reached. Waiting 10 seconds...")
        time.sleep(10)
        response = session.post(API_URL, json=payload, headers=headers)
        

    if response.status_code in (200, 201):
        return True, response.json()

    return False, response.text


def process_accounts(accounts):

    session = requests.Session()

    start_hour = time.time()
    hour_count = 0

    for i in range(0, len(accounts), MAX_PER_10_SECONDS):

        batch = accounts[i:i + MAX_PER_10_SECONDS]

        if hour_count + len(batch) > MAX_PER_HOUR:

            elapsed = time.time() - start_hour
            sleep_time = max(0, ONE_HOUR - elapsed)

            print(f"Hourly limit reached. Sleeping {sleep_time:.2f} seconds")
            time.sleep(sleep_time)

            start_hour = time.time()
            hour_count = 0

        batch_start = time.time()

        for account in batch:

            success, result = create_account(session, account)

            if success:
                print("Account created:", result)
            else:
                print("Request failed:", result)

            hour_count += 1

        elapsed = time.time() - batch_start

        if elapsed < TEN_SECONDS:
            sleep_time = TEN_SECONDS - elapsed
            print(f"Waiting {sleep_time:.2f} seconds before next batch")
            time.sleep(sleep_time)


def main():

    accounts = load_accounts(INPUT_FILE)

    print(f"Loaded {len(accounts)} accounts")

    process_accounts(accounts)


if __name__ == "__main__":
    main()

Le script fourni crée en toute sécurité un grand nombre de comptes tout en respectant les limites de débit de l’Automation API. Il effectue les actions suivantes :
  • Lit les comptes depuis un fichier JSON.
  • Envoie les requêtes séquentiellement.
  • Traite les comptes par lots de 50.
  • Attend entre les lots pour respecter la limite de 10 secondes.
  • Fait une pause si le processus atteint la limite horaire de 1 000 requêtes.
Cette approche évite les erreurs de limitation de débit et garantit une création de comptes fiable lors de migrations importantes ou d’opérations d’onboarding en masse.