# List profiles

> Every profile in your organization, the default profile first.

Canonical: <https://www.tryadeli.com/docs/api/profiles/list-profiles>

`GET https://app.tryadeli.com/api/v1/profiles`

Authorization: `Bearer <API key>` — see [Authentication](https://www.tryadeli.com/docs/authentication)

Returns every profile in your organization, the default profile first. Call it
to find the `profileId` for a customer, or match on the `externalId` you set.

This endpoint, [Create profile](https://www.tryadeli.com/docs/api/profiles/create-profile), and
`GET /api/v1/usage/x` are the only ones that act on the whole organization and
take no profile.

**Errors** — `401 unauthorized`, `502 database_error`.

## Request examples

**cURL**

```bash
curl --fail-with-body "https://app.tryadeli.com/api/v1/profiles" \
  -H "Authorization: Bearer $ADELI_API_KEY"
```

**JavaScript**

```javascript
const response = await fetch("https://app.tryadeli.com/api/v1/profiles", {
  headers: {
    Authorization: `Bearer ${process.env.ADELI_API_KEY}`,
  },
});
console.log(await response.json());
```

**Python**

```python
import os

import requests

response = requests.get(
    "https://app.tryadeli.com/api/v1/profiles",
    headers={"Authorization": f"Bearer {os.environ['ADELI_API_KEY']}"},
)
print(response.json())
```

## Responses

### 200

```json
{
  "profiles": [
    {
      "id": "00000000-0000-4000-8000-000000000001",
      "name": "Acme Agency",
      "externalId": null,
      "metadata": {},
      "isDefault": true,
      "createdAt": "2026-09-08T20:00:00.000Z",
      "updatedAt": "2026-09-08T20:00:00.000Z"
    },
    {
      "id": "00000000-0000-4000-8000-000000000002",
      "name": "Client A",
      "externalId": "customer-123",
      "metadata": { "plan": "pro" },
      "isDefault": false,
      "createdAt": "2026-09-09T14:30:00.000Z",
      "updatedAt": "2026-09-09T14:30:00.000Z"
    }
  ]
}
```

### 401

```json
{
  "error": {
    "code": "unauthorized",
    "message": "A valid Bearer API key is required"
  }
}
```
