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

# Import conversational text data

> How to import conversational text data and sample import formats.

## Specifications

File format: JSON in [our conversation format](#sample-conversation-json) Encoding: UTF-8 (Note: The Editor does not process any special character sequences like HTML Entities, Unicode Escape Sequence, or colon emoji aliases.)

Import methods:

* IAM Delegated Access
* Signed URLs (`https` URLs only)

When importing conversation or thread data to Labelbox, your JSON file should include the following information for each data row.

| Parameter         | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `row_data`        | Yes      | `https` path to a cloud-hosted conversational text JSON file. See the section below for details on our conversation format. For IAM Delegated Access, this URL must be in [virtual-hosted-style format](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#virtual-hosted-style-access). For older regions, your S3 bucket may be in `https://<bucket-name>.s3.<region>.amazonaws.com/<key>` format. If your object URLs are formatted this way, make sure they are in the virtual-hosted-style format before importing. |
| `global_key`      | No       | Unique user-generated file name or ID for the file. [Global keys](/reference/data-row-global-keys) are enforced to be unique in your org. Data rows will not be imported if their global keys are duplicated to existing data rows.                                                                                                                                                                                                                                                                                                             |
| `media_type`      | No       | `"CONVERSATIONAL"` (optional media type to provide better validation and error messaging)                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `metadata_fields` | No       | See [Metadata](/docs/datarow-metadata).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |

## Import format

<CodeGroup>
  ```json json theme={null}
  [
      {
        "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_1.json",
        "global_key": "global_key_1"
      },
      {
          "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_2.json",
          "global_key": "global_key_2"
      },
      {
          "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_3.json",
          "global_key": "global_key_3"
      }
  ]
  ```
</CodeGroup>

## Python example

<CodeGroup>
  ```python Python theme={null}
  # Generate dummy global keys
  global_key_1 = str(uuid.uuid4())
  global_key_2 = str(uuid.uuid4())
  global_key_3 = str(uuid.uuid4())

  # Create a dataset
  dataset = client.create_dataset(
      name="pairwise_demo_"+str(uuid.uuid4()),
      iam_integration=None
  )
  # Upload data rows
  task = dataset.create_data_rows([
      {
        "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_1.json",
        "global_key": global_key_1
      },
      {
          "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_2.json",
          "global_key": global_key_2
      },
      {
          "row_data": "https://storage.googleapis.com/labelbox-datasets/conversational-sample-data/pairwise_shopping_3.json",
          "global_key": global_key_3
      }
    ])
  task.wait_till_done()
  print("Errors:",task.errors)
  print("Failed data rows:", task.failed_data_rows)
  ```
</CodeGroup>

## Conversation JSON

<Info>
  ### Max conversation size

  For conversations, we support up to:

  * 250 messages.
  * 10000 character limit per message
</Info>

| Parameter  | Required | Description                                                                                                                                                                                                                                                     |
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`     | Yes      | This should always be populated with `application/vnd.labelbox.conversational`                                                                                                                                                                                  |
| `version`  | Yes      | This should be populated with `1`                                                                                                                                                                                                                               |
| `messages` | Yes      | This is the array of [Message Objects](/reference/import-conversational-text-data#message-object) that makes up the conversation. Please see below for the fields that must be included for each message. The current maximum is 250 messages in a conversation |

### Message object

| Parameter       | Required | Description                                                                                                                                                                                                                                                                                                                                                                               |
| --------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `messageId`     | Yes      | This is the external ID for the message. This must be unique within the conversation file and will be returned on the exports to help match annotations to message.                                                                                                                                                                                                                       |
| `timestampUsec` | No       | The unix epoch timestamp of the message.                                                                                                                                                                                                                                                                                                                                                  |
| `content`       | Yes      | This field contains the text string of the conversation. This must be under 10000 characters.                                                                                                                                                                                                                                                                                             |
| `user`          | Yes      | This field is used to describe the person that is speaking. The user defined by two fields: userId and name. The name field is used to show the user name in the editor. `{ "userId": "ID", "name": "Name" }`                                                                                                                                                                             |
| `align`         | No       | This field Controls the alignment and indentation of the text string in the editor. If left blank, we will default to `left`. Options:`left``0-left-indent``1-left-indent``2-left-indent``3-left-indent``4-left-indent``5-left-indent``right``0-right-indent``1-right-indent``2-right-indent``3-right-indent``4-right-indent``5-right-indent`                                             |
| `canLabel`      | Yes      | This field determines if the text string can be annotated as a part of the editor workflow. If set to `true`, the editor will show a white background for the text string and the user will be able to annotated entities on the content string. If set to `false`, the editor will show a grey background for the text and the user will **not** be able to annotate the content string. |

## Sample Conversation JSON

<Info>
  ### Note

  You can't upload the following file from the web interface directly. You must use an import file as described in [Import format](/reference/import-conversational-text-data#import-format)
</Info>

<CodeGroup>
  ```json Sample conversation json expandable theme={null}
  {
    "type": "application/vnd.labelbox.conversational",
    "version": 1,
    "messages": [
      {
        "messageId": "message-0",
        "timestampUsec": 1530718491,
        "content": "I love iphone! i just bought new iphone! 🥰 📲",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      },
      {
        "messageId": "message-1",
        "timestampUsec": 1530718503,
        "content": "Thats good for you, i'm not very into new tech",
        "user": {
          "userId": "User 00686",
          "name": "User"
        },
        "align": "right",
        "canLabel": true
      },
      {
        "messageId": "message-2",
        "timestampUsec": 1530718516,
        "content": "I am a college student and i am a college student 👩🏻‍🏫",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      },
      {
        "messageId": "message-3",
        "timestampUsec": 1530718528,
        "content": "I am go to gym and live on donations 🏋🏿‍♀️",
        "user": {
          "userId": "User 00686",
          "name": "User"
        },
        "align": "right",
        "canLabel": true
      },
      {
        "messageId": "message-4",
        "timestampUsec": 1530718540,
        "content": "I am a vegan and i am in the midwest 🌱",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      },
      {
        "messageId": "message-5",
        "timestampUsec": 1530718553,
        "content": "So vegan... i have dogs maybe i should told then that they may eat cheap salads insted of meat 🐩",
        "user": {
          "userId": "User 00686",
          "name": "User"
        },
        "align": "right",
        "canLabel": true
      },
      {
        "messageId": "message-6",
        "timestampUsec": 1530718565,
        "content": "I would not mind having them in the office that would be hard for me",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      },
      {
        "messageId": "message-7",
        "timestampUsec": 1530718578,
        "content": "Dogs or vegan in office?",
        "user": {
          "userId": "User 00686",
          "name": "User"
        },
        "align": "right",
        "canLabel": true
      },
      {
        "messageId": "message-8",
        "timestampUsec": 1530718590,
        "content": "I am a vegetarian so i am vegan",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      },
      {
        "messageId": "message-9",
        "timestampUsec": 1530718603,
        "content": "Strange answer",
        "user": {
          "userId": "User 00686",
          "name": "User"
        },
        "align": "right",
        "canLabel": true
      },
      {
        "messageId": "message-10",
        "timestampUsec": 1530718615,
        "content": "I guess i just do not know what to ps4 experience with.",
        "user": {
          "userId": "Bot 002",
          "name": "Bot"
        },
        "align": "left",
        "canLabel": false
      }
    ]
  }
  ```
</CodeGroup>

## Sample conversations in the editor view

<Frame caption="This is an example of a conversation using left and right alignment">
  <img src="https://mintcdn.com/labelbox-1db23ff4/kk7T7t8LC7-TvqwP/images/reference/6faae2b-Text_Sample_1.png?fit=max&auto=format&n=kk7T7t8LC7-TvqwP&q=85&s=201266ece76b5674be5b44da35676633" width="1496" height="1488" data-path="images/reference/6faae2b-Text_Sample_1.png" />
</Frame>

<Frame caption="This is an example of a conversation using left indentation">
  <img src="https://mintcdn.com/labelbox-1db23ff4/kk7T7t8LC7-TvqwP/images/reference/f4b0111-Text_Sample_2.png?fit=max&auto=format&n=kk7T7t8LC7-TvqwP&q=85&s=86a35ff6bbfa41633c7c13dfc80612af" width="1496" height="1488" data-path="images/reference/f4b0111-Text_Sample_2.png" />
</Frame>
