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

# Send Interaction

You can use this endpoint to send a user interaction in simple AI systems. This approach is suggested for non-agentic systems, where the response of the ai system is generated in a single call to the LLM, without using any external tools or resources.

Please refer to the [interaction with trace](/tracking/api-reference/events/post-events-interaction-with-trace-v2) endpoint for a more comprehensive way to track interactions.

<ParamField body="interaction" type="object" required>
  The interaction to send to the nebuly platform.

  <Expandable title="properties">
    <ParamField path="conversation_id" type="string" initialValue="conversation_id" required>
      The conversation id of the interaction. This parameter can be used to enforce interactions to be grouped by a specific conversation.
    </ParamField>

    <ParamField path="output" type="string" initialValue="output" required>
      The LLM output in the interaction (the text shown to the user as assistant response).
    </ParamField>

    <ParamField path="time_start" type="string" initialValue="2024-01-01" required>
      The start time of the call to the LLM. You can approximate this to the time when the user sends the interaction. The accepted format is the `ISO 8601`.

      Example: `2023-12-07T15:00:00.000Z`
    </ParamField>

    <ParamField path="time_end" type="string" initialValue="2024-01-01" required>
      The end time of the call to the LLM. This is when the user receives the full answer from the model. The accepted format is the `ISO 8601`.

      Example: `2023-12-07T15:00:10.000Z`
    </ParamField>

    <ParamField path="messages" type="array" required>
      A list of messages from the conversation so far, following the same format used by OpenAI Chat Completion endpoints.

      Each message has two required fields:

      * `role`: the role of who is sending the message. Possible values are: **system**, **user**, **assistant**, **tool**.
      * `content`: the content of the message.

      The messages in the list should be ordered according to the conversation's sequence, from the oldest message to the most recent.

      Example:

      ```
      "messages": [
          {
              "role": "system",
              "content": "This is a system prompt"
          },
          {
              "role": "user",
              "content": "What's the weather like in Turin?"
          },
          {
              "role": "assistant",
              "content": "The weather is currently rainy in Turin."
          },
          {
              "role": "user",
              "content": "What's the weather like in Rome?"
          }
      ]
      ```
    </ParamField>

    <ParamField path="end_user" type="string" required>
      An id or username uniquely identifying the end-user. We recommend hashing their username or email address, in order to avoid sending us any identifying information.
    </ParamField>

    <ParamField path="rag_sources" type="array<string>">
      The RAG sources used to produce the output. Note that this is an array of strings so only the name of the RAG source should be given.
      If you are interested in tracking also the input-output of the RAG source please refer to the [interaction with trace](/tracking/api-reference/events/post-events-interaction-with-trace) endpoint.
    </ParamField>

    <ParamField path="model" type="string" required>
      The LLM model you are using. Please note that this is needed if you want to visualize the cost of your requests. Now we support costs only for OpenAI models, cost of other providers coming soon.
    </ParamField>

    <ParamField path="tags" type="dict<string, string>">
      Tag user interactions by adding key-value pairs using this parameter. Each key represents the tag name, and the corresponding value is the tag value.

      For example, if you want to tag an interaction with the model version used to reply to user input, provide it as an argument for nebuly\_tags, e.g. `{"version" => "v1.0.0"}`. You have the flexibility to define custom tags, making them available as potential filters on the Nebuly platform.
    </ParamField>

    <ParamField path="feature_flag" type="string[]">
      This field is used for the AB testing feature. Please refer to its documentation for further details.
    </ParamField>

    <ParamField path="feedback_actions" type="object[]">
      A list of feedback actions provided by the end-user during or after the interaction.

      Each object in the array can contain:

      * `slug`: (string) – the type of action. Accepted values include:
        * `thumbs_up`
        * `thumbs_down`
        * `copy_input`
        * `copy_output`
        * `paste`
        * `comment`
        * `regenerate`
        * `edit`
        * `rating`
      * `text`: (string, optional) – textual feedback associated with the action (if applicable).
      * `value`: (number, optional) – only used for the `rating` action to capture a numerical score.

      **Example:**

      ```json theme={null}
      "feedback_actions": [
        {
          "slug": "thumbs_up",
          "text": "Very helpful response!"
        },
        {
          "slug": "comment",
          "text": "Can you explain more about this?"
        },
        {
          "slug": "rating",
          "value": 4,
          "text": "Pretty good!"
        },
        {
          "slug": "regenerate"
        }
      ]
      ```
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="anonymize" type="boolean" default="true">
  Boolean flag to anonymize your data
</ParamField>

<ParamField path="hide_content" type="boolean" default="false">
  Boolean flag to hide the content of the interaction (input and output) in the Nebuly platform. If set to true, only metadata and traces will be visible.
</ParamField>
