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

Required or common fields: connectionName, identifier, provider, organizationId, userId, pageSize, pageToken, query.

connectionName, identifier, provider, organizationId, userId, pageSize, pageToken, query
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