> ## Documentation Index
> Fetch the complete documentation index at: https://seam-feat-mintlify-migration-iteration.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Filtering Connected Accounts by Custom Metadata

> When listing connected accounts, you can filter by custom metadata.

When you use [List Connected Accounts](/api/connected_accounts/list), you can filter the list by one or more custom metadata pairs. Include the `custom_metadata_has` parameter with a JSON string that specifies the desired key:value pairs.

<Info>
  If the [Connect Webview](/core-concepts/connect-webviews/index) associated with a connected
  account contains custom metadata, Seam transfers this custom metadata to the
  connected account. However, you can also use the [Update Connected
  Account](/api/connected_accounts/update) method
  with the optional `custom_metadata` property to [change or add custom metadata
  for a connected account](./adding-custom-metadata-to-a-connected-account).
</Info>

<Tabs>
  <Tab title="JavaScript">
    **Request:**

    ```javascript theme={null}
    const connected_accounts = await seam.connectedAccounts.list({
      custom_metadata_has: {
        internal_account_id: 'user-1',
      },
    })

    console.log(connected_accounts)
    ```

    **Response:**

    ```json theme={null}
    [
      {
        connected_account_id: 'c993818b-bf3c-4836-bef4-9a76d89bf1d3',
        created_at: '2024-01-05T07:20:07.692Z',
        user_identifier: { username: 'jane' },
        account_type: 'visionline',
        account_type_display_name: 'Visionline',
        errors: [],
        warnings: [],
        custom_metadata: { internal_account_id: 'user-1' },
        automatically_manage_new_devices: true
      },
      ...
    ]
    ```
  </Tab>

  <Tab title="cURL">
    **Request:**

    ```bash theme={null}
    curl -X 'POST' \
      'https://connect.getseam.com/connected_accounts/list' \
      -H 'accept: application/json' \
      -H 'Authorization: Bearer ${API_KEY}' \
      -H 'Content-Type: application/json' \
      -d '{
      "custom_metadata_has": {
        "internal_account_id": "user-1"
      },
    }'
    ```

    **Response:**

    ```json theme={null}
    {
      "connected_accounts": [
        {
          "connected_account_id": "c993818b-bf3c-4836-bef4-9a76d89bf1d3",
          "created_at": "2024-01-05T07:20:07.692Z",
          "user_identifier": {
            "username": "jane"
          },
          "account_type": "visionline",
          "account_type_display_name": "Visionline",
          "errors": [],
          "warnings": [],
          "custom_metadata": {
            "internal_account_id": "user-1"
          },
          "automatically_manage_new_devices": true
        },
        ...
      ],
      "ok": true
    }
    ```
  </Tab>

  <Tab title="Python">
    **Request:**

    ```python theme={null}
    connected_accounts = seam.connected_accounts.list(
      custom_metadata_has = {
        "internal_account_id": "user-1"
      }
    )

    pprint(connected_accounts)
    ```

    **Response:**

    ```
    [ConnectedAccount(connected_account_id='c993818b-bf3c-4836-bef4-9a76d89bf1d3',
                      created_at='2024-01-05T07:20:07.692Z',
                      user_identifier={'username': 'jane'},
                      account_type='visionline',
                      errors=[],
                      custom_metadata={"internal_account_id": "user-1"}),
    ...]
    ```
  </Tab>

  <Tab title="Ruby">
    **Request:**

    ```ruby theme={null}
    connected_accounts = client.connected_accounts.list(
      custom_metadata_has: {
        "internal_account_id": "user-1"
      }
    )

    puts connected_accounts.inspect
    ```

    **Response:**

    ```
    [<Seam::ConnectedAccount:0x004d8
      connected_account_id="c993818b-bf3c-4836-bef4-9a76d89bf1d3"
      created_at=2024-01-05 07:20:07.692 UTC
      user_identifier={"username"=>"jane"}
      account_type="visionline"
      errors=[]
      warnings=[]
      custom_metadata={"internal_account_id"=>"user-1"}>, ...]
    ```
  </Tab>

  <Tab title="PHP">
    **Request:**

    ```php theme={null}
    $accounts = $seam->connected_accounts->list(
      custom_metadata_has: array('internal_account_id' => 'user-1')
    );

    echo json_encode($accounts);
    ```

    **Response:**

    ```json theme={null}
    [{"connected_account_id":"c993818b-bf3c-4836-bef4-9a76d89bf1d3","account_type":"visionline","user_identifier":{"username":"jane", "email":null,"phone":null},"errors":[],"warnings":[],"created_at":"2024-01-05T07:20:07.692Z","custom_metadata":{"internal_account_id":"user-1"},"automatically_manage_new_devices":true},...]
    ```
  </Tab>

  <Tab title="C#">
    **Request:**

    ```csharp theme={null}
    var customMetadata = new Dictionary<string, string>()
    {
      {"internal_account_id", "user-1"}
    };

    var connectedAccounts = seam.ConnectedAccounts.List(
      customMetadataHas: customMetadata
    );

    foreach (var connectedAccount in connectedAccounts)
    {
      Console.WriteLine(connectedAccount);
    }
    ```

    **Response:**

    ```json theme={null}
    {
      "connected_account_id": "c993818b-bf3c-4836-bef4-9a76d89bf1d3",
      "created_at": "2024-01-05T07:20:07.692Z",
      "user_identifier": {
        "username": "jane"
      },
      "account_type": "visionline",
      "account_type_display_name": "Visionline",
      "errors": [],
      "warnings": [],
      "custom_metadata": {
        "internal_account_id": "user-1"
      },
      "automatically_manage_new_devices": true
    }
    ...
    ```
  </Tab>
</Tabs>
