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

# Create Actor

> Create a new actor to represent a conversation participant

```
POST /openapi/memorylake/api/v3/actors
```

Creates a new actor. Actors represent participants in conversations -- typically end users or system identities whose interactions generate memories. After creating an actor, you can [bind it to a workspace](/features/memorylake/api-reference/actors/bind-actor) so it can participate in conversations within that workspace's projects.

<Note>
  **Permission required:** `actor:create`
</Note>

### Request Body

<ParamField body="custom_id" type="string" required>
  Caller-defined external identifier. Must be unique across your account. Use this to map actors to identities in your own system.
</ParamField>

<ParamField body="actor_type" type="string">
  Actor type. Accepted values: `HUMAN` (default, an end user) or `ASSISTANT` (an AI agent — typically auto-created when you create an Agent).
</ParamField>

<ParamField body="display_name" type="string" required>
  Human-readable name shown in the console and returned in API responses.
</ParamField>

<ParamField body="description" type="string">
  Free-text description of the actor's role or purpose.
</ParamField>

<ParamField body="metadata" type="object">
  Arbitrary key-value pairs for caller-defined metadata. Useful for tagging actors with attributes such as tier, region, or department.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://app.memorylake.ai/openapi/memorylake/api/v3/actors' \
    -H 'Authorization: Bearer sk_xxxxxx' \
    -H 'Content-Type: application/json' \
    -d '{
      "custom_id": "user-ext-001",
      "actor_type": "HUMAN",
      "display_name": "Alice Chen",
      "description": "Primary end user for the mobile app",
      "metadata": {
        "tier": "premium",
        "region": "us-west"
      }
    }'
  ```
</RequestExample>

### Response

<ResponseField name="data" type="object">
  <Expandable title="Actor">
    <ResponseField name="id" type="string">Actor ID</ResponseField>
    <ResponseField name="custom_id" type="string">Caller-defined external identifier</ResponseField>
    <ResponseField name="actor_type" type="string">Actor type: `HUMAN` or `ASSISTANT`</ResponseField>
    <ResponseField name="display_name" type="string">Human-readable display name</ResponseField>
    <ResponseField name="description" type="string">Actor description</ResponseField>
    <ResponseField name="metadata" type="object">Caller-defined metadata</ResponseField>
    <ResponseField name="created_at" type="string">Creation timestamp</ResponseField>
    <ResponseField name="updated_at" type="string">Last update timestamp</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json Success (200) theme={null}
  {
    "success": true,
    "data": {
      "id": "act-a1b2c3d4e5f6",
      "custom_id": "user-ext-001",
      "actor_type": "HUMAN",
      "display_name": "Alice Chen",
      "description": "Primary end user for the mobile app",
      "metadata": {
        "tier": "premium",
        "region": "us-west"
      },
      "created_at": "2025-03-10T08:00:00Z",
      "updated_at": "2025-03-10T08:00:00Z"
    }
  }
  ```
</ResponseExample>
