Webex Contact Center

Webex Contact Center API for managing customer service operations including agents, queues, routing strategies, skills, and reporting. Enables programmatic control of contact center configurations and workflows.

OpenAPI Specification

webex-contact-center-openapi.json Raw ↑
{
  "openapi": "3.0.0",
  "info": {
    "title": "Webex Contact Center",
    "version": "1.0.0",
    "description": "The Webex Contact Center APIs allow developers to deeply integrate, configure, and manage cloud-based contact center solutions. These APIs cover agent lifecycle management, queue and routing configuration, customer journey tracking, and access to real-time and historical analytics. Use cases include embedding agent controls in custom UIs, automating workforce management, integrating with CRM and ticketing systems, and building custom reporting dashboards. The APIs empower organizations to deliver personalized, efficient customer experiences and optimize contact center operations."
  },
  "tags": [
    {
      "name": "Agent Summaries"
    },
    {
      "name": "Contact List Management",
      "description": "Operations for managing contact lists and contacts"
    },
    {
      "name": "DNC Management",
      "description": "Operations for managing Do Not Contact (DNC) lists and phone number entries"
    },
    {
      "name": "Agents"
    },
    {
      "name": "Callbacks",
      "description": "APIs for scheduling and managing callbacks for customers."
    },
    {
      "name": "Tasks"
    }
  ],
  "paths": {
    "/generated-summaries/search": {
      "post": {
        "tags": [
          "Agent Summaries"
        ],
        "summary": "List summaries",
        "description": "Lists summaries based on the requested search type.",
        "operationId": "listSummaries",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SummaryListRequest"
              },
              "examples": {
                "listByOrganization": {
                  "summary": "Case 1: List by organizationId",
                  "value": {
                    "searchType": "ORGANIZATION",
                    "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da"
                  }
                },
                "listByInteraction": {
                  "summary": "Case 2: List by interactionId",
                  "value": {
                    "searchType": "INTERACTION",
                    "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da",
                    "interactionId": "9d2a7879-8957-4cd6-a39c-46d4f21eaea5"
                  }
                },
                "listByAgentCiUserId": {
                  "summary": "Case 3: List by agentCiUserId",
                  "value": {
                    "searchType": "AGENT",
                    "agentCiUserId": "77e70d79-64b1-402e-9b84-b113ad71b06d",
                    "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummaryListResponse"
                },
                "examples": {
                  "listByOrganization": {
                    "summary": "Case 1: List by organizationId",
                    "value": {
                      "interactionId": null,
                      "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da",
                      "searchType": "ORGANIZATION",
                      "agentCiUserId": null,
                      "summaries": {
                        "POST_CALL": {
                          "acc80d18-b1fb-4261-b44e-a46435eea1da:1bf3bd99-633b-401a-a3d4-61157a446809:c47d7c08-0776-4e38-a6bb-751d933a0c5d": {
                            "initialContactReason": "Broken tools appointment request",
                            "additionalContext": "Customer mentioned they had previously tried to fix the tools themselves but were unsuccessful.",
                            "additionalContactReasons": "Customer also asked about warranty coverage for the broken tools.",
                            "keyActionsTaken": "Scheduled an appointment with Doctor Petrophe for the caller",
                            "nextSteps": "Confirm appointment details via email and follow up on warranty inquiry.",
                            "chosenWrapUpCode": "Appointment Scheduled",
                            "proposedWrapUpCodes": [
                              {
                                "name": "Appointment Scheduled"
                              },
                              {
                                "name": "Service Request"
                              }
                            ]
                          }
                        },
                        "MID_CALL": {
                          "acc80d18-b1fb-4261-b44e-a46435eea1da:9d2a7879-8957-4cd6-a39c-46d4f21eaea5:c47d7c08-0776-4e38-a6bb-751d933a0c5d": {
                            "reasonForTransferOrConsult": "The caller wants to purchase fifteen tickets for an upcoming match but the current agent needs to check with teammates for ticket availability, requiring a transfer to another agent who can assist with ticket sales.",
                            "additionalContext": "The match will take place next weekend at 6 PM, and the caller is part of a group looking to buy a large number of tickets.",
                            "keyActionsTaken": "Checked the match schedule\\nInquired about the number of tickets needed\\nInitiated a transfer to check ticket availability with teammates"
                          }
                        }
                      },
                      "queueId": null
                    }
                  },
                  "listByInteraction": {
                    "summary": "Case 2: List by interactionId",
                    "value": {
                      "interactionId": "9d2a7879-8957-4cd6-a39c-46d4f21eaea5",
                      "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da",
                      "searchType": "INTERACTION",
                      "agentCiUserId": null,
                      "summaries": {
                        "POST_CALL": {
                          "acc80d18-b1fb-4261-b44e-a46435eea1da:9d2a7879-8957-4cd6-a39c-46d4f21eaea5:c47d7c08-0776-4e38-a6bb-751d933a0c5d": {
                            "initialContactReason": "The caller wants to buy tickets for a match.",
                            "additionalContext": "The match is next weekend and the caller represents a group looking for tickets.",
                            "additionalContactReasons": "The caller also inquired about group discount options.",
                            "keyActionsTaken": "The agent checked ticket availability with teammates.\\nThe agent engaged with the caller about their request.",
                            "nextSteps": "Agent will confirm ticket availability for fifteen tickets and get back to the caller.",
                            "chosenWrapUpCode": "Ticket Inquiry",
                            "proposedWrapUpCodes": [
                              {
                                "name": "Ticket Inquiry"
                              },
                              {
                                "name": "Group Booking"
                              }
                            ]
                          }
                        },
                        "MID_CALL": {
                          "acc80d18-b1fb-4261-b44e-a46435eea1da:9d2a7879-8957-4cd6-a39c-46d4f21eaea5:c47d7c08-0776-4e38-a6bb-751d933a0c5d": {
                            "reasonForTransferOrConsult": "The caller wants to purchase fifteen tickets for an upcoming match but the current agent needs to check with teammates for ticket availability, requiring a transfer to another agent who can assist with ticket sales.",
                            "additionalContext": "The match will take place next weekend at 6 PM, and the caller is part of a group looking to buy a large number of tickets.",
                            "keyActionsTaken": "Checked the match schedule\\nInquired about the number of tickets needed\\nInitiated a transfer to check ticket availability with teammates"
                          }
                        }
                      },
                      "queueId": null
                    }
                  },
                  "listByAgentCiUserId": {
                    "summary": "Case 3: List by agentCiUserId",
                    "value": {
                      "interactionId": null,
                      "orgId": "acc80d18-b1fb-4261-b44e-a46435eea1da",
                      "searchType": "AGENT",
                      "agentCiUserId": "77e70d79-64b1-402e-9b84-b113ad71b06d",
                      "summaries": {
                        "POST_CALL": {
                          "acc80d18-b1fb-4261-b44e-a46435eea1da:9d2a7879-8957-4cd6-a39c-46d4f21eaea5:77e70d79-64b1-402e-9b84-b113ad71b06d": {
                            "initialContactReason": "Customer wants to buy tickets for an upcoming match.",
                            "additionalContext": "Customer has a group of fifteen people and needs the tickets to be together.",
                            "additionalContactReasons": "Customer asked about group seating arrangements.",
                            "keyActionsTaken": "Checked availability of fifteen tickets for the match.\\nConfirmed grouped discount for the tickets.\\nProcessed the ticket purchase and confirmed ticket sending via email.",
                            "nextSteps": "Send the tickets to the customer's email.",
                            "chosenWrapUpCode": "Ticket Purchase",
                            "proposedWrapUpCodes": [
                              {
                                "name": "Ticket Purchase"
                              },
                              {
                                "name": "Group Booking"
                              }
                            ]
                          }
                        }
                      },
                      "queueId": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation Error"
          },
          "401": {
            "description": "Unauthorized Operation"
          },
          "403": {
            "description": "Forbidden Operation"
          },
          "429": {
            "description": "Too many requests have been sent in a given amount of time and the request has been rate limited."
          },
          "500": {
            "description": "An Unexpected Error Occurred"
          }
        }
      }
    },
    "/v1/agentburnout/subscribe": {
      "post": {
        "parameters": [
          {
            "name": "X-ORGANIZATION-ID",
            "in": "header",
            "description": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2f9eecc5-0472-4549-9a83-2afdae0d4ba1"
          }
        ],
        "tags": [
          "Agent Wellbeing"
        ],
        "summary": "Subscribe for realtime burnout events",
        "description": "This endpoint provides real-time burnout events that are generated for agents belonging to the organization. It gives us a WebSocket URL to which we can connect to receive the real-time burnout events.",
        "operationId": "subscribe_agentburnout",
        "requestBody": {
          "description": "Subscribes to the realtime burnout events.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation Error"
          },
          "401": {
            "description": "Unauthorized Operation"
          },
          "403": {
            "description": "Forbidden Operation"
          },
          "429": {
            "description": "Too many requests have been sent in a given amount of time and the request has been rate limited."
          },
          "500": {
            "description": "An Unexpected Error Occurred"
          }
        }
      }
    },
    "/v1/agentburnout/action": {
      "post": {
        "tags": [
          "Agent Wellbeing"
        ],
        "parameters": [
          {
            "name": "X-ORGANIZATION-ID",
            "in": "header",
            "description": "Organization ID to be used for this operation. The specified security token must have permission to interact with the organization.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "2f9eecc5-0472-4549-9a83-2afdae0d4ba1"
          }
        ],
        "summary": "Record the realtime burnout events",
        "description": "The endpoint need to be invoked by Partners and Third-Party that will subscribe to the Agent Burnout system, in order to take certain action based on the agent burnout index calculated.",
        "operationId": "post_action",
        "requestBody": {
          "description": "Record the action taken by integrating partners.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation Error"
          },
          "401": {
            "description": "Unauthorized Operation"
          },
          "403": {
            "description": "Forbidden Operation"
          },
          "429": {
            "description": "Too many requests have been sent in a given amount of time and the request has been rate limited."
          },
          "500": {
            "description": "An Unexpected Error Occurred"
          }
        }
      }
    },
    "/v3/campaign-management/campaigns/{campaignId}/contact-list": {
      "post": {
        "tags": [
          "Contact List Management"
        ],
        "summary": "Create contact list",
        "operationId": "createContactList",
        "description": "Creates and activates a contact list for a campaign. The system can activate a contact list even if there are no contact records within it.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID to which the contact list belongs.",
            "schema": {
              "type": "string"
            },
            "example": "CCV_123456789"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactListRequest"
              },
              "examples": {
                "basic": {
                  "value": {
                    "supportedChannels": [
                      "Voice",
                      "SMS"
                    ],
                    "activationTimeLagMinutes": 180
                  }
                },
                "withTimestamp": {
                  "value": {
                    "supportedChannels": [
                      "Email"
                    ],
                    "activationDateTime": "2025-09-24T18:47:00Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact list created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateContactListResponse"
                },
                "examples": {
                  "success": {
                    "value": {
                      "outcome": "Success",
                      "statusCode": 0,
                      "contactListId": "501"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts": {
      "post": {
        "tags": [
          "Contact List Management"
        ],
        "summary": "Create contacts within a contact list",
        "operationId": "createContactsInContactList",
        "description": "Creates contacts within a contact list (only if that contact list was created using API method). If the contact record is invalid, it will be added as INVALID and reflected in the 'Processed' and 'Invalid' counts. This is an Asynchronous operation. The values within the 'contactAttributes' param should conform to datatypes of the contact attributes as specified in the 'Field mapping' associated with the campaign.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID to which the contact list belongs.",
            "schema": {
              "type": "string"
            },
            "example": "CCV_123456789"
          },
          {
            "name": "contactListId",
            "in": "path",
            "required": true,
            "description": "Contact List ID (as a number string).",
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": "501"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Request accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateContactResponse"
                },
                "example": {
                  "outcome": "Queued",
                  "statusCode": 0,
                  "summary": "Queued for adding to the contact list"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/contacts/{contactId}": {
      "patch": {
        "tags": [
          "Contact List Management"
        ],
        "summary": "Update a contact's status within a contact list",
        "operationId": "updateContactStatusInContactList",
        "description": "Updates a contact's status within a contact list. After update, system overwrites 'Latest Telephony Outcome' to blank and 'Latest Business Outcome' to 'Closed via API call' if status is CLOSED. This is an Asynchronous operation.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID.",
            "schema": {
              "type": "string"
            },
            "example": "CCV_123456789"
          },
          {
            "name": "contactListId",
            "in": "path",
            "required": true,
            "description": "Contact List ID (as a number string).",
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": "501"
          },
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "description": "Contact Unique ID (Customer Unique ID or Account Unique ID or Contact_Phone)",
            "schema": {
              "type": "string"
            },
            "example": "CUST12345"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContactRequest"
              },
              "example": {
                "contactStatus": "CLOSED"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Request queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateContactResponse"
                },
                "example": {
                  "outcome": "Queued",
                  "statusCode": 0,
                  "summary": "Queued for updating the contact status"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v3/campaign-management/campaigns/{campaignId}/contact-list/{contactListId}/status": {
      "patch": {
        "tags": [
          "Contact List Management"
        ],
        "summary": "Update contact list status",
        "operationId": "updateContactListStatus",
        "description": "Updates the status of a contact list (e.g., EXPIRED). Note: This value is not case-sensitive.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID.",
            "schema": {
              "type": "string"
            },
            "example": "CCV_123456789"
          },
          {
            "name": "contactListId",
            "in": "path",
            "required": true,
            "description": "Contact List ID (as a number string).",
            "schema": {
              "type": "string",
              "pattern": "^\\d+$"
            },
            "example": "501"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContactListStatusRequest"
              },
              "example": {
                "contactListStatus": "EXPIRED"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact list status updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateContactListStatusResponse"
                },
                "example": {
                  "outcome": "Success",
                  "statusCode": 0,
                  "summary": "Contact list status updated successfully"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v3/campaign-management/campaigns/{campaignId}/contact-lists": {
      "get": {
        "tags": [
          "Contact List Management"
        ],
        "summary": "Get Contact Lists within a Campaign",
        "operationId": "getContactListsInCampaign",
        "description": "Retrieves all contact lists within a campaign, with optional filters for status and source.",
        "parameters": [
          {
            "name": "campaignId",
            "in": "path",
            "required": true,
            "description": "Campaign ID.",
            "schema": {
              "type": "string"
            },
            "example": "CCV_123456789"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Contact List Status filter (Active, Expired, UploadFailed, etc.)",
            "schema": {
              "type": "string",
              "enum": [
                "Active",
                "Expired",
                "UploadFailed"
              ]
            },
            "example": "Active"
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "description": "Contact List Source filter (API, SFTP, ManualFile, GlobalUpload, GlobalSFTP)",
            "schema": {
              "type": "string",
              "enum": [
                "API",
                "SFTP",
                "ManualFile",
                "GlobalUpload",
                "GlobalSFTP"
              ]
            },
            "example": "API"
          }
        ],
        "responses": {
          "200": {
            "description": "Contact lists retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetContactListsResponse"
                },
                "example": {
                  "outcome": "Success",
                  "statusCode": 0,
                  "contactLists": [
                    {
                      "contactListId": "501",
                      "contactListStatus": "Active",
                      "contactListRecordCount": 100,
                      "contactListSource": "API",
                      "dateOfCreation": "2025-08-01T10:00:00Z",
                      "dateOfActivation": "2025-08-01T12:00:00Z",
                      "dateOfExpiry": "2025-09-01T00:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v3/campaign-management/dncList/{dncListName}/phoneNumber": {
      "post": {
        "tags": [
          "DNC Management"
        ],
        "summary": "Add Phone Number to DNC List",
        "operationId": "addPhoneNumberToDncList",
        "description": "Adds a phone number to the specified Do Not Contact (DNC) list. This operation helps ensure compliance with applicable rules & regulations by preventing outbound calls to specific numbers.\n\n**Note:** Phone numbers must be in E.164 format (e.g., +1234567890). Duplicate entries will be rejected with a 409 error.",
        "parameters": [
          {
            "name": "dncListName",
            "in": "path",
            "description": "This is the Name of the DNC list to which you want to add a phone number. List names are case-sensitive and must be URL-encoded if they contain special characters.",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]+$",
              "minLength": 1,
              "maxLength": 100
            },
            "example": "corporate-dnc-list"
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Phone number details to add to the DNC list",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DncEntryRequest"
              },
              "examples": {
                "basic": {
                  "summary": "Basic phone number entry",
                  "value": {
                    "phoneNumber": "+1234567890",
                    "source": "customer-request"
                  }
                },
                "with-metadata": {
                  "summary": "Entry with additional metadata",
                  "value": {
                    "phoneNumber": "+1987654321",
                    "source": "regulatory-compliance",
                    "reason": "Customer opted out via email"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Phone number successfully added to the DNC list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DncEntryResponse"
                },
                "example": {
                  "phoneNumber": "+1234567890",
                  "source": "customer-request",
                  "addedDate": "2024-01-15T10:30:00Z",
                  "addedBy": "[email protected]"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: The request was invalid or cannot be otherwise served. An accompanying error message will explain further.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized: Authentication credentials were missing or incorrect.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden: The request is understood, but it has been refused or access is not allowed. User lacks required permissions to manage DNC lists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found: The specified DNC list does not exist or the user does not have access to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict: The phone number already exists in the specified DNC list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictError"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests: Too many requests have been sent in a given amount of time and the request has been rate limited. A Retry-After header should be present that specifies how many seconds you need to wait before a successful request can be made.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Number of seconds to wait before retrying"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyRequestsError"
                }
              }
            }
          },
      

# --- truncated at 32 KB (3221 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/webex/refs/heads/main/openapi/webex-contact-center-openapi.json