> For the complete documentation index, see [llms.txt](https://lazylyrics.gitbook.io/carter-js-v3/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lazylyrics.gitbook.io/carter-js-v3/conversation/interactions.md).

# Interactions

Carter Interactions are at the heart of carter-js

## What is an interaction?

An interaction is an object returned whenever you send a message to your Carter agent. It contains the data CarterAPI returns as well some some extra spice courtesy of carter-js.&#x20;

## What does it look like?

```javascript
CarterInteraction {
  type: String
  id: String
  carterData: CarterData
  url: string
  ok: Boolean
  statusCode: Number
  statusMessage: String
  payload: CarterPayload
  triggeredSkills: CarterSkillInstance[]
  executedSkills: CarterSkillInstance[]
  timeTaken: Number
  isoTimestamp: String
  
  // These properties are extracted from carterData for convenience
  characterName: String
  outputText: String
  outputAudio: String
  forcedBehaviours: ForcedBehaviour[]
}

// For those unfamiliar with typescript, the something[] syntax 
// denotes an array of somethings
```

* **type**: A string denoting which type of interaction this is. Eg "say", "opener", or "personalise"
* **id**: This is a unique ID generated by `carter-js` for each interaction. It is used to track the interaction through logging, and also for identifying interactions in the conversation history.
* **carterData:** This is the data returned by the Carter API. To avoid replicating information, you can find an explanation of this data [here](https://carterapi.gitbook.io/carter-docs/api/api-response). In the event of an invalid response from the Carter endpoint, this property will be null.
* **url:** The url the request was made to, for information and debugging purposes.
* **ok:** Returns true if the response code is 2xx. More details [here](https://docs.carterlabs.ai/api/chat).
* **statusCode:** The fetch response code.
* **statusMessage:** A message related to the status code.
* **payload:** The payload which was sent to Carter.
* **triggeredSkills**: An array of [skills](/carter-js-v3/skills/basics.md) that were triggered by Carter, but who's actions were not executed.&#x20;
* **executedSkills**: An array of [skills](/carter-js-v3/skills/basics.md) that were triggered by Carter and who's actions were automatically executed on detection.
* **outputText**: The response text, extracted from `carterData`
* **outputAudio**: The response audio url if present, extracted from `carterData`

`outputText` and `outputAudio` **are the recommended way to access the responses as these will remain the same regardless of API changes, helping to maintain backwards compatibility in your projects.**

`ok` and `statusCode` are extracted straight from the fetch response
