# Create User

> Create a user sub-account under your builder and get their API key.

## Usage

```python
result = builder.create_user("0x1234567890abcdef1234567890abcdef12345678")

user_apikey = result["apikey"]              # SAVE THIS! Only returned once.
safe_address = result["multi_sig_wallet"]   # Gnosis Safe wallet (may be empty initially)
```

## Parameters

| Parameter        | Type | Required | Description                                             |
| ---------------- | ---- | -------- | ------------------------------------------------------- |
| `wallet_address` | str  | Yes      | User's login wallet address (EOA, must start with `0x`) |

## Response

```python
{
    "apikey": "usr_abc123...",              # User's API key (only returned once!)
    "wallet_address": "0xabcd...",          # User's EOA address (lowercased)
    "builder_name": "my_builder",           # Parent builder name
    "multi_sig_wallet": "0x5678...",        # Gnosis Safe address (empty if still creating)
    "wallet_creation_tx_hash": "0xef01...", # Safe creation TX hash
    "enable_trading": False,                # Whether trading is enabled
}
```

## Notes

* The API key is returned **only once** during creation. Store it securely in your database.
* Safe wallet creation is asynchronous (1-10 minutes). Poll `get_user()` until `multi_sig_wallet` is non-empty.
* If the user already exists, the API returns an error. Catch the exception and call `get_user()` instead.

```python
try:
    result = builder.create_user(address)
except ApiError as e:
    if "already exists" in str(e).lower():
        result = builder.get_user(address)
```
