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

# gcai chat CLI commands

> Reference for the `gcai chat` commands in the GC AI CLI, with the synopsis and flags for each command.

## `gcai chat create`

Create chat completion

```bash theme={null}
gcai chat create <message> [--file-ids <value>…] [--playbook-ids <value>…] [--playbook-id <value>] [--skill-ids <value>…] [--chat-id <value>] [--project-id <value>] [--materialize] [--company-id <value>] [--vault-id <value>] [--async] [--timeout <seconds>]
```

| Flag | Type | Required | Description |
| - | - | - | - |
| `--file-ids <value>…` | `string[]` | | Optional uploaded file IDs to attach as context for this completion. Upload files first via `POST /files`. |
| `--playbook-ids <value>…` | `string[]` | | Optional playbook IDs to ground the completion in (up to 20). The model uses each playbook's checks and guidance to structure its review of the attached files. Discover playbooks via `GET /playbooks`. Org-scoped keys can use org-visible and official playbooks. |
| `--playbook-id <value>` | `string` | | Deprecated and no longer accepted. Use `playbook_ids` (an array) instead. Requests that include this field are rejected with a 400 so the playbook is never silently dropped. |
| `--skill-ids <value>…` | `string[]` | | Optional skill IDs to run on the first turn. Each skill's instructions are injected as context for this completion. Discover skills via `GET /skills`. Only valid when starting a new chat; omit them when continuing with `chat_id`. |
| `--chat-id <value>` | `string` | | Optional chat ID to continue an existing conversation, from the `chat_id` of a prior completion. Omit to start a new chat. Conversation state is held server-side, so send only your new `message` (plus any new `file_ids`); do **not** re-send prior turns or previously returned documents/emails/diagrams. Only one turn may be in flight per chat at a time. See [Multi-turn Conversations](/api-reference/concepts/multi-turn). |
| `--project-id <value>` | `string` | | Optional project to file the chat into. Requires write access to the project. Discover projects via `GET /projects`. This does two things: it grounds the completion in the project's files, and it files the chat under that project. Filing alone does not make the chat visible to people, because API chats stay out of chat history until they are materialized. Pass `materialize: true` (or call `POST /chat/{id}/materialize` afterwards) for the chat to appear under `GET /projects/{id}/chats` and in the GC AI web app. See [Chat Visibility](/api-reference/concepts/chat-visibility). |
| `--materialize` | `boolean` | | Surface this chat into chat history as part of the same call, instead of making a second request to `POST /chat/{id}/materialize`. Defaults to `false`, which keeps the chat headless. Set this when a person is meant to open the chat. An organization-scoped key shares the materialized chat with the whole organization, so any member can open it and keep chatting in it. A user-scoped key keeps the chat owned by the caller. On success the response includes `chat_url`. If that field is absent, materialization did not happen and the chat is still headless; retry with `POST /chat/{id}/materialize` using the returned `chat_id`. Continuing an already-materialized chat is a no-op. See [Chat Visibility](/api-reference/concepts/chat-visibility). |
| `--company-id <value>` | `string` | | Optional company profile to ground the completion in, so the model has that company's context (industry, jurisdiction, regulations, risk posture). Discover company profiles via `GET /company-profiles`. The company is fixed for the life of a chat. On a new chat, supply this to target a specific company (the only way to ground against a particular one in a multi-company organization); when omitted, a company is auto-resolved: user-scoped keys use the caller's active (default) company, and org-scoped keys use the organization's sole company, or none when there are several. When continuing a chat with `chat_id`, omit this to reuse the chat's company. You may echo the same `company_id`, but a different one is rejected with `409` (start a new chat to use a different company). |
| `--vault-id <value>` | `string` | | Optional Contract Intelligence vault to ground the completion in, so the model can query that vault's documents and fields. Copy the vault ID from the GC AI web app. **Authorization:** User-scoped keys need the Vault Chat permission, Contract Intelligence access, and view access to the vault. Organization-scoped keys need the organization to have Contract Intelligence entitlement; they can attach any vault in the organization because organization keys have no user identity for per-vault access checks. The vault is fixed for the life of a chat. When continuing with `chat_id`, omit this to reuse the chat's vault. You may echo the same `vault_id`, but a different one is rejected with `409` (start a new chat to use a different vault). When also filing into a project (`project_id`) that is linked to a vault, `vault_id` must match that vault. A different one is rejected with `409`; omit `vault_id` to use the project's vault. |
| `--async` | `boolean` | | Return the pending job immediately instead of waiting. |
| `--timeout <seconds>` | `number` | | Client-side wait bound before giving up (default 300). |

Wraps `POST /chat/completions` — see [Create chat completion](/api-reference/create-chat-completion) for full parameter semantics.

## `gcai chat materialize`

Materialize an API chat

```bash theme={null}
gcai chat materialize <id> [--project-id <value>]
```

| Flag | Type | Required | Description |
| - | - | - | - |
| `--project-id <value>` | `string` | | File the chat into this project while materializing it. Requires write access to the project. Omit to leave the chat unfiled. |

Wraps `POST /chat/{id}/materialize` — see [Materialize an API chat](/api-reference/materialize-chat) for full parameter semantics.

## `gcai chat search`

Search chats

```bash theme={null}
gcai chat search <q> [--limit <number>]
```

| Flag | Type | Required | Description |
| - | - | - | - |
| `--limit <number>` | `number` | | Max chats to return (default 20, max 50) |

Wraps `GET /chat/search` — see [Search chats](/api-reference/search-chats) for full parameter semantics.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.