Skip to main content

Customer 360

Overview

The Customer 360 API provides unified access to a customer's interaction history and insights across all 8x8 contact center channels.

Given a customer identity — email address, phone number, contact ID, or account ID — the API returns a list of interactions along with aggregated sentiment analysis and topic insights derived from those interactions.

Base URLs

The API is available in four regions. Use the base URL corresponding to the region where your tenant is provisioned:

  • Phoenix (US): https://api.8x8.com/cidp-customer-360/us
  • London (UK): https://api.8x8.com/cidp-customer-360/uk
  • Toronto (Canada): https://api.8x8.com/cidp-customer-360/ca
  • Sydney (Australia): https://api.8x8.com/cidp-customer-360/ap

The Customer 360 API supports the following endpoints:

  • GET /v1/public/tenants/{tenantId}/interactions-insight — Retrieve interaction insights
  • GET /v1/public/tenants/{tenantId}/transcript-summaries — Retrieve transcript summaries

1. Get Interaction Insights

This GET method retrieves interaction history and aggregated insights for a specific customer identity within an optional time range.

Headers

NameRequiredDescriptionExample
x-api-keyAPI key from the 8x8 Admin Consoleeght_Abcdhfakdlbdfsjkbskzkmxl

Path Parameters

NameRequiredDescriptionExample
tenantIdThe tenant identifier. Must belong to your customer account.acvcc1652172111112801

Search Strategies

You must provide exactly one identity field per request. The supported search strategies are:

StrategyRequired FieldsOptional FieldsForbidden Fields
Contact IDcontactId, crmId
Account IDaccountIdcrmId
EmailemailcrmId
Phone NumberphoneNumbercrmId

Only the native CRM is supported. Set crmId to native.

Query Parameters

NameRequiredDescriptionExample
emailCustomer email address. Cannot be used with crmId.customer@example.com
phoneNumberCustomer phone number in E.164 format. Cannot be used with crmId.+12065551234
contactIdContact identifier. Must be provided together with crmId.contact-123
accountIdAccount identifier. crmId is optional when using this field.account-456
crmIdCRM identifier. Required with contactId, optional with accountId, forbidden with email/phone. Only the native CRM is supported.native
startTimeStart of the time range in ISO-8601 format with timezone. Defaults to 1 year before endTime.2025-01-01T00:00:00-05:00
endTimeEnd of the time range in ISO-8601 format with timezone. Defaults to current time.2025-08-01T00:00:00-05:00

Full Request Example

curl --location 'https://api.8x8.com/cidp-customer-360/us/v1/public/tenants/acvcc1652172111112801/interactions-insight?email=customer%40example.com' \
--header 'x-api-key: eght_Abcdhfakdlbdfsjkbskzkmxl'

Response

{
"interactions": [
{
"interactionId": "int-abc123",
"mediaIdentifier": "customer@example.com",
"mediaType": "EMAIL",
"direction": "INBOUND",
"productType": "CC",
"startedAt": 1724400000000,
"endedAt": 1724403600000,
"sentiment": "POSITIVE",
"topics": [
{ "topic": "billing", "matches": 2 }
],
"wrapUpCodes": ["resolved"],
"queueName": "Support Queue",
"outcomeLabel": "Resolved",
"interactionLabels": ["vip"],
"emailSubject": "Billing inquiry",
"signals": []
},
{
"interactionId": "int-def456",
"mediaIdentifier": "customer@example.com",
"mediaType": "CHAT",
"chatType": "WebChat",
"direction": "INBOUND",
"productType": "CC",
"startedAt": 1724500000000,
"endedAt": 1724503600000,
"sentiment": "NEUTRAL",
"topics": [],
"wrapUpCodes": ["happy"],
"queueName": "inbound chat",
"outcomeLabel": "Handled",
"interactionLabels": ["Queued", "Handled"],
"title": "Account upgrade request",
"signals": []
}
],
"insights": {
"aggregatedSentiments": {
"totalInteractions": 2,
"aggregatedSentiment": {
"aggregatedCustomerSentiment": "POSITIVE",
"aggregatedAgentSentiment": "NEUTRAL",
"aggregatedOverallSentiment": "POSITIVE"
}
},
"aggregatedTopics": {
"totalInteractions": 1,
"topicFrequency": [
{
"topicName": "billing",
"categoryName": "Finance",
"interactionsMatchedCount": 1,
"percentageMatched": 50.0
}
]
}
}
}

📘 Maximum interactions

The API returns a maximum of 50 interactions per request within the specified time range.

Response Body Fields

interactions

FieldDescription
interactionIdUnique identifier for the interaction.
contactIdCRM contact identifier associated with the interaction.
mediaIdentifierThe customer email or phone number used in this interaction.
mediaTypeChannel type: PHONE, EMAIL, CHAT, or VOICEMAIL.
chatTypeSub-type for chat interactions, e.g. WHATSAPP.
directionDirection of the interaction: INBOUND or OUTBOUND.
productType8x8 product that handled the interaction: CC (Contact Center), UC (Unified Communications), or ENGAGE.
startedAtInteraction start time as Unix epoch milliseconds.
endedAtInteraction end time as Unix epoch milliseconds.
sentimentOverall sentiment for this interaction: POSITIVE, NEUTRAL, or NEGATIVE.
topicsTopics detected in the interaction. See topics table below.
wrapUpCodesAgent wrap-up codes applied at the end of the interaction.
queueNameName of the queue that handled the interaction.
outcomeLabelOutcome label assigned to the interaction.
interactionLabelsLabels applied to the interaction.
titleAI-generated title summarizing the interaction (when available).
emailSubjectSubject line of the email (present for EMAIL interactions only).
departmentNameName of the department that handled the interaction. Reserved for future use.
signalsDetected signals from the interaction. Reserved for future use; currently returns an empty list.

topics

FieldDescription
topicName of the detected topic.
matchesNumber of times this topic was detected in the interaction.

insights.aggregatedSentiments

FieldDescription
totalInteractionsNumber of interactions included in the sentiment aggregation.
aggregatedSentimentObject containing the aggregated sentiment breakdown. See aggregatedSentiment table below.

insights.aggregatedSentiments.aggregatedSentiment

FieldDescription
aggregatedCustomerSentimentOverall customer sentiment: POSITIVE, NEUTRAL, or NEGATIVE.
aggregatedAgentSentimentOverall agent sentiment: POSITIVE, NEUTRAL, or NEGATIVE.
aggregatedOverallSentimentCombined overall sentiment: POSITIVE, NEUTRAL, or NEGATIVE.

insights.aggregatedTopics

FieldDescription
totalInteractionsNumber of interactions included in the topic aggregation.
topicFrequencyList of topics with frequency data. See topicFrequency table below.

insights.aggregatedTopics.topicFrequency

FieldDescription
topicNameName of the topic.
categoryNameCategory the topic belongs to.
interactionsMatchedCountNumber of interactions where this topic was detected.
percentageMatchedPercentage of total interactions where this topic was detected.

📘 Speech Analytics data

sentiment, topics, and aggregated insights are only populated when the Speech Analytics license is enabled for the tenant.


2. Get Transcript Summaries

This GET method retrieves AI-generated transcript summaries for one or more interactions by their interaction IDs.

Headers

NameRequiredDescriptionExample
x-api-keyAPI key from the 8x8 Admin Consoleeght_Abcdhfakdlbdfsjkbskzkmxl

Path Parameters

NameRequiredDescriptionExample
tenantIdThe tenant identifier. Must belong to your customer account.acvcc1652172111112801

Query Parameters

NameRequiredDescriptionExample
interactionIdOne or more interaction IDs. Repeat the parameter for batch retrieval.int-abc123

Full Request Example

Single interaction:

curl --location 'https://api.8x8.com/cidp-customer-360/us/v1/public/tenants/acvcc1652172111112801/transcript-summaries?interactionId=int-abc123' \
--header 'x-api-key: eght_Abcdhfakdlbdfsjkbskzkmxl'

Batch retrieval (multiple interaction IDs):

curl --location 'https://api.8x8.com/cidp-customer-360/us/v1/public/tenants/acvcc1652172111112801/transcript-summaries?interactionId=int-abc123&interactionId=int-def456' \
--header 'x-api-key: eght_Abcdhfakdlbdfsjkbskzkmxl'

Response

{
"summaries": [
{
"interactionId": "int-abc123",
"summaryObjectId": "obj-xyz789",
"content": {
"id": "summary-001",
"result": "Customer called about a billing discrepancy. Agent verified the charge and issued a credit. Customer confirmed satisfaction.",
"status": "success",
"type": "summary",
"duration": 185.5
},
"metadata": {
"createdAt": "2025-08-15T14:30:00",
"sizeBytes": 512
}
}
],
"partialFailures": [
{
"interactionId": "int-def456",
"reason": "Summary not found"
}
]
}

📘 Maximum interaction IDs

The API accepts a maximum of 50 interaction IDs per request.

📘 Partial failures

When some interaction IDs cannot be resolved, the API returns a 200 response with successfully retrieved summaries in summaries and unresolved IDs in partialFailures. Possible reasons: Summary not found (no summary exists for this interaction) or Summary not available (temporary retrieval failure).

Response Body Fields

summaries

FieldDescription
interactionIdInteraction identifier.
summaryObjectIdUnique identifier of the summary object in storage.
contentThe summary content. See content table below.
metadataMetadata about the summary. See metadata table below.

content

FieldDescription
idSummary content identifier.
resultThe AI-generated transcript summary text.
statusProcessing status of the summary (e.g. success).
typeContent type (e.g. summary).
durationDuration of the interaction in seconds.

metadata

FieldDescription
createdAtTimestamp when the summary was created.
sizeBytesSize of the summary content in bytes.

partialFailures

FieldDescription
interactionIdInteraction identifier for which the summary could not be retrieved.
reasonReason the summary could not be retrieved: Summary not found or Summary not available.