Skip to content
Scalekit Docs
Talk to an EngineerDashboard

Connected accounts

Connect accounts, start auth, and execute tools with scalekit.actions

scalekit.actions is the primary AgentKit client for connecting end-user accounts, starting OAuth, and executing tools on their behalf.

Common path: create or look up a connected account → get an authorization link → verify the user after redirect → run tools.

For raw tool schemas, see Tool calling. For exceptions, see Error handling.

classActionsClient
classActionsClient
#asyncverify_connected_account_user

Verifies the user after OAuth callback.

paramauth_request_idstr

Token from the redirect URL query params Required.

paramidentifierstr

Current user identifier Required.

returnsVerifyConnectedAccountUserResponse

Post-verify redirect URL.

response = scalekit_client.actions.verify_connected_account_user(
auth_request_id="opaque-auth-request-id",
identifier="user@example.com",
)
classActionsClient
#asyncget_or_create_connected_account

Fetches an existing connected account or creates one if none exists.

paramconnection_namestr

Connector slug Required.

paramidentifierstr

User\s identifier Required.

paramauthorization_detailsdict

OAuth token or static auth details

paramorganization_idstr

Organization tenant ID.

paramuser_idstr

Your app user ID.

paramapi_configdict

Connector-specific options (for example scopes or static.

returnsCreateConnectedAccountResponse

The connected account.id.

# authorization_details is optional
response = scalekit_client.actions.get_or_create_connected_account(
connection_name="GMAIL",
identifier="user@example.com",
)
# response.connected_account
# Alias: scalekit_client.actions.upsert_connected_account(...)
classActionsClient
#asyncget_connected_account

Fetches auth details for a connected account.

paramconnection_namestr

Connector slug.

paramidentifierstr

End-user or workspace identifier. Use with connection_name.

paramconnected_account_idstr

Connected account ID (ca_…) when resolving by ID instead.

returnsGetConnectedAccountAuthResponse

The connected account.id.

# Includes auth credentials (sensitive)
response = scalekit_client.actions.get_connected_account(
connection_name="GMAIL",
identifier="user@example.com",
)
# response.connected_account
classActionsClient
#asyncget_connected_account_details

Fetches connected account metadata without auth credentials.

paramconnection_namestr

Connector slug.

paramidentifierstr

End-user or workspace identifier. Use with connection_name.

paramconnected_account_idstr

Connected account ID (ca_…) when resolving by ID instead.

returnsGetConnectedAccountDetailsResponse

The connected account.id.

# Metadata only — no access/refresh tokens
details = scalekit_client.actions.get_connected_account_details(
connection_name="gmail",
identifier="user@example.com",
)
print(details.connected_account.status)
classActionsClient
#asynclist_connected_accounts

Runs list_connected_accounts and returns the result.

paramconnection_namestr

Filter by a single connector slug

paramidentifierstr

Filter by user identifier

paramproviderstr

Filter by provider

paramconnection_nameslist

Filter to connected accounts belonging to any of these connection names (exact match, max 20 names). Cannot be combined with connection_name.

returnsListConnectedAccountsResponse

Paginated connected accounts.

result = scalekit_client.actions.list_connected_accounts(
connection_names=["GMAIL", "slack"],
identifier="user@example.com",
)
# result.connected_accounts, result.total_count, result.next_page_token
classActionsClient
#asynccreate_connected_account

Creates a connected account with explicit auth details.

paramconnection_namestr

Connector slug.

paramidentifierstr

End-user identifier.

paramauthorization_detailsdict

Authorization details.

paramorganization_idstr

Organization tenant ID.

paramuser_idstr

Your app user ID.

paramapi_configdict

Connector-specific options (for example scopes or static.

returnsCreateConnectedAccountResponse

CreateConnectedAccountResponse.

response = scalekit_client.actions.create_connected_account(
connection_name="GMAIL",
identifier="user@example.com",
authorization_details={
"oauth_token": {
"access_token": "",
"refresh_token": "",
"scopes": [],
}
},
)
# response.connected_account
classActionsClient
#asyncupdate_connected_account

Requires connected_account_id or connection_name + identifier.

paramconnection_namestr

Connector slug.

paramidentifierstr

End-user or workspace identifier. Use with connection_name.

paramconnected_account_idstr

Connected account ID (ca_…) when updating by ID instead.

paramauthorization_detailsdict

Replace or merge stored credentials (OAuth tokens, API.

paramorganization_idstr

Organization tenant ID.

paramuser_idstr

Your app user ID.

paramapi_configdict

Connector-specific configuration to persist on the account

returnsUpdateConnectedAccountResponse

UpdateConnectedAccountResponse.

response = scalekit_client.actions.update_connected_account(
connection_name="GMAIL",
identifier="user@example.com",
authorization_details={
"oauth_token": {
"access_token": "ya29...",
"refresh_token": "...",
"scopes": ["email"],
}
},
)
# response.connected_account
classActionsClient
#asyncdelete_connected_account

Deletes a connected account and revokes its credentials.

paramconnection_namestr

Connector slug.

paramidentifierstr

End-user or workspace identifier. Use with connection_name.

paramconnected_account_idstr

Connected account ID (ca_…) when deleting by ID instead.

returnsDeleteConnectedAccountResponse

DeleteConnectedAccountResponse.

scalekit_client.actions.delete_connected_account(
connection_name="GMAIL",
identifier="user@example.com",
)
classActionsClient
#asyncexecute_tool

Executes a named tool via Scalekit.

paramtool_namestr

Tool name (e.g. gmail_fetch_emails) Required.

paramtool_inputdict

Parameters the tool expects Required.

paramidentifierstr

User\s identifier

paramconnected_account_idstr

Direct connected account ID

returnsExecuteToolResponse

Tool result and execution ID.

# ActionClient: tool_input first, then tool_name
result = scalekit_client.actions.execute_tool(
tool_input={"max_results": 1},
tool_name="gmail_fetch_mails",
identifier="user@example.com",
)
# result.data, result.execution_id
classActionsClient
#asyncrequest

Makes a REST API call on behalf of a connected account.

paramconnection_namestr

Connector slug Required.

paramidentifierstr

User\s identifier Required.

parampathstr

API path (e.g. /gmail/v1/users/me/messages) Required.

parammethodstr

HTTP method. Default: GET

paramquery_paramsdict

URL query parameters appended to path

parambodyany

JSON-serializable body for POST, PUT, PATCH, or similar.

paramform_datadict

Multipart form fields when the upstream API expects form.

paramheadersdict

Extra HTTP headers merged with Scalekit-injected auth.

returnsrequests.Response

See return type requests.Response.

# Proxied HTTP via {env_url}/proxy{path}
response = scalekit_client.actions.request(
connection_name="GMAIL",
identifier="user@example.com",
path="/gmail/v1/users/me/profile",
method="GET",
)
# requests.Response: response.status_code, response.json()