# Create a conversation item

```{raw} html
<div class="mo-api-page-show-toc" aria-hidden="true"></div>
```

Add an item summary containing a type, role, and status to a local conversation.

```text
POST https://token.moi.matrixorigin.cn/v1/conversations/{conversation_id}/items
```

## Before you begin

1. Prepare a [personal access token](../../../../guides/billing/credentials.md#personal-access-token) with Genesis access.
2. Use the credential used to [Create a conversation](create-conversation.md), and choose a local conversation that has not been deleted or bound to an upstream model.

## Request example

Replace `$GENESIS_ACCESS_TOKEN` and `$CONVERSATION_ID` with your personal access token and the selected conversation ID.

```bash
curl -X POST "https://token.moi.matrixorigin.cn/v1/conversations/$CONVERSATION_ID/items" \
  -H "Authorization: Bearer $GENESIS_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
  "type": "message",
  "role": "user"
}'
```

## Path parameters

::::{div} mo-api-parameter-table

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `conversation_id` | string | Yes | The `id` returned when creating the conversation. |

::::

## Request body

Local items retain summaries such as type, role, and status. Store message bodies in your application.

::::{div} mo-api-parameter-table

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `type` | string | No | Item type, such as `message`. |
| `role` | string | No | Item role, such as `user`. |
| `status` | string | No | Item status; defaults to `active` when omitted. |

::::

## Successful response

A successful request returns the newly created item summary.

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} Response example

```json
{
  "id": "$ITEM_ID",
  "object": "conversation.item",
  "conversation_id": "$CONVERSATION_ID",
  "type": "message",
  "role": "user",
  "status": "active",
  "created_at": 1780000000
}
```

:::::
:::::{tab-item} Fields

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | Item identifier. |
| `object` | string | Always `conversation.item`. |
| `conversation_id` | string | Identifier of the conversation containing this item. |
| `type` | string | Item type, such as `message`. |
| `role` | string | Item role, such as `user`. |
| `status` | string | Item status; defaults to `active` when omitted. |
| `created_at` | integer | Creation time as a Unix timestamp in seconds. |

:::::
::::::
:::::::

## Error response

The request returns `404` when the resource is missing, deleted, or inaccessible to the current credential.

:::::::{div} mo-api-tabs mo-api-response-tabs
::::::{tab-set}
:::::{tab-item} Response example

```json
{
  "error": {
    "message": "conversation not found",
    "type": "conversation_not_found",
    "code": "conversation_not_found"
  }
}
```

:::::
:::::{tab-item} Fields

| Field | Type | Description |
| --- | --- | --- |
| `error` | object | Error details. |
| `error.message` | string | Error description. |
| `error.type` | string | Error type. |
| `error.code` | string | Error code. |

:::::
::::::
:::::::

## Next steps

Keep the returned `id` to [Retrieve a conversation item](get-item.md) or [Delete a conversation item](delete-item.md).
