- Applies to: Sprinklr Listening Topic Group API V3 (
/api/v3/listening/topicGroup) - V2 API reference: Topic Group 2.0 | Sprinklr Developer Portal
Topic Groups organize Listening Topics into categories. The V3 API uses one resource path and differentiates operations by HTTP method.
| Operation | Method | Path |
|---|---|---|
| Fetch one, multiple, or all Topic Groups | GET | /api/v3/listening/topicGroup |
| Create a Topic Group | POST | /api/v3/listening/topicGroup |
| Partially update a Topic Group | PATCH | /api/v3/listening/topicGroup?id={id} |
| Delete one or more Topic Groups | DELETE | /api/v3/listening/topicGroup?id={id} |
| Field | Type | Required | Description |
|---|---|---|---|
id | String | No | Unique identifier of the Topic Group. |
name | String | Yes | Name of the Topic Group. |
description | String | No | Description of the Topic Group. |
shareConfigs | Array<AssetShareConfig> | No | Sharing configurations associated with the Topic Group. |
| Field | Type | Required | Description |
|---|---|---|---|
type | String | Yes | Sharing scope. Documented values include GLOBAL, CLIENT, CLIENT_GROUP, USER, and USER_GROUP. |
ids | Array<String> | Conditional | Identifiers associated with the selected sharing scope. |
GET and POST use shareConfigs, a plural array. PATCH uses shareConfig, a singular object, and may also contain permissionEntity.
| Model | Field | Shape | Purpose |
|---|---|---|---|
| GET/POST | shareConfigs | Array of {type, ids[]} | Sharing configuration returned with Topic Groups or supplied during creation. |
| PATCH | shareConfig | Object with user, group, client, and client-group IDs | Controls who can view Topics in the Topic Group. |
| PATCH | permissionEntity | Object with the same sub-fields as shareConfig | Controls who can edit or update Topics in the Topic Group. |
Use the environment-specific API V3 base URL:
https://api3.sprinklr.com/{env}/api/v3The Topic Group resource is:
https://api3.sprinklr.com/{env}/api/v3/listening/topicGroupReplace {env} with the assigned environment identifier.
| Header | Value | Required on | Description |
|---|---|---|---|
Authorization | Bearer {{accessToken}} | All requests | OAuth credential used to authenticate the user. |
Key | {{apiKey}} | All requests | API key used to authenticate the application. |
Content-Type | application/json | POST, PATCH | Indicates that the request body is JSON. |
Accept | application/json | Recommended on all requests | Requests a JSON response. |
Do not publish access tokens, API keys, or session cookies in examples.
GET /api/v3/listening/topicGroupThe same GET operation supports three retrieval modes:
- Omit
idto fetch all Topic Groups available to the caller. - Provide one ID to retrieve a specific Topic Group.
- Provide comma-separated IDs to retrieve multiple Topic Groups.
| Parameter | Sub-parameter | Location | Type | Required | Description |
|---|---|---|---|---|---|
id | N/A | Query | String | No | Unique identifier or comma-separated list of Topic Group IDs. When omitted, the API fetches all accessible Topic Groups. |
idis a query parameter, not a path parameter.
curl --location 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6a9c0379fc2ea04ab3c62dce' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}'{
"data": [
{
"id": "6a9c0379fc2ea04ab3c62dce",
"name": "New Group 007",
"description": "Optional description"
}
],
"errors": []
}Omit the id query parameter.
curl --location 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}'{
"data": [
{
"id": "6a9c0379fc2ea04ab3c62dce",
"name": "New Group 007",
"description": "Optional description"
}
],
"errors": []
}Provide up to 50 comma-separated Topic Group IDs. Commas may be URL-encoded as %2C.
curl --location --globoff 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6967654151649239c74dfc0d%2C6995a3f1d7890350f0cd8e2c' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}'{
"data": [
{
"id": "6967654151649239c74dfc0d",
"name": "topic_backfill_dnd",
"description": "Created via Automation",
"shareConfigs": [
{
"type": "GLOBAL"
}
]
},
{
"id": "6995a3f1d7890350f0cd8e2c",
"name": "Test-Topic-Group",
"description": "Dummy Group For API test",
"shareConfigs": [
{
"type": "CLIENT",
"ids": ["66000002", "66000437"]
},
{
"type": "CLIENT_GROUP",
"ids": []
},
{
"type": "USER",
"ids": ["66006626"]
},
{
"type": "USER_GROUP",
"ids": ["682b6b7d296ee9626e5004fc"]
}
]
}
],
"errors": []
}When a multi-ID request includes valid, invalid, missing, or blank values, the response may contain both successfully retrieved Topic Groups in data and item-level failures in errors.
curl --location --globoff 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6967654151649239c74dfc0d%2C6995a3f1d7890350f0cd8e2c%2CINVALID%2CTEST%2C%2C%2Cabcd' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}'{
"data": [
{
"id": "6967654151649239c74dfc0d",
"name": "topic_backfill_dnd",
"description": "Created via Automation",
"shareConfigs": [
{
"type": "GLOBAL"
}
]
},
{
"id": "6995a3f1d7890350f0cd8e2c",
"name": "Test-Topic-Group",
"description": "Dummy Group For API test"
}
],
"errors": [
{
"id": "6995a49cf58d8b601be9ec24",
"code": 404,
"message": "Listening_topic_group not found for id: 'INVALID'. Verify the listening_topic_group exists and you have access permissions."
},
{
"id": "6995a49cf58d8b601be9ec25",
"code": 404,
"message": "Listening_topic_group not found for id: 'TEST'. Verify the listening_topic_group exists and you have access permissions."
},
{
"id": "6995a49cf58d8b601be9ec23",
"code": 400,
"message": "Invalid id format: ''. Value cannot be empty or blank."
},
{
"id": "6995a49cf58d8b601be9ec26",
"code": 404,
"message": "Listening_topic_group not found for id: 'abcd'. Verify the listening_topic_group exists and you have access permissions."
}
]
}Always inspect errors, even when data contains records.
A single request supports a maximum of 50 Topic Group IDs. Split larger lists into batches of 50.
{
"errors": [
{
"id": "6995bcdaf58d8b601be9edc3",
"code": 400,
"message": "Maximum of 50 listening_topic_group identifiers supported per request. Provided: 51. Consider splitting you request in batches of 50 identifiers per request"
}
]
}| Parameter | Sub-parameter | Type | Description |
|---|---|---|---|
data | N/A | Array | Topic Groups successfully returned by the API. |
data | id | String | Unique identifier of the Topic Group. |
data | name | String | Name of the Topic Group. |
data | description | String | Description of the Topic Group. May be empty or omitted. |
data | shareConfigs | Array | Sharing configurations associated with the Topic Group. |
data.shareConfigs | type | String | Sharing scope. Values shown in the source include GLOBAL, CLIENT, CLIENT_GROUP, USER, and USER_GROUP. |
data.shareConfigs | ids | Array<String> | Identifiers associated with the sharing scope. Returned only where applicable. |
errors | N/A | Array | Errors encountered while processing the request. Empty on complete success. |
errors | id | String | Unique identifier associated with an error. |
errors | code | Integer | Error code. |
errors | message | String | Description of the error. |
POST /api/v3/listening/topicGroupCreates a Listening Topic Group and returns its identifier and related fields.
| Parameter | Sub-parameter | Type | Required | Description |
|---|---|---|---|---|
name | N/A | String | Yes | Name of the Topic Group to create. |
description | N/A | String | No | Additional details about the Topic Group. |
shareConfigs | N/A | Array | No | Sharing configurations associated with the Topic Group. |
shareConfigs[] | type | String | Yes within object | Sharing scope. |
shareConfigs[] | ids | Array<String> | Conditional | IDs associated with the sharing scope. |
curl --location --request POST 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"name": "Brand Monitoring Groups",
"description": "Optional description"
}'{
"data": {
"id": "6a86f91b670de61b6833e25a",
"name": "Brand Monitoring Groups",
"description": "Optional description"
},
"errors": []
}| Parameter | Sub-parameter | Type | Description |
|---|---|---|---|
data | id | String | Unique identifier of the created Topic Group. |
data | name | String | Name of the Topic Group. |
data | description | String | Description of the Topic Group. |
errors | N/A | Array | Errors encountered during processing. Empty on success. |
POST returns
dataas an object, while GET returnsdataas an array.
PATCH /api/v3/listening/topicGroup?id={id}Updates selected fields of one Topic Group.
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
id | Query | String | Yes | Unique identifier of the Topic Group to update. Update one Topic Group per call. |
| Parameter | Sub-parameter | Type | Required | Description |
|---|---|---|---|---|
name | N/A | String | No | Updated Topic Group name. |
description | N/A | String | No | Updated Topic Group description. |
shareConfig | N/A | Object | No | Configuration controlling who can view Topics in the Topic Group. |
shareConfig | userIds | Array<Long> | No | User IDs. |
shareConfig | userGroupIds | Array<String> | No | User Group IDs. |
shareConfig | clientIds | Array<Long> | No | Client IDs. |
shareConfig | clientGroupIds | Array<String> | No | Client Group IDs. |
shareConfig | shareWithEveryOne | Boolean | No | When true, shares with every user. |
permissionEntity | N/A | Object | No | Configuration controlling who can edit or update Topics in the Topic Group. Uses the same sub-fields as shareConfig. |
curl --location --request PATCH 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6a86f91b670de61b6833e25a' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"name": "Renamed Group",
"description": "Updated description"
}'HTTP/1.1 204 No ContentThe source materials contain conflicting PATCH response descriptions. Validate the published status and body against the current service contract.
DELETE /api/v3/listening/topicGroup?id={id}Deletes one or more Topic Groups.
| Parameter | Location | Type | Required | Description |
|---|---|---|---|---|
id | Query | String | Yes | Topic Group ID or comma-separated Topic Group IDs to delete. |
curl --location --request DELETE 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6a86f91b670de61b6833e25a' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}' \
--header 'Accept: application/json'curl --location --request DELETE 'https://api3.sprinklr.com/{env}/api/v3/listening/topicGroup?id=6a86f91b670de61b6833e25a,64dc93460cfbc0371ee1ac54' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Key: {{apiKey}}' \
--header 'Accept: application/json'HTTP/1.1 204 No ContentThe source materials contain conflicting DELETE response descriptions. Validate the published status and body against the current service contract.
{
"data": [
{
"id": "<TOPIC_GROUP_ID>",
"name": "Topic Group Name"
}
],
"errors": []
}{
"data": {
"id": "<TOPIC_GROUP_ID>",
"name": "Topic Group Name"
},
"errors": []
}{
"data": [],
"errors": [
{
"id": "<ERROR_ID>",
"code": 404,
"message": "<ERROR_MESSAGE>"
}
]
}| Code | Meaning | Documented scenario |
|---|---|---|
200 OK | Success | Request processed successfully. Inspect errors for partial failures. |
204 No Content | Success with no body | Shown in supplied PATCH and DELETE examples. |
400 Bad Request | Invalid request | Blank ID or more than 50 IDs. |
401 Unauthorized | Authentication failed | Missing, expired, or invalid authorization token. |
403 Forbidden | Permission failure | Caller lacks required access. |
404 Not Found | Resource not found | No accessible Topic Group found for the supplied ID. |
| Field | Type | Description |
|---|---|---|
id | String | Identifier associated with the error. |
code | Integer | Error code. |
message | String | Human-readable failure description. |
| V2 operation | V2 endpoint | V3 endpoint |
|---|---|---|
| Create Topic Group | POST /api/v2/listening-topic-group | POST /api/v3/listening/topicGroup |
| Read Topic Group | GET /api/v2/listening-topic-group/{Id} | GET /api/v3/listening/topicGroup?id={id} |
| Fetch All Topic Groups | GET /api/v2/listening-topic-group | GET /api/v3/listening/topicGroup |
| Update Topic Group | PUT /api/v2/listening-topic-group/{Id} | PATCH /api/v3/listening/topicGroup?id={id} |
| Delete Topic Group | DELETE /api/v2/listening-topic-group/{Id} | DELETE /api/v3/listening/topicGroup?id={id} |
- V3 uses a query parameter for the Topic Group ID.
- V3 GET supports one ID, multiple comma-separated IDs, or no ID.
- V3 PATCH replaces the V2 PUT operation.
- GET returns
dataas an array, while POST returnsdataas an object in the supplied samples.
Create the Topic Group with POST, persist the returned data.id, and retrieve it with GET.
Submit up to 50 comma-separated Topic Group IDs and review both data and errors.
Omit id to retrieve Topic Groups available to the caller.
Use PATCH to change the name or description without replacing the complete object.
Pass comma-separated IDs to the DELETE endpoint.
- Use
/api/v3/listening/topicGroupwithout a trailing slash before the query string. - Treat
idas a query parameter. - Send no more than 50 IDs in a multi-ID GET request.
- Always inspect
errorsbecause bulk GET can return partial results. - URL-encode commas and any IDs containing spaces when required by the client.
- Do not assume every Topic Group ID follows a 24-character hexadecimal format.
- Keep
shareConfigsfor GET/POST distinct fromshareConfigandpermissionEntityon PATCH. - Do not include cookies, access tokens, or API keys in published examples.
- Confirm PATCH and DELETE success responses against the service contract before publication.
| Task | Method | Request |
|---|---|---|
| Fetch all | GET | /api/v3/listening/topicGroup |
| Fetch one | GET | /api/v3/listening/topicGroup?id={id} |
| Fetch multiple | GET | /api/v3/listening/topicGroup?id={id1},{id2} |
| Create | POST | /api/v3/listening/topicGroup |
| Update | PATCH | /api/v3/listening/topicGroup?id={id} |
| Delete one | DELETE | /api/v3/listening/topicGroup?id={id} |
| Delete multiple | DELETE | /api/v3/listening/topicGroup?id={id1},{id2} |
- Verify the production base URL and
{env}placement. - Verify PATCH and DELETE status codes and response bodies.
- Confirm the maximum delete batch size.
- Confirm behavior when
idis explicitly present but blank. - Confirm permission requirements for create, update, and delete.
- Validate every cURL request.
- Remove real credentials and session cookies.
- Confirm sharing-model behavior for
shareConfigs,shareConfig, andpermissionEntity.
All identifiers and credentials in this guide are placeholders or documentation examples. Do not commit or log real credentials.