---
title: "listProviderLogins"
---

> Documentation Index
> Fetch the complete documentation index at: https://agenthold.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# listProviderLogins

Path: agenthold API › provider-logins

`GET /me/provider-logins`

URL: `/api/v1/me/provider-logins`

Harnesses whose login can live on your account, whether you connected
each, and which agents use your logins. Credentials are never returned.

## Authentication

Requires one of the following:

- `session`, apiKey, in cookie
- `token`, http bearer, header `Authorization`

## Code samples

### cURL

```bash
curl --request GET \
  --url '<base-url>/api/v1/me/provider-logins' \
  --cookie 'agenthold_session=<agenthold_session>'
```

### TypeScript

```typescript
const url = '<base-url>/api/v1/me/provider-logins';
const options = {
  method: 'GET',
  headers: {cookie: 'agenthold_session=<agenthold_session>'}
};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "<base-url>/api/v1/me/provider-logins"

headers = {"cookie": "agenthold_session=<agenthold_session>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

One entry per harness with account logins.

#### Example

```json
[
  {
    "provider": "string",
    "name": "string",
    "kinds": [
      {
        "id": "string",
        "name": "string",
        "description": "string",
        "command": "string",
        "inputLabel": "string",
        "multiline": true
      }
    ],
    "login": {
      "kind": "string",
      "label": "string",
      "status": "ok",
      "statusMessage": "string",
      "expiresAt": "2019-08-24T14:15:22Z",
      "connectedAt": "2019-08-24T14:15:22Z",
      "lastUsedAt": "2019-08-24T14:15:22Z"
    },
    "agents": [
      {
        "id": "string",
        "name": "string",
        "workspaceId": "string"
      }
    ]
  }
]
```

- `provider` (`listProviderLogins.response.200.provider`; string, required) — Harness id.
- `name` (`listProviderLogins.response.200.name`; string, required)
- `kinds` (`listProviderLogins.response.200.kinds`; array of object, required)
  - `id` (`listProviderLogins.response.200.kinds.id`; string, required)
  - `name` (`listProviderLogins.response.200.kinds.name`; string, required)
  - `description` (`listProviderLogins.response.200.kinds.description`; string, required)
  - `inputLabel` (`listProviderLogins.response.200.kinds.inputLabel`; string, required)
  - `multiline` (`listProviderLogins.response.200.kinds.multiline`; boolean, required)
  - `command` (`listProviderLogins.response.200.kinds.command`; string, optional) — What to run on your own computer to get the credential.
- `agents` (`listProviderLogins.response.200.agents`; array of object, required) — Agents with this harness that use your logins.
  - `id` (`listProviderLogins.response.200.agents.id`; string, required)
  - `name` (`listProviderLogins.response.200.agents.name`; string, required)
  - `workspaceId` (`listProviderLogins.response.200.agents.workspaceId`; string, required)
- `login` (`listProviderLogins.response.200.login`; object, optional)
  - `kind` (`listProviderLogins.response.200.login.kind`; string, required)
  - `label` (`listProviderLogins.response.200.login.label`; string, required) — Describes the login without revealing it.
  - `status` (`listProviderLogins.response.200.login.status`; string, required)
    - one of `"ok"`, `"error"`
  - `statusMessage` (`listProviderLogins.response.200.login.statusMessage`; string, required)
  - `connectedAt` (`listProviderLogins.response.200.login.connectedAt`; string, required)
    - format: `date-time`
  - `expiresAt` (`listProviderLogins.response.200.login.expiresAt`; string, optional)
    - format: `date-time`
  - `lastUsedAt` (`listProviderLogins.response.200.login.lastUsedAt`; string, optional)
    - format: `date-time`


Source: https://agenthold.dev/api/list-provider-logins/index.md
