Skip to main content
These methods wrap common multi-step patterns into single API calls. Under the hood, they create and run specialized workflows.

login

Automate logging into a website using stored credentials. This creates a login workflow, executes it, and optionally waits for completion.
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)

Parameters

ParameterTypeRequiredDefaultDescription
credential_typeCredentialTypeYesHow credentials are stored. Options: skyvern, bitwarden, onepassword, azure_vault.
urlstrNoNoneThe login page URL.
credential_idstrNoNoneThe Skyvern credential ID (when using CredentialType.skyvern).
promptstrNoNoneAdditional instructions for the AI during login.
browser_session_idstrNoNoneRun login inside an existing browser session.
browser_addressstrNoNoneConnect to a browser at this CDP address.
proxy_locationProxyLocationNoNoneRoute browser traffic through a geographic proxy.
webhook_urlstrNoNoneURL to receive a POST when the login finishes.
totp_identifierstrNoNoneIdentifier for TOTP verification.
totp_urlstrNoNoneURL to receive TOTP codes.
wait_for_completionboolNoFalseBlock until the login finishes.
timeoutfloatNo1800Max wait time in seconds.
extra_http_headersdict[str, str]NoNoneAdditional HTTP headers.
max_screenshot_scrolling_timesintNoNoneNumber of screenshot scrolls.
Bitwarden-specific parameters:
ParameterTypeDescription
bitwarden_collection_idstrBitwarden collection ID.
bitwarden_item_idstrBitwarden item ID.
1Password-specific parameters:
ParameterTypeDescription
onepassword_vault_idstr1Password vault ID.
onepassword_item_idstr1Password item ID.
Azure Key Vault-specific parameters:
ParameterTypeDescription
azure_vault_namestrAzure Key Vault name.
azure_vault_username_keystrSecret name for the username.
azure_vault_password_keystrSecret name for the password.
azure_vault_totp_secret_keystrSecret name for the TOTP secret.

Returns WorkflowRunResponse

Example: Login then extract data

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)

download_files

Navigate to a page and download files. Unlike run_task and run_workflow, this method does not support wait_for_completion — it returns immediately with a run_id. Poll with get_run() or use a webhook to know when the download finishes.
result = await client.download_files(
    navigation_goal="Download the latest monthly report PDF",
    url="https://app.example.com/reports",
)

# Poll for completion
import asyncio
while True:
    run = await client.get_run(result.run_id)
    if run.status in ("completed", "failed", "terminated", "timed_out", "canceled"):
        break
    await asyncio.sleep(5)

for f in run.downloaded_files:
    print(f.name)

Parameters

ParameterTypeRequiredDefaultDescription
navigation_goalstrYesNatural language description of what to download.
urlstrNoNoneStarting page URL.
browser_session_idstrNoNoneRun inside an existing browser session.
browser_profile_idstrNoNoneLoad a browser profile.
proxy_locationProxyLocationNoNoneRoute through a geographic proxy.
webhook_urlstrNoNoneURL to receive a POST when the download finishes.
download_suffixstrNoNoneExpected file extension to wait for (e.g., ".pdf").
download_timeoutfloatNoNoneMax time to wait for the download in seconds.
max_steps_per_runintNoNoneCap AI steps.
extra_http_headersdict[str, str]NoNoneAdditional HTTP headers.

Returns WorkflowRunResponse

The downloaded_files field contains the list of files that were downloaded.

upload_file

Upload a file to Skyvern’s storage. Returns a presigned URL and S3 URI you can reference in tasks and workflows.
with open("data.csv", "rb") as f:
    upload = await client.upload_file(file=f)
    print(upload.s3uri)          # s3://skyvern-uploads/...
    print(upload.presigned_url)  # https://...signed download URL

Parameters

ParameterTypeRequiredDescription
fileFileYesThe file to upload. Accepts file objects, byte streams, or paths.
file_storage_typeFileStorageTypeNoStorage backend type.

Returns UploadFileResponse