Skip to content

Bulk Profile Operations

Workflows for creating, configuring, and managing large numbers of browser profiles.

Bulk Creation Pipeline

Python Bulk Creation

python
import requests
import time

BASE_URL = "https://api.multilogin.com"
COOKIES_URL = "https://cookies.multilogin.com"

def bulk_create(token, folder_id, count, prefix="auto",
                browser_type="mimic", proxies=None):
    """Create multiple profiles with optional proxy rotation."""
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json"
    }
    created = []

    for i in range(count):
        proxy_config = {"type": "none"}
        if proxies:
            p = proxies[i % len(proxies)]
            proxy_config = {
                "type": p["type"],
                "host": p["host"],
                "port": p["port"],
                "username": p.get("username", ""),
                "password": p.get("password", "")
            }

        resp = requests.post(f"{BASE_URL}/profile/create",
            headers=headers,
            json={
                "name": f"{prefix}-{i+1:04d}",
                "browser_type": browser_type,
                "os_type": "windows",
                "folder_id": folder_id,
                "parameters": {
                    "fingerprint": {
                        "flags": {
                            "audio_masking": "mask",
                            "fonts_masking": "mask",
                            "media_devices_masking": "mask",
                            "graphics_masking": "mask",
                            "graphics_noise": "mask",
                            "webrtc_masking": "mask",
                            "geolocation_masking": "mask",
                            "timezone_masking": "mask",
                            "locale_masking": "mask"
                        }
                    },
                    "storage": {"is_local": False},
                    "proxy": proxy_config
                }
            })

        if resp.status_code == 200:
            pid = resp.json()["data"]["ids"][0]
            created.append(pid)
            print(f"[{i+1}/{count}] Created: {pid}")
        elif resp.status_code == 429:
            print("Rate limited. Waiting 5s...")
            time.sleep(5)
        else:
            print(f"[{i+1}/{count}] Failed: {resp.status_code}")

        # Small delay to avoid rate limits
        time.sleep(0.5)

    return created

Bulk Operations

Move All Profiles to Folder

bash
curl -X POST https://api.multilogin.com/profile/move \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile_ids": ["UUID1","UUID2","UUID3"], "folder_id": "TARGET_FOLDER"}'

Delete Multiple Profiles

bash
curl -X POST https://api.multilogin.com/profile/remove \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile_ids": ["UUID1","UUID2","UUID3"], "permanently": false}'

Clone Profile Multiple Times

bash
curl -X POST https://api.multilogin.com/profile/clone \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profile_id": "SOURCE_UUID", "count": 10}'

Batch Automation with Script Runner

Run the same script across multiple profiles simultaneously:

bash
curl -X POST https://launcher.mlx.yt:45001/api/v1/run_script \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "script_file": "warm_profile.py",
    "profile_ids": [
      {"profile_id": "UUID1", "is_headless": true},
      {"profile_id": "UUID2", "is_headless": true},
      {"profile_id": "UUID3", "is_headless": true}
    ]
  }'

Rate Limit Handling

Best Practices

  • Create profiles in batches of 10-20, not hundreds at once
  • Add 0.5-1s delays between API calls to avoid rate limits
  • Rotate proxies across profiles for geographic diversity
  • Apply cookies before first use for session warming
  • Use headless mode for bulk automation to save resources
  • Always handle 429 responses with exponential backoff