SDK ReferenceTypeScript SDK

ConnectedAccounts

Markdown

Usage

Access this class through the composio.connectedAccounts property:

const composio = new Composio({ apiKey: 'your-api-key' });
const result = await composio.connectedAccounts.list();

Methods

delete()

Deletes a connected account.

This method permanently removes a connected account from the Composio platform. This action cannot be undone and will revoke any access tokens associated with the account.

async delete(nanoid: string): Promise<ConnectedAccountDeleteResponse>

Parameters

NameTypeDescription
nanoidstringThe unique identifier of the connected account to delete

Returns

Promise<ConnectedAccountDeleteResponse> — The deletion response

Example

// Delete a connected account
await composio.connectedAccounts.delete('conn_abc123');

disable()

Disable a connected account

async disable(nanoid: string): Promise<ConnectedAccountUpdateStatusResponse>

Parameters

NameTypeDescription
nanoidstringUnique identifier of the connected account

Returns

Promise<ConnectedAccountUpdateStatusResponse> — Updated connected account details

Example

// Disable a connected account
const disabledAccount = await composio.connectedAccounts.disable('conn_abc123');
console.log(disabledAccount.isDisabled); // true

// You can also use updateStatus with a reason
// const disabledAccount = await composio.connectedAccounts.updateStatus('conn_abc123', {
//   enabled: false,
//   reason: 'No longer needed'
// });

enable()

Enable a connected account

async enable(nanoid: string): Promise<ConnectedAccountUpdateStatusResponse>

Parameters

NameTypeDescription
nanoidstringUnique identifier of the connected account

Returns

Promise<ConnectedAccountUpdateStatusResponse> — Updated connected account details

Example

// Enable a previously disabled connected account
const enabledAccount = await composio.connectedAccounts.enable('conn_abc123');
console.log(enabledAccount.isDisabled); // false

get()

Retrieves a specific connected account by its ID.

This method fetches detailed information about a single connected account and transforms the response to the SDK's standardized format.

async get(nanoid: string): Promise<...>

Parameters

NameTypeDescription
nanoidstringThe unique identifier of the connected account

Returns

Promise<...> — The connected account details

Example

// Get a connected account by ID
const account = await composio.connectedAccounts.get('conn_abc123');
console.log(account.status); // e.g., 'ACTIVE'
console.log(account.toolkit.slug); // e.g., 'github'

initiate()

Compound function to create a new connected account. This function creates a new connected account and returns a connection request. Users can then wait for the connection to be established using the waitForConnection method.

async initiate(userId: string, authConfigId: string, options?: object): Promise<ConnectionRequest>

Parameters

NameTypeDescription
userIdstringUser ID of the connected account
authConfigIdstringAuth config ID of the connected account
options?objectOptions for creating a new connected account

Returns

Promise<ConnectionRequest> — Connection request object

Example

// For OAuth2 authentication
const connectionRequest = await composio.connectedAccounts.initiate(
  'user_123',
  'auth_config_123',
  {
    callbackUrl: 'https://your-app.com/callback',
    config: AuthScheme.OAuth2({
      access_token: 'your_access_token',
      token_type: 'Bearer'
    })
  }
);

// For API Key authentication
const connectionRequest = await composio.connectedAccounts.initiate(
  'user_123',
  'auth_config_123',
  {
    config: AuthScheme.ApiKey({
      api_key: 'your_api_key'
    })
  }
);

// For Basic authentication
const connectionRequest = await composio.connectedAccounts.initiate(
  'user_123',
  'auth_config_123',
  {
    config: AuthScheme.Basic({
      username: 'your_username',
      password: 'your_password'
    })
  }
);

async link(userId: string, authConfigId: string, options?: { callbackUrl?: string }): Promise<ConnectionRequest>

Parameters

NameTypeDescription
userIdstring{string} - The external user ID to create the connected account for.
authConfigIdstring{string} - The auth config ID to create the connected account for.
options?object{CreateConnectedAccountOptions} - Options for creating a new connected account.

Returns

Promise<ConnectionRequest> — Connection request object

Example

// create a connection request and redirect the user to the redirect url
const connectionRequest = await composio.connectedAccounts.link('user_123', 'auth_config_123');
const redirectUrl = connectionRequest.redirectUrl;
console.log(`Visit: ${redirectUrl} to authenticate your account`);

// Wait for the connection to be established
const connectedAccount = await connectionRequest.waitForConnection()
// create a connection request and redirect the user to the redirect url
const connectionRequest = await composio.connectedAccounts.link('user_123', 'auth_config_123', {
  callbackUrl: 'https://your-app.com/callback'
});
const redirectUrl = connectionRequest.redirectUrl;
console.log(`Visit: ${redirectUrl} to authenticate your account`);

// Wait for the connection to be established
const connectedAccount = await composio.connectedAccounts.waitForConnection(connectionRequest.id);

list()

Lists all connected accounts based on provided filter criteria.

This method retrieves connected accounts from the Composio API with optional filtering.

async list(query?: object): Promise<...>

Parameters

NameTypeDescription
query?objectOptional query parameters for filtering connected accounts

Returns

Promise<...> — A paginated list of connected accounts

Example

// List all connected accounts
const allAccounts = await composio.connectedAccounts.list();

// List accounts for a specific user
const userAccounts = await composio.connectedAccounts.list({
  userIds: ['user123']
});

// List accounts for a specific toolkit
const githubAccounts = await composio.connectedAccounts.list({
  toolkitSlugs: ['github']
});

refresh()

Refreshes a connected account's authentication credentials.

This method attempts to refresh OAuth tokens or other credentials associated with the connected account. This is useful when a token has expired or is about to expire.

async refresh(nanoid: string, options?: { redirectUrl?: string; validateCredentials?: boolean }): Promise<ConnectedAccountRefreshResponse>

Parameters

NameTypeDescription
nanoidstringThe unique identifier of the connected account to refresh
options?object

Returns

Promise<ConnectedAccountRefreshResponse> — The response containing the refreshed account details

Example

// Refresh a connected account's credentials
const refreshedAccount = await composio.connectedAccounts.refresh('conn_abc123');

updateStatus()

Update the status of a connected account

async updateStatus(nanoid: string, params: ConnectedAccountUpdateStatusParams): Promise<ConnectedAccountUpdateStatusResponse>

Parameters

NameTypeDescription
nanoidstringUnique identifier of the connected account
paramsConnectedAccountUpdateStatusParamsParameters for updating the status

Returns

Promise<ConnectedAccountUpdateStatusResponse> — Updated connected account details

Example

// Enable a connected account
const updatedAccount = await composio.connectedAccounts.updateStatus('conn_abc123', {
  enabled: true
});

// Disable a connected account with a reason
const disabledAccount = await composio.connectedAccounts.updateStatus('conn_abc123', {
  enabled: false,
  reason: 'Token expired'
});

waitForConnection()

Waits for a connection request to complete and become active.

This method continuously polls the Composio API to check the status of a connection until it either becomes active, enters a terminal error state, or times out.

async waitForConnection(connectedAccountId: string, timeout?: number): Promise<...>

Parameters

NameTypeDescription
connectedAccountIdstringThe ID of the connected account to wait for
timeout?numberMaximum time to wait in milliseconds (default: 60 seconds)

Returns

Promise<...> — The finalized connected account data

Example

// Wait for a connection to complete with default timeout
const connectedAccount = await composio.connectedAccounts.waitForConnection('conn_123abc');

// Wait with a custom timeout of 2 minutes
const connectedAccount = await composio.connectedAccounts.waitForConnection('conn_123abc', 120000);