ComposioHQ/composio · error · ValidationError

Failed to parse connected account list query

Error message

Failed to parse connected account list query

What it means

ValidationError from ConnectedAccounts.list: the optional query object failed ConnectedAccountListParamsSchema before being converted to the raw API query (auth_config_ids, cursor, etc.). Only fires when query is provided and malformed.

Source

Thrown at ts/packages/core/src/models/ConnectedAccounts.ts:112

   *   userIds: ['user123']
   * });
   *
   * // List accounts for a specific toolkit
   * const githubAccounts = await composio.connectedAccounts.list({
   *   toolkitSlugs: ['github']
   * });
   * ```
   */
  async list(
    query?: ConnectedAccountListParams,
    requestOptions?: ComposioRequestOptions
  ): Promise<ConnectedAccountListResponse> {
    let rawQuery: ConnectedAccountListParamsRaw | undefined = undefined;

    if (query) {
      const parsedQuery = ConnectedAccountListParamsSchema.safeParse(query);
      if (!parsedQuery.success) {
        throw new ValidationError('Failed to parse connected account list query', {
          cause: parsedQuery.error,
        });
      }
      rawQuery = {
        auth_config_ids: parsedQuery.data.authConfigIds,
        cursor: parsedQuery.data.cursor?.toString(),
        limit: parsedQuery.data.limit,
        order_by: parsedQuery.data.orderBy,
        // Cast widens to match the Stainless-generated client params, which
        // lag behind the live API enum. Apollo accepts the union value at
        // runtime (`z.nativeEnum(ConnectionStatusEnum)` on the query param);
        // remove the cast once `@composio/client` is regenerated.
        statuses: parsedQuery.data.statuses as ConnectedAccountListParamsRaw['statuses'],
        toolkit_slugs: parsedQuery.data.toolkitSlugs,
        user_ids: parsedQuery.data.userIds,
        ...(parsedQuery.data.accountType !== undefined && {
          account_type: parsedQuery.data.accountType,
        }),

View on GitHub (pinned to 64b1b85502)

Solutions

  1. Read error.cause ZodError for the exact invalid fields
  2. Use SDK-level param names (camelCase like authConfigIds) with valid enum values
  3. Omit query to list everything, then filter
  4. Type the query as ConnectedAccountListParams

Example fix

// before
connectedAccounts.list({ status: 'Connected' });
// after
connectedAccounts.list({ status: validStatusFromSchema }); // use an enum value from ConnectedAccountListParamsSchema
Defensive patterns

Strategy: validation

Validate before calling

import { ConnectedAccountListParamsSchema } from '@composio/core';
if (query) { const c = ConnectedAccountListParamsSchema.safeParse(query); if (!c.success) console.error(c.error.issues); }

Type guard

const validListQuery = (q: unknown): boolean =>
  ConnectedAccountListParamsSchema.safeParse(q).success;

Try / catch

try { await connectedAccounts.list(query); } catch (e) { if (e instanceof ValidationError && e.message.includes('connected account list')) fixFromZodIssues(e.cause); }

Prevention

When it happens

Trigger: connectedAccounts.list({ status: 'Connected' }) with an invalid enum value; passing wrong key names (authConfigIds vs auth_config_ids confusion at the wrong layer); invalid cursor or date formats; wrong field types (string where ID array expected).

Common situations: Passing raw API parameter names to the SDK layer; stale enum values after API changes; unvalidated pagination cursors from other sources.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


AI-assisted analysis of ComposioHQ/composio@64b1b85502 (2026-08-28). Data as JSON: /api/errors/80c5207485b42f4e. Report an issue: GitHub.