# Create assistant

**POST** `/v1/assistants` - Create a new AI assistant with custom configuration, tools, and behavior rules.

#### Request Body

**`name`** string required

The name of the assistant. Must be unique within the organization.

**`organization_id`** string required

The unique identifier of the organization to create the assistant in.

**`description`** string optional

A brief description of the assistant's purpose and capabilities.

**`default_model_key`** string optional · Defaults to `ftg-3.0-speed`

The AI model key to use for this assistant. [View available models →](/docs/documentation/getting-started/models)

**`allowed_model_providers`** array optional

Array of model provider identifiers that this assistant is allowed to use. When specified, the assistant will only be able to use models from these providers. Example: `["openai", "anthropic", "aitronos"]`.

**`instructions`** string optional

System instructions that define the assistant's behavior and personality.

**`vector_store_ids`** array optional

Array of vector store IDs for file search capabilities.

**`access_mode`** string optional · Defaults to `private`

Base visibility mode for the assistant. Values: `private` (explicit access only), `organization` (all org members can view), `public` (everyone can view). [Learn more about access control →](/docs/api-reference/assistants/access-management)

**`access_departments`** array optional

Array of department IDs that have view access to the assistant.

**`access_users`** array optional

Array of user IDs that have view access to the assistant.

**`editable_by_users`** array optional

Array of user IDs that can edit the assistant configuration.

**`editable_by_roles`** array optional

Array of role IDs that can edit the assistant configuration.

**`visible_to_roles`** array optional

Array of role IDs that have view access to the assistant.

**`visible_in_chat_to_users`** array optional

Array of user IDs that can see the assistant in chat (view-only access).

**`temperature`** number optional · Defaults to `0.7`

Controls randomness in responses (0.0 to 2.0).

**`max_completion_tokens`** integer optional

Maximum number of tokens to generate in the completion.

**`context_window`** integer optional

Maximum context window size for the assistant in tokens.

**`frequency_penalty`** number optional

Penalty applied to reduce repetition of frequent tokens (-2.0 to 2.0).

**`presence_penalty`** number optional

Penalty applied to encourage exploring new topics (-2.0 to 2.0).

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

Whether the assistant is active and available for use.

**`is_default`** boolean optional

Whether this assistant is the default for the organization.

**`api_enabled`** boolean optional

Whether the assistant is accessible via API.

**`public_enabled`** boolean optional

Whether the assistant is publicly accessible.

**`memory_enabled`** boolean optional

Whether the assistant has memory capabilities across conversations.

**`moderation_enabled`** boolean optional

Whether content moderation is enabled for this assistant.

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

Whether the assistant uses streaming responses by default.

**`output_mode`** string optional

The output mode for assistant responses. Values: `text`, `json`.

**`response_format`** object optional

Structured response format configuration.

**`json_schemas`** array optional

Array of JSON schema definitions for structured output validation.

**`safety_level`** string optional

Safety filtering level for assistant responses.

**`preset_prompts`** array optional

Array of preset prompt IDs to attach to this assistant.

**`rule_ids`** array optional

Array of rule IDs to apply to this assistant's behavior.

**`icon_type`** string optional

Icon type for the assistant. Values: `avatar`, `icon`, `custom`.

**`icon_id`** string optional

Predefined icon identifier from the icon library.

**`icon_data`** string optional

Base64-encoded custom icon image data.

**`logit_bias`** object optional

Token ID to bias value mapping (-100 to 100) to adjust token probabilities.

**`seed`** integer optional

Random seed for deterministic outputs.

**`stop_sequences`** array optional

Array of sequences where the assistant will stop generating further tokens.

**`instructions_thread_id`** string optional

Thread ID containing additional instructions for the assistant.

**`avatar_id`** string optional

Predefined avatar identifier from the Aitronos avatar library. [View available avatars →](/assets/list.fbdcac39b72dde087da111265a16fb01b6144d59210f16bcfe8809175f3d0a42.76c3c710.md)

**`tool_configurations`** object optional

Detailed configuration for built-in system tools. Use this for fine-grained control over tool behavior.

details
summary
Show tool configurations
**`system_tools`** object

Built-in Aitronos tools configuration.

**`web_search`** object · `mode`: `on`/`off`/`auto`, `sources`: boolean

**`code_interpreter`** object · `mode`: `on`/`off`/`auto`, `outputs`: boolean

**`file_search`** object · `mode`: `on`/`off`/`auto`, `results`: boolean

**`image_generation`** object · `mode`: `on`/`off`/`auto`, `provider`: `openai`/`clipdrop`

**`file_retrieval`** object · `mode`: `on`/`off`/`auto`

**`mcp_tools`** array

Enable the assistant to utilize external tools through Model Context Protocol (MCP) server integrations. [Learn more about MCP](/docs/documentation/core-concepts/mcp-tools)

details
summary
Show properties
**`server_label`** string required

Identifier label for the MCP server, used for recognition during tool invocations.

**`type`** string required

The type of the MCP tool. Always `mcp`.

**`allowed_tools`** array or object optional

Specify permitted tools either as a string array or filter configuration object.

details
summary
Show possible types
**MCP allowed tools** array

String array containing names of permitted tools.

**MCP tool filter** object

Filter configuration defining which tools are permitted.

details
summary
Show properties
**`read_only`** boolean optional

Determines if a tool performs data modifications or operates in read-only mode. Matches MCP servers annotated with `readOnlyHint`.

**`tool_names`** array optional

Array of permitted tool identifiers.

**`authorization`** string optional

OAuth bearer token for authenticating with remote MCP servers (custom URLs or service connectors). Your application manages the OAuth flow and supplies the token.

**`connector_id`** string optional

Service connector identifier for pre-integrated platforms. Either `server_url` or `connector_id` is required.

Examples: `connector_googledrive`, `connector_gmail`

[View all supported connectors →](/docs/documentation/tools/mcp-connectors)

**`headers`** object optional

Custom HTTP headers transmitted to the MCP server for authentication or additional metadata.

**`require_approval`** object or string optional · Defaults to `always`

Define approval requirements for MCP server tools.

details
summary
Show possible types
**MCP tool approval filter** object

Configure tool-specific approval policies using `always`, `never`, or conditional filter rules.

details
summary
Show properties
**`always`** object optional

Filter rules defining tools that always require approval.

details
summary
Show properties
**`read_only`** boolean optional

Indicates whether or not a tool modifies data or is read-only. If an MCP server is annotated with `readOnlyHint`, it will match this filter.

**`tool_names`** array optional

List of allowed tool names.

**`never`** object optional

Filter rules defining tools that never require approval.

details
summary
Show properties
**`read_only`** boolean optional

Indicates whether or not a tool modifies data or is read-only. If an MCP server is annotated with `readOnlyHint`, it will match this filter.

**`tool_names`** array optional

List of allowed tool names.

**MCP tool approval setting** string

Universal approval policy for all tools. Set to `always` to mandate approval for every tool, or `never` to bypass all approval requirements.

**`server_description`** string optional

Descriptive text providing additional context about the MCP server's purpose.

**`server_url`** string optional

HTTP endpoint for the MCP server. Either `server_url` or `connector_id` is required.

**`streamline_tools`** array

Array of Streamline/Flow-Plate automation IDs.

**`system_message`** array optional

Pre-configured system messages as an array of role/content objects. Each entry has exactly two fields: `role` (one of `system`, `user`, `assistant`) and `content` (a plain-text string, max 50,000 characters). Any other keys are rejected.

**`context_strategy`** string optional · Defaults to `auto`

Context management strategy for the thread.

**`max_tool_calls`** integer optional · Defaults to `50`

Maximum number of built-in tool calls allowed per response (1–250).

**`parallel_tool_calls`** boolean optional · Defaults to `false`

Whether the assistant can execute multiple tool calls simultaneously.

**`reasoning`** object optional

Configuration for reasoning. Only applicable when using reasoning-capable models.

details
summary
Show reasoning properties
**`effort`** string · Defaults to `medium`

Computational effort for reasoning. Values: `off`, `none`, `minimal`, `low`, `medium`, `high`, `maximum`, `standard`, `extended`. `none` gives the lowest-latency interactions; `minimal` is the lowest non-zero effort.

**`summary`** string · Defaults to `auto`

Request reasoning summaries. Values: `off`, `auto`, `concise`, `detailed`.

**`service_tier`** string optional · Defaults to `auto`

Processing tier for requests. Values: `auto`, `default`, `flex`, `priority`.

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

Whether to store generated responses for later retrieval via API.

**`text_config`** object optional

Configuration for text response formatting and structured outputs. [Learn more](/docs/documentation/core-concepts/structured-output)

**`top_logprobs`** integer optional

Number of alternative tokens to return at each position with log probabilities (0-20).

**`top_p`** number optional · Defaults to `1.0`

Nucleus sampling probability mass (0.0-1.0). Alternative to temperature for controlling randomness.

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

Auto-truncate messages exceeding context window.

**`metadata`** object optional

Custom key-value pairs for organizing and filtering assistants.

## Body parameters

**`deep_search_config`** object optional

Configuration for fetching full page content on web_search results.

**`delegate_to_whitelist`** array[string] optional

The delegate to whitelist.

**`advanced_settings_enabled`** boolean optional

Whether advanced settings are expanded in the editor UI

**`skin_template_id`** string optional

The skin template id.

**`tool_approval_mode`** string optional

The tool approval mode.

**`voice_profile_id`** string optional

The voice profile id.

**`allowed_models`** object optional

Per-provider model selection. Keys are provider slugs; each value is either a list of allowed model keys for that provider or `null` to allow all of its models. Example: `{"openai": ["ftg-3.0", "ftg-3.0-speed"], "anthropic": null}`.

**`accept_delegations_from`** array[string] optional

The accept delegations from.

**`slice_ids`** array[string] optional

The slice ids.

**`prefer_deep_search`** boolean optional

The prefer deep search.

**`delegate_to_blacklist`** array[string] optional

The delegate to blacklist.

**`skill_ids`** array[string] optional

The skill ids.

**`knowledge_access_mode`** string optional

Knowledge access mode: 'user_scoped' (inherit user's accessible stores/slices) or 'fixed' (use assigned IDs)

**`pinned`** boolean optional · Defaults to `false`

Whether this assistant is pinned to the top of the assistant list.

**`image_operations`** string optional

Image operations mode: `auto`, `manual`, or `off`.

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

Whether file attachments are enabled in the assistant behavior.

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

Enable prompt caching for this assistant. When true (default), the assistant's turns send a stable cache key so providers reuse the cached system+tools prefix and cut time-to-first-token. Set false to disable caching for this assistant.

**`grant_department_access`** array optional

Per-department access grants. Each entry grants a department a specific access level (overwrite/write/admin) or any custom access level. On update, this list is treated as the desired state — departments missing from the list have their grants revoked.

## Returns

The created [Assistant object](/docs/api-reference/objects/assistant-object) with all configuration details.

Minimal

```bash
curl https://api.aitronos.com/v1/assistants \
  -H "X-API-Key: $FREDDY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Assistant",
    "organization_id": "org_abc123"
  }'
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")

assistant = client.assistants.create_assistant(
    name="My Assistant",
    organization_id="org_abc123",
)
print(assistant.id)
```


```python
import os
import requests

api_key = os.environ["FREDDY_API_KEY"]

response = requests.post(
    "https://api.aitronos.com/v1/assistants",
    headers={
        "X-API-Key": api_key,
        "Content-Type": "application/json"
    },
    json={
        "name": "My Assistant",
        "organization_id": "org_abc123"
    }
)

assistant = response.json()
print(f"Created assistant: {assistant['id']}")
```


```javascript
const apiKey = process.env.FREDDY_API_KEY;

const response = await fetch('https://api.aitronos.com/v1/assistants', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'My Assistant',
    organization_id: 'org_abc123'
  })
});

const assistant = await response.json();
console.log(`Created assistant: ${assistant.id}`);
```

With Tools

```bash
curl https://api.aitronos.com/v1/assistants \
  -H "X-API-Key: $FREDDY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Research Assistant",
    "organization_id": "org_abc123",
    "description": "AI assistant for research and analysis",
    "default_model_key": "ftg-3.0",
    "instructions": "You are a research assistant that helps find and analyze information.",
    "tools": [
      {
        "type": "web_search",
        "search_context_size": "large"
      },
      {
        "type": "code_interpreter"
      }
    ],
    "temperature": 0.3
  }'
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")

assistant = client.assistants.create_assistant(
    name="Research Assistant",
    organization_id="org_abc123",
    description="AI assistant for research and analysis",
    default_model_key="ftg-3.0",
    instructions="You are a research assistant that helps find and analyze information.",
    temperature=0.3,
)
print(assistant.id)
```


```python
import requests

api_key = os.environ["FREDDY_API_KEY"]

response = requests.post(
    "https://api.aitronos.com/v1/assistants",
    headers={
        "X-API-Key": api_key,
        "Content-Type": "application/json"
    },
    json={
        "name": "Research Assistant",
        "organization_id": "org_abc123",
        "description": "AI assistant for research and analysis",
        "default_model_key": "ftg-3.0",
        "instructions": "You are a research assistant that helps find and analyze information.",
        "tools": [
            {
                "type": "web_search",
                "search_context_size": "large"
            },
            {
                "type": "code_interpreter"
            }
        ],
        "temperature": 0.3
    }
)

assistant = response.json()
```


```javascript
const apiKey = process.env.FREDDY_API_KEY;

const response = await fetch('https://api.aitronos.com/v1/assistants', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Research Assistant',
    organization_id: 'org_abc123',
    description: 'AI assistant for research and analysis',
    default_model_key: 'ftg-3.0',
    instructions: 'You are a research assistant that helps find and analyze information.',
    tools: [
      {
        type: 'web_search',
        searchContextSize: 'large'
      },
      {
        type: 'code_interpreter'
      }
    ],
    temperature: 0.3
  })
});

const assistant = await response.json();
```

All Parameters

```bash cURL
curl https://api.aitronos.com/v1/assistants \
  -H "X-API-Key: $FREDDY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Advanced Research Assistant",
    "organization_id": "org_abc123",
    "description": "Comprehensive AI assistant with full feature set",
    "default_model_key": "ftg-3.0",
    "allowed_model_providers": ["openai", "anthropic", "aitronos"],
    "instructions": "You are an advanced research assistant that helps users find, analyze, and synthesize information from multiple sources.",
    "tools": [
      {
        "type": "web_search",
        "search_context_size": "large"
      },
      {
        "type": "code_interpreter"
      },
      {
        "type": "function",
        "function": {
          "name": "get_weather",
          "description": "Get current weather for a location",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {"type": "string"}
            },
            "required": ["location"]
          }
        }
      }
    ],
    "vector_store_ids": ["vs_abc123", "vs_def456"],
    "access_mode": "organization",
    "temperature": 0.7,
    "max_completion_tokens": 8000,
    "avatar_id": "avatar_research_001",
    "tool_configurations": {
      "system_tools": {
        "web_search": {
          "mode": "auto",
          "sources": true
        },
        "code_interpreter": {
          "mode": "on",
          "outputs": true
        },
        "file_search": {
          "mode": "auto",
          "results": true
        },
        "image_generation": {
          "mode": "auto",
          "provider": "openai"
        },
        "file_retrieval": {
          "mode": "on"
        }
      },
      "mcp_tools": [
        {
          "server_label": "google-drive",
          "type": "mcp",
          "connector_id": "connector_googledrive",
          "allowed_tools": ["list_files", "read_file"],
          "require_approval": {
            "always": {
              "tool_names": ["delete_file", "update_file"]
            },
            "never": {
              "read_only": true
            }
          },
          "server_description": "Google Drive integration for file access"
        }
      ],
      "streamline_tools": ["flow_abc123", "flow_def456"]
    },
    "system_message": [
      {
        "role": "system",
        "content": "You are a helpful research assistant."
      },
      {
        "role": "user",
        "content": "Example query: What is the latest research on AI?"
      }
    ],
    "context_strategy": "auto",
    "max_tool_calls": 20,
    "parallel_tool_calls": true,
    "reasoning": {
      "effort": "high",
      "summary": "detailed"
    },
    "service_tier": "priority",
    "store_responses": true,
    "text_config": {
      "output_mode": "json_schema",
      "json_schema": {
        "id": "research_response_v1",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "summary": {"type": "string"},
            "sources": {
              "type": "array",
              "items": {"type": "string"}
            },
            "confidence": {"type": "number", "minimum": 0, "maximum": 1}
          },
          "required": ["summary", "sources"]
        }
      }
    },
    "top_logprobs": 5,
    "top_p": 0.9,
    "truncation": true,
    "metadata": {
      "category": "research",
      "department": "engineering",
      "version": "2.0",
      "tags": "ai,research,advanced"
    }
  }'
```


```python Python SDK
from aitronos import Aitronos

client = Aitronos(api_key="your-api-key")

assistant = client.assistants.create_assistant(
    name="Advanced Research Assistant",
    organization_id="org_abc123",
    description="Comprehensive AI assistant with full feature set",
    default_model_key="ftg-3.0",
    allowed_model_providers=["openai", "anthropic", "aitronos"],
    instructions="You are an advanced research assistant.",
    vector_store_ids=["vs_abc123", "vs_def456"],
    access_mode="organization",
    temperature=0.7,
    max_completion_tokens=8000,
)
print(assistant.id)
```


```python Python
import requests

api_key = os.environ["FREDDY_API_KEY"]

response = requests.post(
    "https://api.aitronos.com/v1/assistants",
    headers={
        "X-API-Key": api_key,
        "Content-Type": "application/json"
    },
    json={
        "name": "Advanced Research Assistant",
        "organization_id": "org_abc123",
        "description": "Comprehensive AI assistant with full feature set",
        "default_model_key": "ftg-3.0",
        "allowed_model_providers": ["openai", "anthropic", "aitronos"],
        "instructions": "You are an advanced research assistant that helps users find, analyze, and synthesize information from multiple sources.",
        "tools": [
            {
                "type": "web_search",
                "search_context_size": "large"
            },
            {
                "type": "code_interpreter"
            },
            {
                "type": "function",
                "function": {
                    "name": "get_weather",
                    "description": "Get current weather for a location",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "location": {"type": "string"}
                        },
                        "required": ["location"]
                    }
                }
            }
        ],
        "vector_store_ids": ["vs_abc123", "vs_def456"],
        "access_mode": "organization",
        "temperature": 0.7,
        "max_completion_tokens": 8000,
        "avatar_id": "avatar_research_001",
        "tool_configurations": {
            "system_tools": {
                "web_search": {
                    "mode": "auto",
                    "sources": True
                },
                "code_interpreter": {
                    "mode": "on",
                    "outputs": True
                },
                "file_search": {
                    "mode": "auto",
                    "results": True
                },
                "image_generation": {
                    "mode": "auto",
                    "provider": "openai"
                },
                "file_retrieval": {
                    "mode": "on"
                }
            },
            "mcp_tools": [
                {
                    "server_label": "google-drive",
                    "type": "mcp",
                    "connector_id": "connector_googledrive",
                    "allowed_tools": ["list_files", "read_file"],
                    "require_approval": {
                        "always": {
                            "tool_names": ["delete_file", "update_file"]
                        },
                        "never": {
                            "read_only": True
                        }
                    },
                    "server_description": "Google Drive integration for file access"
                }
            ],
            "streamline_tools": ["flow_abc123", "flow_def456"]
        },
        "system_message": [
            {
                "role": "system",
                "content": "You are a helpful research assistant."
            },
            {
                "role": "user",
                "content": "Example query: What is the latest research on AI?"
            }
        ],
        "context_strategy": "auto",
        "max_tool_calls": 20,
        "parallel_tool_calls": True,
        "reasoning": {
            "effort": "high",
            "summary": "detailed"
        },
        "service_tier": "priority",
        "store": True,
        "text_config": {
            "output_mode": "json_schema",
            "json_schema": {
                "id": "research_response_v1",
                "strict": True,
                "schema": {
                    "type": "object",
                    "properties": {
                        "summary": {"type": "string"},
                        "sources": {
                            "type": "array",
                            "items": {"type": "string"}
                        },
                        "confidence": {"type": "number", "minimum": 0, "maximum": 1}
                    },
                    "required": ["summary", "sources"]
                }
            }
        },
        "top_logprobs": 5,
        "top_p": 0.9,
        "truncation": true,
        "metadata": {
            "category": "research",
            "department": "engineering",
            "version": "2.0",
            "tags": "ai,research,advanced"
        }
    }
)

assistant = response.json()
print(f"Created assistant: {assistant['id']}")
```


```javascript
const apiKey = process.env.FREDDY_API_KEY;

const response = await fetch('https://api.aitronos.com/v1/assistants', {
  method: 'POST',
  headers: {
    'X-API-Key': apiKey,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Advanced Research Assistant',
    organization_id: 'org_abc123',
    description: 'Comprehensive AI assistant with full feature set',
    default_model_key: 'ftg-3.0',
    allowed_model_providers: ['openai', 'anthropic', 'aitronos'],
    instructions: 'You are an advanced research assistant that helps users find, analyze, and synthesize information from multiple sources.',
    tools: [
      {
        type: 'web_search',
        searchContextSize: 'large'
      },
      {
        type: 'code_interpreter'
      },
      {
        type: 'function',
        function: {
          name: 'get_weather',
          description: 'Get current weather for a location',
          parameters: {
            type: 'object',
            properties: {
              location: { type: 'string' }
            },
            required: ['location']
          }
        }
      }
    ],
    vector_store_ids: ['vs_abc123', 'vs_def456'],
    access_mode: 'organization',
    temperature: 0.7,
    max_completion_tokens: 8000,
    avatar_id: 'avatar_research_001',
    tool_configurations: {
      system_tools: {
        webSearch: {
          mode: 'auto',
          sources: true
        },
        codeInterpreter: {
          mode: 'on',
          outputs: true
        },
        fileSearch: {
          mode: 'auto',
          results: true
        },
        image_generation: {
          mode: 'auto',
          provider: 'openai'
        },
        file_retrieval: {
          mode: 'on'
        }
      },
      mcp_tools: [
        {
          serverLabel: 'google-drive',
          type: 'mcp',
          connectorId: 'connector_googledrive',
          allowedTools: ['list_files', 'read_file'],
          requireApproval: {
            always: {
              tool_names: ['delete_file', 'update_file']
            },
            never: {
              read_only: true
            }
          },
          serverDescription: 'Google Drive integration for file access'
        }
      ],
      streamline_tools: ['flow_abc123', 'flow_def456']
    },
    system_message: [
      {
        role: 'system',
        content: 'You are a helpful research assistant.'
      },
      {
        role: 'user',
        content: 'Example query: What is the latest research on AI?'
      }
    ],
    context_strategy: 'auto',
    max_tool_calls: 20,
    parallel_tool_calls: true,
    reasoning: {
      effort: 'high',
      summary: 'detailed'
    },
    service_tier: 'priority',
    store_responses: true,
    text_config: {
      outputMode: 'json_schema',
      jsonSchema: {
        id: 'research_response_v1',
        strict: true,
        schema: {
          type: 'object',
          properties: {
            summary: { type: 'string' },
            sources: {
              type: 'array',
              items: { type: 'string' }
            },
            confidence: { type: 'number', minimum: 0, maximum: 1 }
          },
          required: ['summary', 'sources']
        }
      }
    },
    top_logprobs: 5,
    top_p: 0.9,
    truncation: 'auto',
    metadata: {
      category: 'research',
      department: 'engineering',
      version: '2.0',
      tags: 'ai,research,advanced'
    }
  })
});

const assistant = await response.json();
console.log(`Created assistant: ${assistant.id}`);
```

**Response:**

201 Created

```json
{
  "id": "asst_abc123",
  "name": "My Assistant",
  "description": "A helpful assistant",
  "organization_id": "org_abc123",
  "created_by": "usr_abc123",
  "default_model_key": "ftg-3.0-speed",
  "instructions": "You are a helpful assistant.",
  "tool_configurations": null,
  "is_active": true,
  "access_mode": "private",
  "temperature": 0.7,
  "streaming": true,
  "store_responses": true,
  "created_at": 1731318600,
  "updated_at": 1731318600,
  "deleted_at": null
}
```

400 Bad Request

```json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request parameters",
    "system_message": "Missing required field: name",
    "type": "validation_error",
    "status": 400,
    "details": {
      "field": "name",
      "issue": "required"
    },
    "trace_id": "req_xyz789",
    "timestamp": "2025-11-11T10:30:00Z"
  }
}
```

401 Unauthorized

```json
{
  "success": false,
  "error": {
    "code": "AUTHENTICATION_REQUIRED",
    "message": "Authentication required. Please provide a valid API key.",
    "system_message": "Missing or invalid authorization header",
    "type": "authentication_error",
    "status": 401,
    "trace_id": "req_abc123",
    "timestamp": "2025-11-11T10:30:00Z",
    "details": {}
  }
}
```

403 Forbidden

```json
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "You do not have permission to create assistants in this organization.",
    "system_message": "Insufficient permissions",
    "type": "authorization_error",
    "status": 403,
    "details": {
      "required_permission": "assistants:create",
      "organization_id": "org_abc123"
    },
    "trace_id": "req_def456",
    "timestamp": "2025-11-11T10:30:00Z"
  }
}
```

429 Rate Limit

```json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please try again later.",
    "system_message": "Rate limit exceeded for endpoint",
    "type": "rate_limit_error",
    "status": 429,
    "details": {
      "retry_after": 60,
      "limit": 100,
      "remaining": 0,
      "reset_at": "2025-11-11T10:31:00Z"
    },
    "trace_id": "req_ghi789",
    "timestamp": "2025-11-11T10:30:00Z"
  }
}
```

500 Server Error

```json
{
  "success": false,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "An unexpected error occurred. Please try again later.",
    "system_message": "Database connection timeout",
    "type": "server_error",
    "status": 500,
    "trace_id": "req_jkl012",
    "timestamp": "2025-11-11T10:30:00Z",
    "details": {}
  }
}
```

## Related Resources

- [List Assistants](/docs/api-reference/assistants/list) — Retrieve all assistants
- [Retrieve Assistant](/docs/api-reference/assistants/retrieve) — Get a specific assistant
- [Update Assistant](/docs/api-reference/assistants/update) — Modify assistant configuration
- [Delete Assistant](/docs/api-reference/assistants/delete) — Remove an assistant
- [Assistant Object](/docs/api-reference/objects/assistant-object) — Field reference