ixp
latest
false
- Introduction- Setting up your account
- Balance
- Clusters
- Concept drift
- Coverage
- Datasets
- General fields
- Labels (predictions, confidence levels, label hierarchy, and label sentiment)
- Models
- Streams
- Model Rating
- Projects
- Precision
- Recall
- Annotated and unannotated messages
- Extraction Fields
- Sources
- Taxonomies
- Training
- True and false positive and negative predictions
- Validation
- Messages
 
 
- Access control and administration
- Manage sources and datasets- Understanding the data structure and permissions
- Creating or deleting a data source in the GUI
- Uploading a CSV file into a source
- Preparing data for .CSV upload
- Creating a dataset
- Multilingual sources and datasets
- Enabling sentiment on a dataset
- Amending dataset settings
- Deleting a message
- Deleting a dataset
- Exporting a dataset
- Using Exchange integrations
 
- Model training and maintenance- Understanding labels, general fields, and metadata
- Label hierarchy and best practices
- Comparing analytics and automation use cases
- Turning your objectives into labels
- Overview of the model training process
- Generative Annotation
- Dastaset status
- Model training and annotating best practice
- Training with label sentiment analysis enabled
 
- Understanding data requirements
- Train
- Introduction to Refine
- Precision and recall explained
- Precision and Recall
- How validation works
- Understanding and improving model performance
- Reasons for label low average precision
- Training using Check label and Missed label
- Training using Teach label (Refine)
- Training using Search (Refine)
- Understanding and increasing coverage
- Improving Balance and using Rebalance
- When to stop training your model
 
- Using general fields
 
- Generative extraction
- Using analytics and monitoring
- Automations and Communications Mining™
- Developer- Uploading data
- Downloading data
- Exchange Integration with Azure service user
- Exchange Integration with Azure Application Authentication
- Exchange Integration with Azure Application Authentication and Graph
- Fetching data for Tableau with Python
- Elasticsearch integration
- General field extraction
- Self-hosted Exchange integration
- UiPath® Automation Framework
- UiPath® official activities
 
 
- How machines learn to understand words: a guide to embeddings in NLP
- Prompt-based learning with Transformers
- Efficient Transformers II: knowledge distillation & fine-tuning
- Efficient Transformers I: attention mechanisms
- Deep hierarchical unsupervised intent modelling: getting value without training data
- Fixing annotating bias with Communications Mining™
- Active learning: better ML models in less time
- It's all in the numbers - assessing model performance with metrics
- Why model validation is important
- Comparing Communications Mining™ and Google AutoML for conversational data intelligence
 
 
- Licensing
- FAQs and more

Communications Mining user guide
Last updated Oct 20, 2025
 /api/v1/sources
               
Permissions required: View sources
Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources' \
    -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources' \
    -H "Authorization: Bearer $REINFER_TOKEN"
Node
const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "sources": [
    {
      "created_at": "2016-02-10T23:13:28.340295+00:00",
      "description": "An optional long form description.",
      "id": "18ba5ce699f8da1f",
      "last_modified": "2016-02-10T23:13:28.340295+00:00",
      "name": "example",
      "owner": "<project>",
      "sensitive_properties": [],
      "should_translate": false,
      "title": "An Example Source",
      "updated_at": "2016-02-10T23:13:28.340295+00:00"
    }
  ],
  "status": "ok"
}{
  "sources": [
    {
      "created_at": "2016-02-10T23:13:28.340295+00:00",
      "description": "An optional long form description.",
      "id": "18ba5ce699f8da1f",
      "last_modified": "2016-02-10T23:13:28.340295+00:00",
      "name": "example",
      "owner": "<project>",
      "sensitive_properties": [],
      "should_translate": false,
      "title": "An Example Source",
      "updated_at": "2016-02-10T23:13:28.340295+00:00"
    }
  ],
  "status": "ok"
} /api/v1/sources/<project>
               
Permissions required: View sources
Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>' \
    -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>' \
    -H "Authorization: Bearer $REINFER_TOKEN"
Node
const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/<project>",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/<project>",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "sources": [
    {
      "created_at": "2016-02-10T23:13:28.340295+00:00",
      "description": "An optional long form description.",
      "id": "18ba5ce699f8da1f",
      "last_modified": "2016-02-10T23:13:28.340295+00:00",
      "name": "example",
      "owner": "<project>",
      "sensitive_properties": [],
      "should_translate": false,
      "title": "An Example Source",
      "updated_at": "2016-02-10T23:13:28.340295+00:00"
    }
  ],
  "status": "ok"
}{
  "sources": [
    {
      "created_at": "2016-02-10T23:13:28.340295+00:00",
      "description": "An optional long form description.",
      "id": "18ba5ce699f8da1f",
      "last_modified": "2016-02-10T23:13:28.340295+00:00",
      "name": "example",
      "owner": "<project>",
      "sensitive_properties": [],
      "should_translate": false,
      "title": "An Example Source",
      "updated_at": "2016-02-10T23:13:28.340295+00:00"
    }
  ],
  "status": "ok"
} /api/v1/sources/<project>/<source_name>
               
Permissions required: View sources
Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN"
Node
const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
}{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
} /api/v1/sources/id:<source_id>
               
Permissions required: View sources
Bash
curl -X GET 'https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f' \
    -H "Authorization: Bearer $REINFER_TOKEN"curl -X GET 'https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f' \
    -H "Authorization: Bearer $REINFER_TOKEN"
Node
const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.get(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.get(
    "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
}{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
} /api/v1/sources/<project>/<source_name>
               
Permissions required: Sources admin
Bash
curl -X PUT 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "source": {
    "description": "An optional long form description.",
    "title": "An Example Source"
  }
}'curl -X PUT 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "source": {
    "description": "An optional long form description.",
    "title": "An Example Source"
  }
}'
Node
const request = require("request");
request.put(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
    json: true,
    body: {
      source: {
        description: "An optional long form description.",
        title: "An Example Source",
      },
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.put(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
    json: true,
    body: {
      source: {
        description: "An optional long form description.",
        title: "An Example Source",
      },
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.put(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
    json={
        "source": {
            "title": "An Example Source",
            "description": "An optional long form description.",
        }
    },
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.put(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
    json={
        "source": {
            "title": "An Example Source",
            "description": "An optional long form description.",
        }
    },
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
}{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An optional long form description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-10T23:13:28.340295+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-10T23:13:28.340295+00:00"
  },
  "status": "ok"
}| Name | Type | Required | Description | 
|---|---|---|---|
| language | string | no | The primary language of the source. Supported values are en(English) and
                              Multilingual. Defaults toen. | 
| title | string | no | One-line human-readable title for the source. | 
| description | string | no | A longer description of the source. | 
| should_translate | boolean | no | Whether messages uploaded to this source should be translated into the language where required. Defaults to false. | 
| sensitive_properties | array<string> | no | An array of properties which should be marked as sensitive and hidden from non-privileged users. | 
| bucket_id | string | no | ID of a bucket to load data from. Data will be parsed into comments and loaded into this source. | 
 /api/v1/sources/<project>/<source_name>
               
Permissions required: Sources admin
Bash
curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "source": {
    "description": "An alternative description."
  }
}'curl -X POST 'https://<my_api_endpoint>/api/v1/sources/<project>/example' \
    -H "Authorization: Bearer $REINFER_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
  "source": {
    "description": "An alternative description."
  }
}'
Node
const request = require("request");
request.post(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
    json: true,
    body: { source: { description: "An alternative description." } },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.post(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
    json: true,
    body: { source: { description: "An alternative description." } },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.post(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
    json={"source": {"description": "An alternative description."}},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.post(
    "https://<my_api_endpoint>/api/v1/sources/<project>/example",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
    json={"source": {"description": "An alternative description."}},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An alternative description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-11T08:06:14.944290+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-11T08:06:14.944290+00:00"
  },
  "status": "ok"
}{
  "source": {
    "created_at": "2016-02-10T23:13:28.340295+00:00",
    "description": "An alternative description.",
    "id": "18ba5ce699f8da1f",
    "language": "en",
    "last_modified": "2016-02-11T08:06:14.944290+00:00",
    "name": "example",
    "owner": "<project>",
    "sensitive_properties": [],
    "should_translate": false,
    "title": "An Example Source",
    "updated_at": "2016-02-11T08:06:14.944290+00:00"
  },
  "status": "ok"
}| Name | Type | Required | Description | 
|---|---|---|---|
| title | string | no | One-line human-readable title for the source. | 
| description | string | no | A longer description of the source. | 
| should_translate | boolean | no | Whether messages uploaded to this source should be translated into English where required. Defaults to false. | 
| sensitive_properties | array<string> | no | An array of properties which should be marked as sensitive and hidden from non-privileged users. | 
| bucket_id | string | no | ID of a bucket to load data from. Data will be parsed into comments and loaded into this source. | 
 /api/v1/sources/id:<source_id>
               
Permissions required: Sources admin
Bash
curl -X DELETE 'https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f' \
    -H "Authorization: Bearer $REINFER_TOKEN"curl -X DELETE 'https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f' \
    -H "Authorization: Bearer $REINFER_TOKEN"Node
const request = require("request");
request.delete(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);const request = require("request");
request.delete(
  {
    url: "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers: {
      Authorization: "Bearer " + process.env.REINFER_TOKEN,
    },
  },
  function (error, response, json) {
    // digest response
    console.log(JSON.stringify(json, null, 2));
  }
);Python
import json
import os
import requests
response = requests.delete(
    "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))import json
import os
import requests
response = requests.delete(
    "https://<my_api_endpoint>/api/v1/sources/id:18ba5ce699f8da1f",
    headers={"Authorization": "Bearer " + os.environ["REINFER_TOKEN"]},
)
print(json.dumps(response.json(), indent=2, sort_keys=True))
Response
{
  "status": "ok"
}{
  "status": "ok"
}