/v1/chatChat API (v1)Generates a text response to a user message. To learn how to use the Chat API and RAG follow our Text Generation guides.
Parameters
X-Client-NamestringheaderThe name of the project that is making the request.
AcceptsstringheaderPass text/event-stream to receive the streamed response as server-sent events. The default is `\n` delimited events.
Request body
application/json
chat_historyarray of valueA list of previous messages between the user and the model, giving the model conversational context for responding to the user's `message`. Each item represents a single message in the chat history, excluding the current user turn. It has two properties: `role` and `message`. The `role` identifies the sender (`CHATBOT`, `SYSTEM`, or `USER`), while the `message` contains the text content. The chat_history parameter should not be used for `SYSTEM` messages in most cases. Instead, to add a `SYSTEM` role message at the beginning of a conversation, the `preamble` parameter should be used. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
Show child attributes
Show array items
oneOf · 2 options
Represents a single message in the chat history, excluding the current user turn. It has two properties: `role` and `message`. The `role` identifies the sender (`CHATBOT`, `SYSTEM`, or `USER`), while the `message` contains the text content. The chat_history parameter should not be used for `SYSTEM` messages in most cases. Instead, to add a `SYSTEM` role message at the beginning of a conversation, the `preamble` parameter should be used.
messagestringrequiredContents of the chat message.
rolestringrequiredOne of `CHATBOT`, `SYSTEM`, `TOOL` or `USER` to identify who the message is coming from.
tool_callsarray of objectShow child attributes
Show array items
Contains the tool calls generated by the model. Use it to invoke your tools.
namestringrequiredName of the tool to call.
parametersobjectrequiredThe name and value of the parameters to use when invoking a tool.
Represents tool result in the chat history.
rolestringrequiredOne of `CHATBOT`, `SYSTEM`, `TOOL` or `USER` to identify who the message is coming from.
tool_resultsarray of objectShow child attributes
Show array items
Contains the tool calls generated by the model. Use it to invoke your tools.
outputsarray of objectrequiredShow child attributes
citation_qualitystringDefaults to `"enabled"`. Citations are enabled by default for models that support it, but can be turned off by setting `"type": "disabled"`. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
connectorsarray of objectAccepts `{"id": "web-search"}`, and/or the `"id"` for a custom [connector](https://docs.cohere.com/docs/connectors), if you've [created](https://docs.cohere.com/v1/docs/creating-and-deploying-a-connector) one. When specified, the model's reply will be enriched with information found by querying each of the connectors (RAG). Compatible Deployments: Cohere Platform
Show child attributes
Show array items
The connector used for fetching documents.
continue_on_failurebooleanDefaults to `false`. When `true`, the request will continue if this connector returned an error.
idstringrequiredThe identifier of the connector.
optionsobjectProvides the connector with different settings at request time. The key/value pairs of this object are specific to each connector. For example, the connector `web-search` supports the `site` option, which limits search results to the specified domain.
user_access_tokenstringWhen specified, this user access token will be passed to the connector in the Authorization header instead of the Cohere generated one.
conversation_idstringAn alternative to `chat_history`. Providing a `conversation_id` creates or resumes a persisted conversation with the specified ID. The ID can be any non empty string. Compatible Deployments: Cohere Platform
documentsarray of objectA list of relevant documents that the model can cite to generate a more accurate reply. Each document is a string-string dictionary. Example: ``` [ { "title": "Tall penguins", "text": "Emperor penguins are the tallest." }, { "title": "Penguin habitats", "text": "Emperor penguins only live in Antarctica." }, ] ``` Keys and values from each document will be serialized to a string and passed to the model. The resulting generation will include citations that reference some of these documents. Some suggested keys are "text", "author", and "date". For better generation quality, it is recommended to keep the total word count of the strings in the dictionary to under 300 words. An `id` field (string) can be optionally supplied to identify the document in the citations. This field will not be passed to the model. An `_excludes` field (array of strings) can be optionally supplied to omit some key-value pairs from being shown to the model. The omitted fields will still show up in the citation object. The "_excludes" field will not be passed to the model. See ['Document Mode'](https://docs.cohere.com/docs/retrieval-augmented-generation-rag#document-mode) in the guide for more information. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
Show child attributes
Show array items
Relevant information that could be used by the model to generate a more accurate reply. The contents of each document are generally short (under 300 words), and are passed in the form of a dictionary of strings. Some suggested keys are "text", "author", "date". Both the key name and the value will be passed to the model.
idstringUnique identifier for this document.
force_single_stepbooleanForces the chat to be single step. Defaults to `false`.
frequency_penaltynumberDefaults to `0.0`, min value of `0.0`, max value of `1.0`. Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
kintegerEnsures only the top `k` most likely tokens are considered for generation at each step. Defaults to `0`, min value of `0`, max value of `500`. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
max_input_tokensintegerThe maximum number of input tokens to send to the model. If not specified, `max_input_tokens` is the model's context length limit minus a small buffer. Input will be truncated according to the `prompt_truncation` parameter. Compatible Deployments: Cohere Platform
max_tokensintegerThe maximum number of tokens the model will generate as part of the response. Note: Setting a low value may result in incomplete generations. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
messagestringrequiredText input for the model to respond to. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
modelstringThe name of a compatible [Cohere model](https://docs.cohere.com/docs/models) or the ID of a [fine-tuned](https://docs.cohere.com/docs/chat-fine-tuning) model. Compatible Deployments: Cohere Platform, Private Deployments
pnumberEnsures that only the most likely tokens, with total probability mass of `p`, are considered for generation at each step. If both `k` and `p` are enabled, `p` acts after `k`. Defaults to `0.75`. min value of `0.01`, max value of `0.99`. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
preamblestringWhen specified, the default Cohere preamble will be replaced with the provided one. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style, and use the `SYSTEM` role. The `SYSTEM` role is also used for the contents of the optional `chat_history=` parameter. When used with the `chat_history=` parameter it adds content throughout a conversation. Conversely, when used with the `preamble=` parameter it adds content at the start of the conversation only. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
presence_penaltynumberDefaults to `0.0`, min value of `0.0`, max value of `1.0`. Used to reduce repetitiveness of generated tokens. Similar to `frequency_penalty`, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
prompt_truncationstringDefaults to `AUTO` when `connectors` are specified and `OFF` in all other cases. Dictates how the prompt will be constructed. With `prompt_truncation` set to "AUTO", some elements from `chat_history` and `documents` will be dropped in an attempt to construct a prompt that fits within the model's context length limit. During this process the order of the documents and chat history will be changed and ranked by relevance. With `prompt_truncation` set to "AUTO_PRESERVE_ORDER", some elements from `chat_history` and `documents` will be dropped in an attempt to construct a prompt that fits within the model's context length limit. During this process the order of the documents and chat history will be preserved as they are inputted into the API. With `prompt_truncation` set to "OFF", no elements will be dropped. If the sum of the inputs exceeds the model's context length limit, a `TooManyTokens` error will be returned. Compatible Deployments: - AUTO: Cohere Platform Only - AUTO_PRESERVE_ORDER: Azure, AWS Sagemaker/Bedrock, Private Deployments
raw_promptingbooleanWhen enabled, the user's prompt will be sent to the model without any pre-processing. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
response_formatvalueConfiguration for forcing the model output to adhere to the specified format. Supported on [Command R 03-2024](https://docs.cohere.com/docs/command-r), [Command R+ 04-2024](https://docs.cohere.com/docs/command-r-plus) and newer models. The model can be forced into outputting JSON objects (with up to 5 levels of nesting) by setting `{ "type": "json_object" }`. A [JSON Schema](https://json-schema.org/) can optionally be provided, to ensure a specific structure. **Note**: When using `{ "type": "json_object" }` your `message` should always explicitly instruct the model to generate a JSON (eg: _"Generate a JSON ..."_) . Otherwise the model may end up getting stuck generating an infinite stream of characters and eventually run out of context length. **Limitation**: The parameter is not supported in RAG mode (when any of `connectors`, `documents`, `tools`, `tool_results` are provided).
Show child attributes
oneOf · 2 options
Text Response
typestringrequiredDefaults to `"text"`. When set to `"json_object"`, the model's output will be a valid JSON Object.
JSON Object Response
schemaobjectA JSON schema object that the output will adhere to. There are some restrictions we have on the schema, refer to [our guide](https://docs.cohere.com/docs/structured-outputs-json#schema-constraints) for more information. Example (required name and age object): ```json { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer"} }, "required": ["name", "age"] } ``` **Note**: This field must not be specified when the `type` is set to `"text"`.
typestringrequiredDefaults to `"text"`. When set to `"json_object"`, the model's output will be a valid JSON Object.
safety_modevalueUsed to select the [safety instruction](https://docs.cohere.com/docs/safety-modes) inserted into the prompt. Defaults to `CONTEXTUAL`. When `NONE` is specified, the safety instruction will be omitted. Safety modes are not yet configurable in combination with `tools`, `tool_results` and `documents` parameters. **Note**: This parameter is only compatible newer Cohere models, starting with [Command R 08-2024](https://docs.cohere.com/docs/command-r#august-2024-release) and [Command R+ 08-2024](https://docs.cohere.com/docs/command-r-plus#august-2024-release). **Note**: `command-r7b-12-2024` and newer models only support `"CONTEXTUAL"` and `"STRICT"` modes. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
search_queries_onlybooleanDefaults to `false`. When `true`, the response will only contain a list of generated search queries, but no search will take place, and no reply from the model to the user's `message` will be generated. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
seedintegerIf specified, the backend will make a best effort to sample tokens deterministically, such that repeated requests with the same seed and parameters should return the same result. However, determinism cannot be totally guaranteed. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
stop_sequencesarray of stringA list of up to 5 strings that the model will use to stop generation. If the model generates a string that matches any of the strings in the list, it will stop generating tokens and return the generated text up to that point not including the stop sequence. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
Show child attributes
streambooleanDefaults to `false`. When `true`, the response will be a JSON stream of events. The final event will contain the complete response, and will have an `event_type` of `"stream-end"`. Streaming is beneficial for user interfaces that render the contents of the response piece by piece, as it gets generated. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
temperaturenumber · floatDefaults to `0.3`. A non-negative float that tunes the degree of randomness in generation. Lower temperatures mean less random generations, and higher temperatures mean more random generations. Randomness can be further maximized by increasing the value of the `p` parameter. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
tool_resultsarray of objectA list of results from invoking tools recommended by the model in the previous chat turn. Results are used to produce a text response and will be referenced in citations. When using `tool_results`, `tools` must be passed as well. Each tool_result contains information about how it was invoked, as well as a list of outputs in the form of dictionaries. **Note**: `outputs` must be a list of objects. If your tool returns a single object (eg `{"status": 200}`), make sure to wrap it in a list. ``` tool_results = [ { "call": { "name": <tool name>, "parameters": { <param name>: <param value> } }, "outputs": [{ <key>: <value> }] }, ... ] ``` **Note**: Chat calls with `tool_results` should not be included in the Chat history to avoid duplication of the message text. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
Show child attributes
toolsarray of objectA list of available tools (functions) that the model may suggest invoking before producing a text response. When `tools` is passed (without `tool_results`), the `text` field in the response will be `""` and the `tool_calls` field in the response will be populated with a list of tool calls that need to be made. If no calls need to be made, the `tool_calls` array will be empty. Compatible Deployments: Cohere Platform, Azure, AWS Sagemaker/Bedrock, Private Deployments
Show child attributes
Show array items
descriptionstringrequiredThe description of what the tool does, the model uses the description to choose when and how to call the function.
namestringrequiredThe name of the tool to be called. Valid names contain only the characters `a-z`, `A-Z`, `0-9`, `_` and must not begin with a digit.
parameter_definitionsobjectThe input parameters of the tool. Accepts a dictionary where the key is the name of the parameter and the value is the parameter spec. Valid parameter names contain only the characters `a-z`, `A-Z`, `0-9`, `_` and must not begin with a digit. ``` { "my_param": { "description": <string>, "type": <string>, // any python data type, such as 'str', 'bool' "required": <boolean> } } ```
{
"chat_history": [
{
"message": "string",
"role": "CHATBOT",
"tool_calls": [
{
"name": "string",
"parameters": {
"additionalProp1": null
}
}
]
}
],
"citation_quality": "ACCURATE",
"connectors": [
{
"continue_on_failure": true,
"id": "string",
"options": {},
"user_access_token": "string"
}
],
"conversation_id": "string",
"documents": [
{
"id": "string"
}
],
"force_single_step": true,
"frequency_penalty": 0,
"k": 0,
"max_input_tokens": 0,
"max_tokens": 0,
"message": "string",
"model": "string",
"p": 0.75,
"preamble": "string",
"presence_penalty": 0,
"prompt_truncation": "AUTO",
"raw_prompting": true,
"response_format": {
"type": "text"
},
"safety_mode": "CONTEXTUAL",
"search_queries_only": true,
"seed": 0,
"stop_sequences": [
"string"
],
"stream": true,
"temperature": 0,
"tool_results": [
{
"call": {
"name": "string",
"parameters": {
"additionalProp1": null
}
},
"outputs": [
{
"additionalProp1": null
}
]
}
],
"tools": [
{
"description": "string",
"name": "string",
"parameter_definitions": {
"additionalProp1": {
"description": "string",
"required": false,
"type": "string"
}
}
}
]
}Responses
oneOf · 2 options
chat_historyarray of valueA list of previous messages between the user and the model, meant to give the model conversational context for responding to the user's `message`.
Show child attributes
citationsarray of objectInline citations for the generated reply.
Show child attributes
Show array items
A section of the generated reply which cites external knowledge.
document_idsarray of stringrequiredIdentifiers of documents cited by this section of the generated reply.
Show child attributes
endintegerrequiredThe index of text that the citation ends after, counting from zero. For example, a generation of `Hello, world!` with a citation on `world` would have an end value of `11`. This is because the citation ends after `d`, which is the eleventh character.
startintegerrequiredThe index of text that the citation starts at, counting from zero. For example, a generation of `Hello, world!` with a citation on `world` would have a start value of `7`. This is because the citation starts at `w`, which is the seventh character.
textstringrequiredThe text of the citation. For example, a generation of `Hello, world!` with a citation of `world` would have a text value of `world`.
typestringThe type of citation which indicates what part of the response the citation is for.
documentsarray of objectDocuments seen by the model when generating the reply.
Show child attributes
finish_reasonstringgeneration_idstring · uuidUnique identifier for the generated reply. Useful for submitting feedback.
is_search_requiredbooleanDenotes that a search for documents is required during the RAG flow.
metaobjectShow child attributes
api_versionobjectShow child attributes
is_deprecatedbooleanis_experimentalbooleanversionstringrequiredbilled_unitsobjectShow child attributes
classificationsnumberThe number of billed classifications units.
image_tokensnumberThe number of billed image tokens.
imagesnumberThe number of billed images.
input_tokensnumberThe number of billed input tokens.
output_tokensnumberThe number of billed output tokens.
pagesnumberThe number of billed pages parsed.
search_unitsnumberThe number of billed search units.
cached_tokensnumberThe number of prompt tokens that hit the inference cache.
tokensobjectShow child attributes
input_tokensnumberThe number of tokens used as input to the model.
output_tokensnumberThe number of tokens produced by the model.
warningsarray of stringShow child attributes
response_idstring · uuidUnique identifier for the response.
search_queriesarray of objectGenerated search queries, meant to be used as part of the RAG flow.
Show child attributes
Show array items
The generated search query. Contains the text of the query and a unique identifier for the query.
generation_idstring · uuidrequiredUnique identifier for the generated search query. Useful for submitting feedback.
textstringrequiredThe text of the search query.
search_resultsarray of objectDocuments retrieved from each of the conducted searches.
Show child attributes
Show array items
connectorobjectrequiredThe connector used for fetching documents.
Show child attributes
idstringrequiredThe identifier of the connector.
continue_on_failurebooleanWhether a chat request should continue or not if the request to this connector fails.
document_idsarray of stringrequiredIdentifiers of documents found by this search query.
Show child attributes
error_messagestringAn error message if the search failed.
The generated search query. Contains the text of the query and a unique identifier for the query.
textstringrequiredContents of the reply generated by the model.
tool_callsarray of objectShow child attributes
StreamedChatResponse is returned in streaming mode (specified with `stream=True` in the request).
oneOf · 9 options
allOf · 2 options
event_typestringrequiredgeneration_idstring · uuidrequiredUnique identifier for the generated reply. Useful for submitting feedback.
allOf · 2 options
search_queriesarray of objectrequiredGenerated search queries, meant to be used as part of the RAG flow.
Show child attributes
allOf · 2 options
documentsarray of objectDocuments fetched from searches or provided by the user.
Show child attributes
search_resultsarray of objectConducted searches and the ids of documents retrieved from each of them.
Show child attributes
allOf · 2 options
textstringrequiredThe next batch of text generated by the model.
allOf · 2 options
citationsarray of objectrequiredCitations for the generated reply.
Show child attributes
allOf · 2 options
textstringThe text generated related to the tool calls generated
tool_callsarray of objectrequiredShow child attributes
allOf · 2 options
finish_reasonstringrequired- `COMPLETE` - the model sent back a finished reply - `ERROR_LIMIT` - the reply was cut off because the model reached the maximum number of tokens for its context length - `MAX_TOKENS` - the reply was cut off because the model reached the maximum number of tokens specified by the max_tokens parameter - `ERROR` - something went wrong when generating the reply - `ERROR_TOXIC` - the model generated a reply that was deemed toxic
allOf · 2 options
textstringtool_call_deltaobjectrequiredContains the chunk of the tool call generation in the stream.
Show child attributes
indexnumberIndex of the tool call generated
namestringName of the tool call
parametersstringChunk of the tool parameters
textstringChunk of the tool plan text
allOf · 2 options
promptstring{
"chat_history": [
{
"message": "string",
"role": "CHATBOT",
"tool_calls": [
{
"name": "string",
"parameters": {
"additionalProp1": null
}
}
]
}
],
"citations": [
{
"document_ids": [
"string"
],
"end": 0,
"start": 0,
"text": "string",
"type": "PLAN"
}
],
"documents": [
{
"id": "string"
}
],
"finish_reason": "COMPLETE",
"generation_id": "00000000-0000-0000-0000-000000000000",
"is_search_required": true,
"meta": {
"api_version": {
"is_deprecated": true,
"is_experimental": true,
"version": "string"
},
"billed_units": {
"classifications": 0,
"image_tokens": 0,
"images": 0,
"input_tokens": 0,
"output_tokens": 0,
"pages": 0,
"search_units": 0
},
"cached_tokens": 0,
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"warnings": [
"string"
]
},
"response_id": "00000000-0000-0000-0000-000000000000",
"search_queries": [
{
"generation_id": "00000000-0000-0000-0000-000000000000",
"text": "string"
}
],
"search_results": [
{
"connector": {
"id": "string"
},
"continue_on_failure": true,
"document_ids": [
"string"
],
"error_message": "string",
"search_query": {
"generation_id": "00000000-0000-0000-0000-000000000000",
"text": "string"
}
}
],
"text": "string",
"tool_calls": [
{
"name": "string",
"parameters": {
"additionalProp1": null
}
}
]
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}idstringmessagestring{
"id": "string",
"message": "string"
}