# List style profiles

List platform catalog rows plus this organization's custom characters and turn notes. Any authenticated organization member can list. Filter with `kind=personality` for the assistant picker or `kind=note` for composer chips.

`kind=note` requires the `style_notes` beta feature switch. When the switch is off, that filter returns 404 `FEATURE_NOT_ENABLED` and an unfiltered list omits note rows. When the switch cannot be read right now, both return 503 `STYLE_NOTES_SWITCH_UNRESOLVED` with a `Retry-After` header: retry, do not treat it as off. `kind=personality` never reads the switch and is unaffected.

## Query parameters

**`organization_id`** string optional

Organization to list custom rows for. Resolved from the caller when omitted.

**`kind`** string optional

`personality` or `note`. Omit to return both. `note` is gated on the `style_notes` beta feature switch (404 `FEATURE_NOT_ENABLED` when off, 503 `STYLE_NOTES_SWITCH_UNRESOLVED` when it cannot be read).

**`active_only`** boolean optional · Defaults to `true`

When `true`, hide inactive custom rows. Platform rows are always active.

**`assistant_id`** string optional

Resolve `default_voice` for this assistant. Omit for the platform default. An assistant this caller cannot use returns 422 `VALIDATION_ERROR` with `details.field = "assistant_id"`, the same refusal [Create response](/docs/api-reference/responses/create) gives. A deleted assistant of this organization is not refused: its threads still send, with the platform default, so `default_voice` is the platform default.

## Returns

A [Style Profile list](/docs/api-reference/objects/style-profile-object) with a `data` array.

Reads that can carry note rows (`kind=note`, or no `kind`) also return `intensities` — the ordered steps a composer draws for `style_notes[].intensity` on [Create response](/docs/api-reference/responses/create). Each step is a `value` to send back verbatim and a reader-facing `label`; the first step is the one a new chip opens at. The array is empty on `kind=personality` reads and while the `style_notes` switch is off.

The same reads return `selection` (`"multi"`: one turn may carry several notes) and `max_items` (the most notes one `style_notes` list accepts; more is a 422). Both are `null` whenever `intensities` is empty.

Every read returns `default_voice`: the character a turn plays when no note is picked, as `{ "id", "slug", "name", "description", "source" }`. `source` is `assistant` when `assistant_id` has a personality, and `platform` for the platform default (Witty) otherwise. It is `null` only when that assistant has no personality but a custom register, so its voice is no catalog character.

Request

```bash cURL
curl -X GET "https://api.aitronos.com/v1/style-profiles?kind=personality&active_only=true" \
  -H "X-API-Key: $FREDDY_API_KEY"
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")
result = client.style_profiles.list(kind="personality", active_only=True)
for row in result.data:
    print(f"{row.slug}: {row.id}")
```


```python Python
import os
import requests

response = requests.get(
    "https://api.aitronos.com/v1/style-profiles",
    headers={"X-API-Key": os.environ["FREDDY_API_KEY"]},
    params={"kind": "note", "active_only": True},
)
print(response.json())
```


```javascript JavaScript
const response = await fetch(
  "https://api.aitronos.com/v1/style-profiles?kind=note&active_only=true",
  { headers: { "X-API-Key": process.env.FREDDY_API_KEY } },
);
console.log(await response.json());
```

Response

```json 200 OK
{
  "data": [
    {
      "id": "sty_ef235ebd9c34eac3d8196137a22f181e",
      "kind": "personality",
      "scope": "platform",
      "organization_id": null,
      "slug": "witty",
      "name": "Witty",
      "description": "Sharp, funny, human. Platform default.",
      "body": "# PERSONALITY\nYou speak like a sharp, grounded friend who still does the work.",
      "settings": {
        "profanity": "when_fitting",
        "lecturing": "never",
        "adult": "avoid",
        "candor": "direct",
        "dark_humor": "off"
      },
      "is_active": true,
      "is_default": true,
      "created_by": null,
      "created_at": "2026-09-14T12:00:00Z",
      "updated_at": "2026-09-14T12:00:00Z"
    }
  ],
  "default_personality_id": "sty_ef235ebd9c34eac3d8196137a22f181e",
  "intensities": [],
  "selection": null,
  "max_items": null,
  "default_voice": {
    "id": "sty_ef235ebd9c34eac3d8196137a22f181e",
    "slug": "witty",
    "name": "Witty",
    "description": "Sharp, funny, human. Platform default.",
    "source": "platform"
  }
}
```

Error

```json 404 FEATURE_NOT_ENABLED
{
  "success": false,
  "error": {
    "code": "FEATURE_NOT_ENABLED",
    "message": "Style notes are not enabled for this organization.",
    "system_message": "Style notes are not enabled",
    "type": "client_error",
    "status": 404,
    "details": {"reason": "style_notes is off"},
    "trace_id": "req_abc123xyz",
    "timestamp": "2026-09-16T12:00:00Z"
  }
}
```


```json 503 STYLE_NOTES_SWITCH_UNRESOLVED
{
  "success": false,
  "error": {
    "code": "STYLE_NOTES_SWITCH_UNRESOLVED",
    "message": "Style notes could not be loaded right now. Please try again.",
    "system_message": "Feature switch 'style_notes' could not be read; refusing to report style notes as off",
    "type": "service_unavailable",
    "status": 503,
    "details": {"feature": "style_notes", "retry_after": 2},
    "trace_id": "req_abc123xyz",
    "timestamp": "2026-10-03T12:00:00Z"
  }
}
```


```json 401 Unauthorized
{
  "success": false,
  "error": {
    "code": "AUTHENTICATION_REQUIRED",
    "message": "Authentication is required.",
    "system_message": "Missing or invalid credentials",
    "type": "authentication_error",
    "status": 401,
    "details": {},
    "trace_id": "req_abc123xyz",
    "timestamp": "2026-09-14T12:00:00Z"
  }
}
```

## Related Resources

- [Style Profile object](/docs/api-reference/objects/style-profile-object)
- [Create a style profile](/docs/api-reference/style-profiles/create)
- [Create assistant](/docs/api-reference/assistants/create)