> This page is for version v2 API (default).
> For other versions, use one of these documentation indexes:
> - v2 API (default): https://docs.cohere.com/v2/llms.txt
> - v1 API: https://docs.cohere.com/v1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.cohere.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.cohere.com/_mcp/server.

# Text generation - quickstart

> A quickstart guide for performing text generation with Cohere's Command models (v2 API).

## About text generation

Cohere's Command family of LLMs are available via the Chat endpoint. This endpoint enables you to build generative AI applications and facilitates a conversational interface for building chatbots.

This quickstart guide shows you how to perform text generation with the Chat endpoint.

## Setup

First, install the Cohere Python SDK with the following command.

```bash
pip install -U cohere
```

Next, import the library and create a client.

#### Cohere Platform

**`PYTHON`**

```python PYTHON
import cohere

co = cohere.ClientV2(
    "COHERE_API_KEY"
)  # Get your free API key here: https://dashboard.cohere.com/api-keys
```

#### Private Deployment

**`PYTHON`**

```python PYTHON
import cohere

co = cohere.ClientV2(
    api_key="",  # Leave this blank
    base_url="<YOUR_DEPLOYMENT_URL>",
)
```

#### Bedrock

**`PYTHON`**

```python PYTHON
import cohere

co = cohere.BedrockClientV2(
    aws_region="AWS_REGION",
    aws_access_key="AWS_ACCESS_KEY_ID",
    aws_secret_key="AWS_SECRET_ACCESS_KEY",
    aws_session_token="AWS_SESSION_TOKEN",
)

# Get the model name: https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html
```

#### SageMaker

**`PYTHON`**

```python PYTHON
import cohere

co = cohere.SagemakerClientV2(
    aws_region="AWS_REGION",
    aws_access_key="AWS_ACCESS_KEY_ID",
    aws_secret_key="AWS_SECRET_ACCESS_KEY",
    aws_session_token="AWS_SESSION_TOKEN",
)
```

#### Azure AI

**`PYTHON`**

```python PYTHON
import cohere

co = cohere.ClientV2(
    api_key="AZURE_API_KEY",
    base_url="AZURE_ENDPOINT",  # example: "https://cohere-command-r-plus-08-2024-xyz.eastus.models.ai.azure.com/"
)
```

## Basic Text Generation

To perform a basic text generation, call the Chat endpoint by passing the `messages` parameter containing the `user` message.

With reasoning models such as Command A+, the response `content` list can include a `thinking` block before the final
`text` block. Iterate over the content items and check each item's `type` instead of assuming `content[0]` is text.
For more information, see the [Reasoning](/docs/reasoning) page.

> **Info**
>
> The `model` parameter definition for private deployments is the same as the Cohere platform, as shown below. Find more details on private deployments usage [here](https://docs.cohere.com/docs/private-deployment-usage#getting-started).

#### Cohere Platform

**`PYTHON`**

```python PYTHON
response = co.chat(
    model="command-a-plus-05-2026",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### Private Deployment

**`PYTHON`**

```python PYTHON
response = co.chat(
    model="command-a-plus-05-2026",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### Bedrock

**`PYTHON`**

```python PYTHON
response = co.chat(
    model="YOUR_MODEL_NAME",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### SageMaker

**`PYTHON`**

```python PYTHON
response = co.chat(
    model="YOUR_ENDPOINT_NAME",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### Azure AI

**`PYTHON`**

```python PYTHON
response = co.chat(
    model="model",  # Pass a dummy string
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

```mdx wordWrap
"Excited to be part of the Co1t team, I'm [Your Name], a [Your Role], passionate about [Your Area of Expertise] and looking forward to contributing to the company's success."
```

## State Management

To maintain the state of a conversation, such as for building chatbots, append a sequence of `user` and `assistant` messages to the `messages` list. You can also include a `system` message at the start of the list to set the context of the conversation.

#### Cohere Platform

**`PYTHON`**

```python PYTHON
messages = [
    {
        "role": "system",
        "content": "You respond in concise sentences.",
    },
    {"role": "user", "content": "Hello"},
]

# User sends a message

response = co.chat(
    model="command-a-plus-05-2026",
    messages=messages,
)

# The model responds

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print(
            "text:", content_item.text
        )  # Hi, how can I help you today?

# Append the model's response to the messages

messages.append(response.message)

# append another user message to the messages

messages.append(
    {
        "role": "user",
        "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
    }
)

# get the model's second response

response = co.chat(
    model="command-a-plus-05-2026",
    messages=messages,
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)

```

#### Private Deployment

**`PYTHON`**

```python PYTHON
messages = [
    {
        "role": "system",
        "content": "You respond in concise sentences.",
    },
    {"role": "user", "content": "Hello"},
]

# User sends a message
response = co.chat(
    model="command-a-plus-05-2026",
    messages=messages,
)

# The model responds
for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print(
            "text:", content_item.text
        )  # Hi, how can I help you today?

# Append the model's response to the messages
messages.append(response.message)

# append another user message to the messages
messages.append(
    {
        "role": "user",
        "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
    }
)

# get the model's second response
response = co.chat(
    model="command-a-plus-05-2026",
    messages=messages,
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### Bedrock

**`PYTHON`**

```python PYTHON
messages = [
    {
        "role": "system",
        "content": "You respond in concise sentences.",
    },
    {"role": "user", "content": "Hello"},
]

# User sends a message

response = co.chat(
    model="YOUR_MODEL_NAME",
    messages=messages,
)

# The model responds

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print(
            "text:", content_item.text
        )  # Hi, how can I help you today?

# Append the model's response to the messages

messages.append(response.message)

# append another user message to the messages

messages.append(
    {
        "role": "user",
        "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
    }
)

# get the model's second response

response = co.chat(
    model="YOUR_MODEL_NAME",
    messages=messages,
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### SageMaker

**`PYTHON`**

```python PYTHON
messages = [
    {
        "role": "system",
        "content": "You respond in concise sentences.",
    },
    {"role": "user", "content": "Hello"},
]

# User sends a message
response = co.chat(
    model="YOUR_ENDPOINT_NAME",
    messages=messages,
)

# The model responds
for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print(
            "text:", content_item.text
        )  # Hi, how can I help you today?

# Append the model's response to the messages
messages.append(response.message)

# append another user message to the messages
messages.append(
    {
        "role": "user",
        "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
    }
)

# get the model's second response
response = co.chat(
    model="YOUR_ENDPOINT_NAME",
    messages=messages,
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

#### Azure AI

**`PYTHON`**

```python PYTHON
messages = [
    {
        "role": "system",
        "content": "You respond in concise sentences.",
    },
    {"role": "user", "content": "Hello"},
]

# User sends a message

response = co.chat(
    model="model",  # Pass a dummy string
    messages=messages,
)

# The model responds

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print(
            "text:", content_item.text
        )  # Hi, how can I help you today?

# Append the model's response to the messages

messages.append(response.message)

# append another user message to the messages

messages.append(
    {
        "role": "user",
        "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
    }
)

# get the model's second response

response = co.chat(
    model="model",  # Pass a dummy string
    messages=messages,
)

for content_item in response.message.content:
    if content_item.type == "thinking":
        print("thinking:", content_item.thinking)
    if content_item.type == "text":
        print("text:", content_item.text)
```

```mdx wordWrap
"Excited to join the team at Co1t, looking forward to contributing my skills and collaborating with everyone!"
```

## Streaming

To stream text generation, call the Chat endpoint using `chat_stream` instead of `chat`. This returns a generator that yields `chunk` objects, which you can access the generated text from.

#### Cohere Platform

**`PYTHON`**

```python PYTHON
res = co.chat_stream(
    model="command-a-plus-05-2026",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for chunk in res:
    if chunk.type == "content-delta":
        if chunk.delta.message.content.thinking:
            print(chunk.delta.message.content.thinking, end="")
        if chunk.delta.message.content.text:
            print(chunk.delta.message.content.text, end="")
```

#### Private Deployment

**`PYTHON`**

```python PYTHON
res = co.chat_stream(
    model="command-a-plus-05-2026",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for chunk in res:
    if chunk.type == "content-delta":
        if chunk.delta.message.content.thinking:
            print(chunk.delta.message.content.thinking, end="")
        if chunk.delta.message.content.text:
            print(chunk.delta.message.content.text, end="")
```

#### Bedrock

**`PYTHON`**

```python PYTHON
res = co.chat_stream(
    model="YOUR_MODEL_NAME",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for chunk in res:
    if chunk.type == "content-delta":
        if chunk.delta.message.content.thinking:
            print(chunk.delta.message.content.thinking, end="")
        if chunk.delta.message.content.text:
            print(chunk.delta.message.content.text, end="")
```

#### SageMaker

**`PYTHON`**

```python PYTHON
res = co.chat_stream(
    model="YOUR_ENDPOINT_NAME",
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for chunk in res:
    if chunk.type == "content-delta":
        if chunk.delta.message.content.thinking:
            print(chunk.delta.message.content.thinking, end="")
        if chunk.delta.message.content.text:
            print(chunk.delta.message.content.text, end="")
```

#### Azure AI

**`PYTHON`**

```python PYTHON
res = co.chat_stream(
    model="model",  # Pass a dummy string
    messages=[
        {
            "role": "user",
            "content": "I'm joining a new startup called Co1t today. Could you help me write a one-sentence introduction message to my teammates.",
        }
    ],
)

for chunk in res:
    if chunk.type == "content-delta":
        if chunk.delta.message.content.thinking:
            print(chunk.delta.message.content.thinking, end="")
        if chunk.delta.message.content.text:
            print(chunk.delta.message.content.text, end="")
```

```mdx wordWrap
"Excited to be part of the Co1t team, I'm [Your Name], a [Your Role/Position], looking forward to contributing my skills and collaborating with this talented group to drive innovation and success."
```

## Further Resources

* [Chat endpoint API reference](https://docs.cohere.com/reference/chat)
* [Documentation on text generation](https://docs.cohere.com/docs/introduction-to-text-generation-at-cohere)
* [LLM University module on text generation](https://cohere.com/llmu#text-generation)