## Create Session

**post** `/api/v1/chat`

Create a chat session, optionally bound to indexes (locked after the first message).

### Query Parameters

- `organization_id: optional string`

- `project_id: optional string`

### Cookie Parameters

- `session: optional string`

### Body Parameters

- `index_ids: optional array of string`

  Indexes this session will retrieve from. Once set and the first message has been sent, the source set is locked for the session's lifetime. Leave null to create an unbound session.

### Returns

- `last_updated_at: string`

  ISO-format timestamp showing when the session was last updated.

- `session_id: string`

  Unique session identifier.

- `generated_title: optional string`

  Auto-generated title derived from the first user message.

- `index_ids: optional array of string`

  Indexes this session is bound to. Null on unbound sessions.

- `job_metadata: optional object { duration_ms, error, export_config_ids, 4 more }`

  Token usage and status from the most recent run. Null if the session has not been run yet.

  - `duration_ms: optional number`

  - `error: optional string`

  - `export_config_ids: optional array of string`

  - `is_error: optional boolean`

  - `total_input_tokens: optional number`

  - `total_output_tokens: optional number`

  - `turns: optional number`

### Example

```http
curl https://api.cloud.llamaindex.ai/api/v1/chat \
    -X POST \
    -H "Authorization: Bearer $LLAMA_CLOUD_API_KEY"
```

#### Response

```json
{
  "last_updated_at": "2026-04-22T12:34:41.342245",
  "session_id": "ses-abc123",
  "generated_title": "What were the main findings in Q3?...",
  "index_ids": [
    "idx-abc123",
    "idx-def456"
  ],
  "job_metadata": {
    "duration_ms": 0,
    "error": "error",
    "export_config_ids": [
      "string"
    ],
    "is_error": true,
    "total_input_tokens": 0,
    "total_output_tokens": 0,
    "turns": 0
  }
}
```
