## Login Helper

Automate logging into a website using stored credentials. This creates a login workflow, executes it, and optionally waits for completion.

### Python Example
```python
from skyvern.schemas.run_blocks import CredentialType

result = await client.login(
    credential_type=CredentialType.skyvern,
    credential_id="cred_abc123",
    url="https://app.example.com/login",
    wait_for_completion=True,
)
print(result.status)
```

### TypeScript Example
```typescript
const result = await client.login({
    credentialType: CredentialType.skyvern,
    credentialId: "cred_abc123",
    url: "https://app.example.com/login",
    waitForCompletion: true,
});
console.log(result.status);
```

### Parameters
| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `credential_type` | `CredentialType` | Yes | - | How credentials are stored. Options: `skyvern`, `bitwarden`, `onepassword` (`"1password"` in TS), `azure_vault`. |
| `url` | `str` | No | `None` | The login page URL. |
| `credential_id` | `str` | No | `None` | The Skyvern credential ID (when using `skyvern` type). |
| `prompt` | `str` | No | `None` | Additional instructions for the AI during login. |
| `browser_session_id` | `str` | No | `None` | Run login inside an existing browser session. |
| `browser_address` | `str` | No | `None` | Connect to a browser at this CDP address. |
| `proxy_location` | `ProxyLocation` | No | `None` | Route browser traffic through a geographic proxy. |
| `webhook_url` | `str` | No | `None` | URL to receive a POST when the login finishes. |
| `totp_identifier` | `str` | No | `None` | Identifier for TOTP verification. |
| `totp_url` | `str` | No | `None` | URL to receive TOTP codes. |
| `wait_for_completion` (Python) / `waitForCompletion` (TS) | `bool` | No | `False` | Block until the login finishes. |
| `timeout` | `float` | No | `1800` | Max wait time in seconds. |
| `extra_http_headers` | `dict[str, str]` | No | `None` | Additional HTTP headers. |
| `max_screenshot_scrolling_times` | `int` | No | `None` | Number of screenshot scrolls. |
| `browser_profile_id` | `str` | No | `None` | Load a browser profile into the session. |
| `request_options` | `RequestOptions` | No | `None` | Per-request configuration (see below). |

### Returns WorkflowRunResponse

### Example: Login then extract data
#### Python
```python
from skyvern.schemas.run_blocks import CredentialType

session = await client.create_browser_session()

# Login
await client.login(
    credential_type=CredentialType.skyvern,
    credential_id="cred_abc123",
    url="https://app.example.com/login",
    browser_session_id=session.browser_session_id,
    wait_for_completion=True,
)

# Now extract data from the authenticated session
result = await client.run_task(
    prompt="Go to the billing page and extract all invoices",
    browser_session_id=session.browser_session_id,
    wait_for_completion=True,
)
print(result.output)
```

### Request Options
Override timeout, retries, or headers for this call by passing `request_options` (Python) or a second options argument (TypeScript).

#### Python
```python
from skyvern.client.core import RequestOptions

request_options=RequestOptions(
    timeout_in_seconds=120,
    max_retries=3,
    additional_headers={"x-custom-header": "value"},
)
```

| Option (Python) | Option (TypeScript) | Type | Description |
| --- | --- | --- | --- |
| `timeout_in_seconds` | `timeoutInSeconds` | `int` / `number` | HTTP timeout in seconds. |
| `max_retries` | `maxRetries` | `int` / `number` | Retry count. |
| `additional_headers` | `headers` | `dict` / `Record<string, string>` | Extra headers. |
| `additional_query_parameters` | - | `dict` | Extra query parameters. |
| `additional_body_parameters` | - | `dict` | Extra body parameters. |
| - | `abortSignal` | `AbortSignal` | Signal to cancel the request. |
| - | `apiKey` | `string` | Override API key.
