# Create a style profile

Create an organization-scoped custom character (`kind=personality`) or this-turn note (`kind=note`). Requires `create_assistants`. `kind=note` also requires the `style_notes` beta feature switch (404 `FEATURE_NOT_ENABLED` when off). When the switch cannot be read right now, a note request returns 503 `STYLE_NOTES_SWITCH_UNRESOLVED` with a `Retry-After` header: retry, do not treat it as off. Platform rows cannot be created through this endpoint.

## Query parameters

**`organization_id`** string optional

Organization that will own the row. Resolved from the caller when omitted.

## Body parameters

**`kind`** string required

`personality` or `note`.

**`name`** string required

Display name, 1–100 characters.

**`body`** string required

Instruction fragment, 1–8000 characters. Personality bodies should start with `# PERSONALITY`.

**`slug`** string optional

Snake_case, 1–64 characters, starting with a letter. Derived from `name` when omitted. Must be unique among active rows of the same kind in this organization.

**`description`** string optional

Picker hint, max 500 characters.

**`settings`** object optional

Suggested register preset. Allowed only when `kind=personality`. Unknown keys and illegal enum values return 422. Notes that send settings return 422.

## Returns

The created [Style Profile object](/docs/api-reference/objects/style-profile-object). HTTP 201.

Request

```bash cURL
curl -X POST "https://api.aitronos.com/v1/style-profiles" \
  -H "X-API-Key: $FREDDY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "personality",
    "name": "Sales voice",
    "slug": "sales_voice",
    "body": "# PERSONALITY\nYou sell without lying."
  }'
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")
row = client.style_profiles.create(
    kind="personality",
    name="Sales voice",
    slug="sales_voice",
    body="# PERSONALITY\nYou sell without lying.",
)
print(row.id)
```


```python Python
import os
import requests

response = requests.post(
    "https://api.aitronos.com/v1/style-profiles",
    headers={
        "X-API-Key": os.environ["FREDDY_API_KEY"],
        "Content-Type": "application/json",
    },
    json={
        "kind": "note",
        "name": "Board-ready",
        "slug": "board_ready",
        "body": "Write this answer for a board pack. Keep the facts.",
    },
)
print(response.json())
```


```javascript JavaScript
const response = await fetch("https://api.aitronos.com/v1/style-profiles", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.FREDDY_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    kind: "personality",
    name: "Sales voice",
    slug: "sales_voice",
    body: "# PERSONALITY\nYou sell without lying.",
  }),
});
console.log(await response.json());
```

Response

```json 201 Created
{
  "id": "sty_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
  "kind": "personality",
  "scope": "organization",
  "organization_id": "org_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "slug": "sales_voice",
  "name": "Sales voice",
  "description": null,
  "body": "# PERSONALITY\nYou sell without lying.",
  "settings": null,
  "is_active": true,
  "created_by": "usr_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "created_at": "2026-09-14T12:00:00Z",
  "updated_at": "2026-09-14T12:00:00Z"
}
```

Error

```json 409 Conflict
{
  "success": false,
  "error": {
    "code": "RESOURCE_ALREADY_EXISTS",
    "message": "That slug is already in use in this organization.",
    "system_message": "An active style profile with this slug already exists",
    "type": "client_error",
    "status": 409,
    "details": {"slug": "sales_voice", "kind": "personality"},
    "trace_id": "req_abc123xyz",
    "timestamp": "2026-09-14T12:00:00Z"
  }
}
```

## Related Resources

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