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 with executeTool.

For raw tool schemas used by custom adapters, see Tool calling. For exception types, see Error handling.

classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncverifyConnectedAccountUser

Verify the connected account user after OAuth callback.

paramparamsobject

Required or common fields: authRequestId, identifier.

authRequestId, identifier
returnsVerifyConnectedAccountUserResponse

Post-verify redirect URL.

// authRequestId: from the user-verify redirect query string
// identifier: same user identifier used when starting connect
await scalekit.actions.verifyConnectedAccountUser({
authRequestId: 'opaque-auth-request-id',
identifier: 'user@example.com',
});
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asynclistConnectedAccounts

List connected accounts with optional filters.

paramparamsobject

Common fields: connectionName, identifier, provider, organizationId, userId, pageSize, pageToken, query. Pass connectionNames (string array) to filter to connected accounts belonging to any of the listed connections (exact match, max 20).

connectionName, identifier, provider, organizationId, userId, pageSize, pageToken, query, connectionNames
returnsListConnectedAccountsResponse

Paginated connected accounts.

// Optional filters: connectionName, identifier, provider, pageSize, pageToken
const response = await scalekit.actions.listConnectedAccounts({
connectionName: 'GMAIL',
identifier: 'user@example.com',
pageSize: 20,
});
// response.connectedAccounts, response.nextPageToken, response.totalSize
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncexecuteTool

Execute a tool on behalf of a connected account.

paramparamsobject

Required or common fields: toolName, toolInput, identifier, connectedAccountId, connector, organizationId, userId.

toolName, toolInput, identifier, connectedAccountId, connector, organizationId, userId
returnsExecuteToolResponse

Tool result and execution ID.

// actions.executeTool maps toolInput -> tools.executeTool params
const response = await scalekit.actions.executeTool({
toolName: 'gmail_fetch_mails',
toolInput: { max_results: 1 },
identifier: 'user@example.com',
connector: 'GMAIL',
});
// response.data, response.executionId
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asynclistConnections

List app-level connections with optional pagination and provider filtering.

paramparamsobject

Required or common fields: pageSize, pageToken, provider.

pageSize, pageToken, provider
returnsListAppConnectionsResult

Paginated results.

// App-level AgentKit connections (not SSO org connections)
const { connections, nextPageToken, totalSize } =
await scalekit.actions.listConnections({
pageSize: 30,
provider: 'GMAIL', // optional; case-sensitive provider key
});
for (const conn of connections) {
console.log(conn.id, conn.connectionName, conn.status, conn.enabled);
}
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncdeleteConnectedAccount

Delete a connected account.

paramparamsobject

Required or common fields: connectionName, identifier, connectedAccountId, organizationId, userId.

connectionName, identifier, connectedAccountId, organizationId, userId
returnsDeleteConnectedAccountResponse

Empty on success.

// Require connectedAccountId OR connectionName + identifier
await scalekit.actions.deleteConnectedAccount({
connectionName: 'GMAIL',
identifier: 'user@example.com',
});
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncgetConnectedAccount

Get connected account authorization details.

paramparamsobject

Required or common fields: connectionName, identifier, connectedAccountId, organizationId, userId.

connectionName, identifier, connectedAccountId, organizationId, userId
returnsGetConnectedAccountByIdentifierResponse

The response payload for this operation.

// Returns authorization details (sensitive). Prefer details-only APIs when available.
const response = await scalekit.actions.getConnectedAccount({
connectionName: 'GMAIL',
identifier: 'user@example.com',
});
// response.connectedAccount
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asynccreateConnectedAccount

Create a new connected account.

paramparamsobject

Required or common fields: connectionName, identifier, authorizationDetails, organizationId, userId, apiConfig.

connectionName, identifier, authorizationDetails, organizationId, userId, apiConfig
returnsCreateConnectedAccountResponse

The created resource.

// authorizationDetails required. Shape matches AuthorizationDetails (oauthToken | staticAuth).
// Tests build it with @bufbuild/protobuf create() + AuthorizationDetailsSchema / OauthTokenSchema
// from the generated connected_accounts protobuf module.
const response = await scalekit.actions.createConnectedAccount({
connectionName: 'GMAIL',
identifier: 'user@example.com',
authorizationDetails: {
details: {
case: 'oauthToken',
value: {
accessToken: process.env.PROVIDER_ACCESS_TOKEN!,
},
},
},
});
// response.connectedAccount
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncgetOrCreateConnectedAccount

Get an existing connected account or create a new one if it doesn’t exist.

paramparamsobject

Required or common fields: connectionName, identifier, authorizationDetails, organizationId, userId, apiConfig.

connectionName, identifier, authorizationDetails, organizationId, userId, apiConfig
returnsCreateConnectedAccountResponse

The response payload for this operation.

// Upsert: creates when missing; authorizationDetails optional
const response = await scalekit.actions.getOrCreateConnectedAccount({
connectionName: 'GMAIL',
identifier: 'user@example.com',
});
// response.connectedAccount
// Alias: scalekit.actions.upsertConnectedAccount(...)
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncupdateConnectedAccount

Update an existing connected account.

paramparamsobject

Required or common fields: connectionName, identifier, authorizationDetails, organizationId, userId, connectedAccountId, apiConfig.

connectionName, identifier, authorizationDetails, organizationId, userId, connectedAccountId, apiConfig
returnsUpdateConnectedAccountResponse

The updated resource.

// Require connectedAccountId OR connectionName + identifier
const response = await scalekit.actions.updateConnectedAccount({
connectionName: 'GMAIL',
identifier: 'user@example.com',
apiConfig: {
version: 'v1.0',
domain: 'gmail.com',
},
});
// response.connectedAccount
classActionsClienthttps://github.com/scalekit-inc/scalekit-sdk-node/blob/main/src/actions.ts
#asyncrequest

Make a proxied REST API call on behalf of a connected account.

paramparamsobject

timeoutMs: Per-call request timeout in ms.

connectionName, identifier, path, method, queryParams, body, formData, headers
returnsobject

AxiosResponse(any)

AxiosResponse(any)
// Proxied HTTP: {envUrl}/proxy{path} with connection_name + identifier headers
const response = await scalekit.actions.request({
connectionName: 'GMAIL',
identifier: 'user@example.com',
path: '/gmail/v1/users/me/profile',
method: 'GET',
});
// AxiosResponse: response.status, response.data