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
- Training chat and calls data
- 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 7, 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 to en .
|
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"
}