cred_…); their secret values are never returned.
Every method here also accepts request_options (Python) or a final requestOptions argument (TypeScript) to override the timeout, retries or headers for one call; see request options.
create_credential
Creates a new credential for the current organizationawait skyvern.create_credential(
*,
name: str,
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
credential: CreateCredentialRequestCredential,
vault_type: CredentialVaultType | None = ...,
proxy_location: CreateCredentialRequestProxyLocation | None = ...,
proxy_session_id: str | None = ...,
rotate_proxy_session_id: bool | None = ...,
tested_url: str | None = ...,
) -> CredentialResponse
skyvern.createCredential(request: CreateCredentialRequest): Promise<CredentialResponse>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
name | name | str | Yes | — | Name of the credential |
credential_type | credential_type | SkyvernForgeSdkSchemasCredentialsCredentialType | Yes | — | Type of credential to create |
credential | credential | CreateCredentialRequestCredential | Yes | — | The credential data to store |
vault_type | vault_type | CredentialVaultType | None | No | — | Which vault to store this credential in. If omitted, uses the instance default. Use this to mix Skyvern-hosted and custom credentials within the same organization. |
proxy_location | proxy_location | CreateCredentialRequestProxyLocation | None | No | — | Optional proxy location for this credential’s pinned proxy identity. |
proxy_session_id | proxy_session_id | str | None | No | — | Optional advanced reuse key for this credential’s pinned proxy identity. |
rotate_proxy_session_id | rotate_proxy_session_id | bool | None | No | — | Rotate the Skyvern-managed proxy sticky-session id when updating this credential. |
tested_url | — | str | None | No | — | Login page URL used during the credential test |
CredentialResponse · TypeScript Promise<CredentialResponse>
CredentialResponse fields
CredentialResponse fields
| Field | Type | Description |
|---|---|---|
credential_id | str | Unique identifier for the credential |
credential | PasswordCredentialResponse | CreditCardCredentialResponse | SecretCredentialResponse | The credential data |
credential_type | "password" | "credit_card" | "secret" | Type of the credential |
name | str | Name of the credential |
vault_type | "skyvern" | "bitwarden" | "azure_vault" | "gcp" | "custom" | None | Which vault stores this credential (e.g., ‘skyvern’, ‘bitwarden’, ‘azure_vault’, ‘custom’) |
browser_profile_id | str | None | Browser profile ID linked to this credential |
tested_url | str | None | Login page URL used during the credential test |
user_context | str | None | User-provided context describing the login sequence (e.g., ‘click SSO button first’) |
save_browser_session_intent | bool | None | Whether the user intends to save a browser session, regardless of test outcome |
folder_id | str | None | ID of the credential folder this credential belongs to, if any |
proxy_location | "RESIDENTIAL" | "US-CA" | "US-NY" | "US-TX" | "US-FL" | "US-WA" | "RESIDENTIAL_ES" | "RESIDENTIAL_IE" | "RESIDENTIAL_GB" | "RESIDENTIAL_IN" | "RESIDENTIAL_JP" | "RESIDENTIAL_FR" | "RESIDENTIAL_DE" | "RESIDENTIAL_NZ" | "RESIDENTIAL_ZA" | "RESIDENTIAL_AR" | "RESIDENTIAL_AU" | "RESIDENTIAL_BR" | "RESIDENTIAL_TR" | "RESIDENTIAL_CA" | "RESIDENTIAL_MX" | "RESIDENTIAL_IT" | "RESIDENTIAL_NL" | "RESIDENTIAL_PH" | "RESIDENTIAL_KR" | "RESIDENTIAL_SA" | "RESIDENTIAL_ISP" | "NONE" | Any | GeoTarget | dict[str, Any | None] | None | Optional proxy location used for the credential’s pinned proxy identity. |
proxy_session_id | str | None | Opaque Skyvern-managed proxy sticky-session id. |
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
result = await skyvern.create_credential(
name="Example login",
credential_type="password",
credential={"username": "jane@example.com", "password": "correct-horse-battery-staple"},
)
print(result)
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.createCredential({
name: "Example login",
credential_type: "password",
credential: { username: "jane@example.com", password: "correct-horse-battery-staple" },
});
console.log(result);
get_credential
Retrieves a specific credential by its IDawait skyvern.get_credential(credential_id: str) -> CredentialResponse
skyvern.getCredential(credentialId: string): Promise<CredentialResponse>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
credential_id | credentialId | str | Yes | — | The unique identifier of the credential |
CredentialResponse · TypeScript Promise<CredentialResponse>
CredentialResponse fields
CredentialResponse fields
| Field | Type | Description |
|---|---|---|
credential_id | str | Unique identifier for the credential |
credential | PasswordCredentialResponse | CreditCardCredentialResponse | SecretCredentialResponse | The credential data |
credential_type | "password" | "credit_card" | "secret" | Type of the credential |
name | str | Name of the credential |
vault_type | "skyvern" | "bitwarden" | "azure_vault" | "gcp" | "custom" | None | Which vault stores this credential (e.g., ‘skyvern’, ‘bitwarden’, ‘azure_vault’, ‘custom’) |
browser_profile_id | str | None | Browser profile ID linked to this credential |
tested_url | str | None | Login page URL used during the credential test |
user_context | str | None | User-provided context describing the login sequence (e.g., ‘click SSO button first’) |
save_browser_session_intent | bool | None | Whether the user intends to save a browser session, regardless of test outcome |
folder_id | str | None | ID of the credential folder this credential belongs to, if any |
proxy_location | "RESIDENTIAL" | "US-CA" | "US-NY" | "US-TX" | "US-FL" | "US-WA" | "RESIDENTIAL_ES" | "RESIDENTIAL_IE" | "RESIDENTIAL_GB" | "RESIDENTIAL_IN" | "RESIDENTIAL_JP" | "RESIDENTIAL_FR" | "RESIDENTIAL_DE" | "RESIDENTIAL_NZ" | "RESIDENTIAL_ZA" | "RESIDENTIAL_AR" | "RESIDENTIAL_AU" | "RESIDENTIAL_BR" | "RESIDENTIAL_TR" | "RESIDENTIAL_CA" | "RESIDENTIAL_MX" | "RESIDENTIAL_IT" | "RESIDENTIAL_NL" | "RESIDENTIAL_PH" | "RESIDENTIAL_KR" | "RESIDENTIAL_SA" | "RESIDENTIAL_ISP" | "NONE" | Any | GeoTarget | dict[str, Any | None] | None | Optional proxy location used for the credential’s pinned proxy identity. |
proxy_session_id | str | None | Opaque Skyvern-managed proxy sticky-session id. |
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
result = await skyvern.get_credential(credential_id="cred_123")
print(result)
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.getCredential("cred_123");
console.log(result);
get_credentials
Retrieves a paginated list of credentials for the current organizationawait skyvern.get_credentials(
*,
page: int | None = None,
page_size: int | None = None,
vault_type: CredentialVaultType | None = None,
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType | None = None,
search: str | None = None,
) -> list[CredentialResponse]
skyvern.getCredentials(request?: GetCredentialsRequest): Promise<CredentialResponse[]>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
page | page | int | None | No | None | Page number for pagination |
page_size | page_size | int | None | No | None | Number of items per page |
vault_type | vault_type | CredentialVaultType | None | No | None | Filter credentials by vault type (e.g. ‘skyvern’, ‘custom’, ‘bitwarden’, ‘azure_vault’) |
credential_type | credential_type | SkyvernForgeSdkSchemasCredentialsCredentialType | None | No | None | Filter credentials by type (e.g. ‘password’, ‘credit_card’, ‘secret’) |
search | search | str | None | No | None | Case-insensitive search across credential name, username, secret label, and card details |
list[CredentialResponse] · TypeScript Promise<CredentialResponse[]>
CredentialResponse fields
CredentialResponse fields
| Field | Type | Description |
|---|---|---|
credential_id | str | Unique identifier for the credential |
credential | PasswordCredentialResponse | CreditCardCredentialResponse | SecretCredentialResponse | The credential data |
credential_type | "password" | "credit_card" | "secret" | Type of the credential |
name | str | Name of the credential |
vault_type | "skyvern" | "bitwarden" | "azure_vault" | "gcp" | "custom" | None | Which vault stores this credential (e.g., ‘skyvern’, ‘bitwarden’, ‘azure_vault’, ‘custom’) |
browser_profile_id | str | None | Browser profile ID linked to this credential |
tested_url | str | None | Login page URL used during the credential test |
user_context | str | None | User-provided context describing the login sequence (e.g., ‘click SSO button first’) |
save_browser_session_intent | bool | None | Whether the user intends to save a browser session, regardless of test outcome |
folder_id | str | None | ID of the credential folder this credential belongs to, if any |
proxy_location | "RESIDENTIAL" | "US-CA" | "US-NY" | "US-TX" | "US-FL" | "US-WA" | "RESIDENTIAL_ES" | "RESIDENTIAL_IE" | "RESIDENTIAL_GB" | "RESIDENTIAL_IN" | "RESIDENTIAL_JP" | "RESIDENTIAL_FR" | "RESIDENTIAL_DE" | "RESIDENTIAL_NZ" | "RESIDENTIAL_ZA" | "RESIDENTIAL_AR" | "RESIDENTIAL_AU" | "RESIDENTIAL_BR" | "RESIDENTIAL_TR" | "RESIDENTIAL_CA" | "RESIDENTIAL_MX" | "RESIDENTIAL_IT" | "RESIDENTIAL_NL" | "RESIDENTIAL_PH" | "RESIDENTIAL_KR" | "RESIDENTIAL_SA" | "RESIDENTIAL_ISP" | "NONE" | Any | GeoTarget | dict[str, Any | None] | None | Optional proxy location used for the credential’s pinned proxy identity. |
proxy_session_id | str | None | Opaque Skyvern-managed proxy sticky-session id. |
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
result = await skyvern.get_credentials()
print(result)
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.getCredentials();
console.log(result);
update_credential
Overwrites the stored credential data (e.g. username/password) while keeping the same credential_id.await skyvern.update_credential(
credential_id: str,
*,
name: str,
credential_type: SkyvernForgeSdkSchemasCredentialsCredentialType,
credential: CreateCredentialRequestCredential,
vault_type: CredentialVaultType | None = ...,
proxy_location: CreateCredentialRequestProxyLocation | None = ...,
proxy_session_id: str | None = ...,
rotate_proxy_session_id: bool | None = ...,
tested_url: str | None = ...,
) -> CredentialResponse
skyvern.updateCredential(credentialId: string, request: CreateCredentialRequest): Promise<CredentialResponse>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
credential_id | credentialId | str | Yes | — | The unique identifier of the credential to update |
name | name | str | Yes | — | Name of the credential |
credential_type | credential_type | SkyvernForgeSdkSchemasCredentialsCredentialType | Yes | — | Type of credential to create |
credential | credential | CreateCredentialRequestCredential | Yes | — | The credential data to store |
vault_type | vault_type | CredentialVaultType | None | No | — | Which vault to store this credential in. If omitted, uses the instance default. Use this to mix Skyvern-hosted and custom credentials within the same organization. |
proxy_location | proxy_location | CreateCredentialRequestProxyLocation | None | No | — | Optional proxy location for this credential’s pinned proxy identity. |
proxy_session_id | proxy_session_id | str | None | No | — | Optional advanced reuse key for this credential’s pinned proxy identity. |
rotate_proxy_session_id | rotate_proxy_session_id | bool | None | No | — | Rotate the Skyvern-managed proxy sticky-session id when updating this credential. |
tested_url | — | str | None | No | — | Login page URL used during the credential test |
CredentialResponse · TypeScript Promise<CredentialResponse>
CredentialResponse fields
CredentialResponse fields
| Field | Type | Description |
|---|---|---|
credential_id | str | Unique identifier for the credential |
credential | PasswordCredentialResponse | CreditCardCredentialResponse | SecretCredentialResponse | The credential data |
credential_type | "password" | "credit_card" | "secret" | Type of the credential |
name | str | Name of the credential |
vault_type | "skyvern" | "bitwarden" | "azure_vault" | "gcp" | "custom" | None | Which vault stores this credential (e.g., ‘skyvern’, ‘bitwarden’, ‘azure_vault’, ‘custom’) |
browser_profile_id | str | None | Browser profile ID linked to this credential |
tested_url | str | None | Login page URL used during the credential test |
user_context | str | None | User-provided context describing the login sequence (e.g., ‘click SSO button first’) |
save_browser_session_intent | bool | None | Whether the user intends to save a browser session, regardless of test outcome |
folder_id | str | None | ID of the credential folder this credential belongs to, if any |
proxy_location | "RESIDENTIAL" | "US-CA" | "US-NY" | "US-TX" | "US-FL" | "US-WA" | "RESIDENTIAL_ES" | "RESIDENTIAL_IE" | "RESIDENTIAL_GB" | "RESIDENTIAL_IN" | "RESIDENTIAL_JP" | "RESIDENTIAL_FR" | "RESIDENTIAL_DE" | "RESIDENTIAL_NZ" | "RESIDENTIAL_ZA" | "RESIDENTIAL_AR" | "RESIDENTIAL_AU" | "RESIDENTIAL_BR" | "RESIDENTIAL_TR" | "RESIDENTIAL_CA" | "RESIDENTIAL_MX" | "RESIDENTIAL_IT" | "RESIDENTIAL_NL" | "RESIDENTIAL_PH" | "RESIDENTIAL_KR" | "RESIDENTIAL_SA" | "RESIDENTIAL_ISP" | "NONE" | Any | GeoTarget | dict[str, Any | None] | None | Optional proxy location used for the credential’s pinned proxy identity. |
proxy_session_id | str | None | Opaque Skyvern-managed proxy sticky-session id. |
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
result = await skyvern.update_credential(
credential_id="cred_123",
name="Example login",
credential_type="password",
credential={"username": "jane@example.com", "password": "new-password"},
)
print(result)
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.updateCredential("cred_123", {
name: "Example login",
credential_type: "password",
credential: { username: "jane@example.com", password: "new-password" },
});
console.log(result);
delete_credential
Deletes a specific credential by its IDawait skyvern.delete_credential(credential_id: str) -> None
skyvern.deleteCredential(credentialId: string): Promise<void>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
credential_id | credentialId | str | Yes | — | The unique identifier of the credential to delete |
None · TypeScript Promise<void>
Example
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
await skyvern.delete_credential(credential_id="cred_123")
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
await skyvern.deleteCredential("cred_123");
send_totp_code
Forward a TOTP (2FA, MFA) email or sms message containing the code to Skyvern. This endpoint stores the code in database so that Skyvern can use it while running tasks/workflows.await skyvern.send_totp_code(
*,
totp_identifier: str,
content: str,
task_id: str | None = ...,
workflow_id: str | None = ...,
workflow_run_id: str | None = ...,
source: str | None = ...,
expired_at: datetime | None = ...,
type: OtpType | None = ...,
) -> TotpCode
skyvern.sendTotpCode(request: TotpCodeCreate): Promise<TotpCode>
| Parameter | TypeScript | Type | Required | Default | Description |
|---|---|---|---|---|---|
totp_identifier | totp_identifier | str | Yes | — | The identifier of the TOTP code. It can be the email address, phone number, or the identifier of the user. |
content | content | str | Yes | — | The content of the TOTP code. It can be the email content that contains the TOTP code, or the sms message that contains the TOTP code. Skyvern will automatically extract the TOTP code from the content. |
task_id | task_id | str | None | No | — | The task_id the totp code is for. It can be the task_id of the task that the TOTP code is for. |
workflow_id | workflow_id | str | None | No | — | The workflow ID the TOTP code is for. It can be the workflow ID of the workflow that the TOTP code is for. |
workflow_run_id | workflow_run_id | str | None | No | — | The workflow run id that the TOTP code is for. It can be the workflow run id of the workflow run that the TOTP code is for. |
source | source | str | None | No | — | An optional field. The source of the TOTP code. e.g. email, sms, etc. |
expired_at | expired_at | datetime | None | No | — | The timestamp when the TOTP code expires |
type | type | OtpType | None | No | — | Deprecated compatibility field. Skyvern auto-detects the OTP type from content, so this value does not constrain extraction. |
TotpCode · TypeScript Promise<TotpCode>
TotpCode fields
TotpCode fields
| Field | Type | Description |
|---|---|---|
totp_identifier | str | The identifier of the TOTP code. It can be the email address, phone number, or the identifier of the user. |
task_id | str | None | The task_id the totp code is for. It can be the task_id of the task that the TOTP code is for. |
workflow_id | str | None | The workflow ID the TOTP code is for. It can be the workflow ID of the workflow that the TOTP code is for. |
workflow_run_id | str | None | The workflow run id that the TOTP code is for. It can be the workflow run id of the workflow run that the TOTP code is for. |
source | str | None | An optional field. The source of the TOTP code. e.g. email, sms, etc. |
content | str | The content of the TOTP code. It can be the email content that contains the TOTP code, or the sms message that contains the TOTP code. Skyvern will automatically extract the TOTP code from the content. |
expired_at | datetime | None | The timestamp when the TOTP code expires |
type | "totp" | "magic_link" | None | Deprecated compatibility field. Skyvern auto-detects the OTP type from content, so this value does not constrain extraction. |
totp_code_id | str | The skyvern ID of the TOTP code. |
code | str | The TOTP code extracted from the content. |
organization_id | str | The ID of the organization that the TOTP code is for. |
created_at | datetime | The timestamp when the TOTP code was created. |
modified_at | datetime | The timestamp when the TOTP code was modified. |
otp_type | "totp" | "magic_link" | None | The type of the OTP code. |
import asyncio
from skyvern import Skyvern
async def main() -> None:
skyvern = Skyvern(api_key="YOUR_API_KEY")
result = await skyvern.send_totp_code(totp_identifier="user@example.com", content="123456")
print(result)
asyncio.run(main())
import { Skyvern } from "@skyvern/client";
const skyvern = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await skyvern.sendTotpCode({ totp_identifier: "user@example.com", content: "123456" });
console.log(result);

