Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

crisp-api

crisp-im43.1kMIT9.10.0TypeScript support: included

Crisp API wrapper for Node - official, maintained by Crisp

crisp, integration, wrapper, api, rest, websocket

readme

Crisp API Wrapper

Test and Build Build and Release Version Downloads

The Crisp API Node wrapper. Authenticate, send messages, fetch conversations, access your agent accounts from your JavaScript code.

Copyright 2025 Crisp IM SAS. See LICENSE for copying information.

Installation

npm install --save crisp-api

Authentication

To authenticate against the API, obtain your authentication token keypair by following the REST API Authentication guide. You'll get a token keypair made of 2 values.

Keep your token keypair values private, and store them safely for long-term use.

Then, add authentication parameters to your client instance right after you create it:

var Crisp = require("crisp-api");
var CrispClient = new Crisp();

// Authenticate to API with your plugin token (identifier, key)
// eg. CrispClient.authenticate("7c3ef21c-1e04-41ce-8c06-5605c346f73e", "cc29e1a5086e428fcc6a697d5837a66d82808e65c5cce006fbf2191ceea80a0a");
CrispClient.authenticateTier("plugin", identifier, key);

// Now, you can use authenticated API sections.

Overview

You may follow the REST API Quickstart guide, which will get you running with the REST API in minutes.

var Crisp = require("crisp-api");
var CrispClient = new Crisp();

CrispClient.authenticateTier("plugin", identifier, key);

CrispClient.website.listConversations(websiteID, 1)
  .then(function(conversations) {
    console.log("Listed conversations:", conversations);
  })
  .catch(function(error) {
    console.error("Error listing conversations:", error);
  });

Examples

Create your own bot!

var Crisp = require("crisp-api");
var CrispClient = new Crisp();

CrispClient.authenticateTier("plugin", identifier, key);

// Notice: make sure to authenticate before listening for an event
CrispClient.on("message:send", function(message) {
  CrispClient.website.sendMessageInConversation(
    message.website_id, message.session_id,

    {
      type    : "text",
      content : "I'm a bot",
      from    : "operator", // or user
      origin  : "chat"
    }
  )
    .then(function(message) {
      console.log("Message sent:", message);
    })
    .catch(function(error) {
      console.error("Error sending message:", error);
    });
})
  .then(function() {
    console.error("Requested to listen to sent messages");
  })
  .catch(function(error) {
    console.error("Failed listening to sent messages:", error);
  });

Resource Methods

All the available Crisp API resources are fully implemented. Programmatic methods names are named after their label name in the REST API Reference.

All methods that you will most likely need when building a Crisp integration are prefixed with a star symbol (⭐).

⚠️ Note that, depending on your authentication token tier, which is either user or plugin, you may not be allowed to use all methods from the library. When in doubt, refer to the library method descriptions below. Most likely, you are using a plugin token.


<summary> Website </summary>
<summary> Plugin </summary>
<summary> Media </summary>
<summary> Bucket </summary>
<summary> RTM Events </summary>

Website

  • Website Conversations

    • ⭐ List Conversations [user, plugin]: Reference

      • CrispClient.website.listConversations(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listConversations(websiteID, pageNumber);
    • List Suggested Conversation Segments [user, plugin]: Reference

      • CrispClient.website.listSuggestedConversationSegments(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSuggestedConversationSegments(websiteID, pageNumber);
    • Delete Suggested Conversation Segment [user, plugin]: Reference

      • CrispClient.website.deleteSuggestedConversationSegment(websiteID, segment)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var segment = "bug";
        
        CrispClient.website.deleteSuggestedConversationSegment(websiteID, segment);
    • List Suggested Conversation Data Keys [user, plugin]: Reference

      • CrispClient.website.listSuggestedConversationDataKeys(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSuggestedConversationDataKeys(websiteID, pageNumber);
    • Delete Suggested Conversation Data Key [user, plugin]: Reference

      • CrispClient.website.deleteSuggestedConversationDataKey(websiteID, key)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var key = "price";
        
        CrispClient.website.deleteSuggestedConversationDataKey(websiteID, key);
    • List Spam Conversations [user]: Reference

      • CrispClient.website.listSpamConversations(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSpamConversations(websiteID, pageNumber);
    • Resolve Spam Conversation Content [user]: Reference

      • CrispClient.website.resolveSpamConversationContent(websiteID, spamID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var spamID = "b45e7d75-61ab-416c-858b-1919b5fcfd10";
        
        CrispClient.website.resolveSpamConversationContent(websiteID, spamID);
    • Submit Spam Conversation Decision [user]: Reference

      • CrispClient.website.submitSpamConversationDecision(websiteID, spamID, action)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var spamID = "b45e7d75-61ab-416c-858b-1919b5fcfd10";
        
        var action = "reject";
        
        CrispClient.website.submitSpamConversationDecision(websiteID, spamID, action);
  • Website Conversation

    • ⭐ Create A New Conversation [user, plugin]: Reference

      • CrispClient.website.createNewConversation(websiteID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        CrispClient.website.createNewConversation(websiteID);
    • Check If Conversation Exists [user, plugin]: Reference

      • CrispClient.website.checkConversationExists(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.checkConversationExists(websiteID, sessionID);
    • ⭐ Get A Conversation [user, plugin]: Reference

      • CrispClient.website.getConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getConversation(websiteID, sessionID);
    • Remove A Conversation [user, plugin]: Reference

      • CrispClient.website.removeConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.removeConversation(websiteID, sessionID);
    • Initiate A Conversation With Existing Session [user, plugin]: Reference

      • CrispClient.website.initiateConversationWithExistingSession(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.initiateConversationWithExistingSession(websiteID, sessionID);
    • ⭐ Get Messages In Conversation [user, plugin]: Reference

      • CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var timestampBefore = 1641206011000;
        
        CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore);
    • ⭐ Send A Message In Conversation [user, plugin]: Reference

      • CrispClient.website.sendMessageInConversation(websiteID, sessionID, message)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var message = {
          "type": "text",
          "from": "operator",
          "origin": "chat",
          "content": "Hey there! Need help?"
        };
        
        CrispClient.website.sendMessageInConversation(websiteID, sessionID, message);
    • Get A Message In Conversation [user, plugin]: Reference

      • CrispClient.website.getMessageInConversation(websiteID, sessionID, fingerprint)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var fingerprint = 524653764345;
        
        CrispClient.website.getMessageInConversation(websiteID, sessionID, fingerprint);
    • Update A Message In Conversation [user, plugin]: Reference

      • CrispClient.website.updateMessageInConversation(websiteID, sessionID, fingerprint, content)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var fingerprint = 524653764345;
        
        var content = "Hey there! Need help?";
        
        CrispClient.website.updateMessageInConversation(websiteID, sessionID, fingerprint, content);
    • Remove A Message In Conversation [user, plugin]: Reference

      • CrispClient.website.removeMessageInConversation(websiteID, sessionID, fingerprint)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var fingerprint = 524653764345;
        
        CrispClient.website.removeMessageInConversation(websiteID, sessionID, fingerprint);
    • Compose A Message In Conversation [user, plugin]: Reference

      • CrispClient.website.composeMessageInConversation(websiteID, sessionID, compose)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var compose = {
          "type": "start",
          "from": "operator"
        };
        
        CrispClient.website.composeMessageInConversation(websiteID, sessionID, compose);
    • ⭐ Mark Messages As Read In Conversation [user, plugin]: Reference

      • CrispClient.website.markMessagesReadInConversation(websiteID, sessionID, read)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var read = {
          "from": "operator",
          "origin": "urn:crisp.im:slack:0",
          "fingerprints": [
            "5719231201"
          ]
        };
        
        CrispClient.website.markMessagesReadInConversation(websiteID, sessionID, read);
    • Mark Conversation As Unread [user, plugin]: Reference

      • CrispClient.website.markConversationAsUnread(websiteID, sessionID, unread)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var unread = {
          "from": "operator"
        };
        
        CrispClient.website.markConversationAsUnread(websiteID, sessionID, unread);
    • ⭐ Mark Messages As Delivered In Conversation [user, plugin]: Reference

      • CrispClient.website.markMessagesDeliveredInConversation(websiteID, sessionID, delivered)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var delivered = {
          "from": "operator",
          "origin": "urn:crisp.im:slack:0",
          "fingerprints": [
            "5719231201"
          ]
        };
        
        CrispClient.website.markMessagesDeliveredInConversation(websiteID, sessionID, delivered);
    • Update Conversation Open State [user, plugin]: Reference

      • CrispClient.website.updateConversationOpenState(websiteID, sessionID, opened)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var opened = true;
        
        CrispClient.website.updateConversationOpenState(websiteID, sessionID, opened);
    • ⭐ Get Conversation Routing Assign [user, plugin]: Reference

      • CrispClient.website.getConversationRoutingAssign(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getConversationRoutingAssign(websiteID, sessionID);
    • ⭐ Assign Conversation Routing [user, plugin]: Reference

      • CrispClient.website.assignConversationRouting(websiteID, sessionID, assign)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var assign = {
          "assigned": {
            "user_id": "a4c32c68-be91-4e29-8a05-976e93abbe3f"
          }
        };
        
        CrispClient.website.assignConversationRouting(websiteID, sessionID, assign);
    • Update Conversation Inbox [user, plugin]: Reference

      • CrispClient.website.updateConversationInbox(websiteID, sessionID, inboxID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var inboxID = "bf6935c9-43b3-4f8e-87ea-175c1e1ed1a9";
        
        CrispClient.website.updateConversationInbox(websiteID, sessionID, inboxID);
    • ⭐ Get Conversation Metas [user, plugin]: Reference

      • CrispClient.website.getConversationMetas(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getConversationMetas(websiteID, sessionID);
    • ⭐ Update Conversation Metas [user, plugin]: Reference

      • CrispClient.website.updateConversationMetas(websiteID, sessionID, metas)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var metas = {
          "nickname": "John Doe",
          "email": "john.doe@acme-inc.com",
          "segments": [
            "happy",
            "customer",
            "love"
          ],
          "data": {
            "type": "customer",
            "signup": "finished"
          }
        };
        
        CrispClient.website.updateConversationMetas(websiteID, sessionID, metas);
    • Get An Original Message In Conversation [user, plugin]: Reference

      • CrispClient.website.getOriginalMessageInConversation(websiteID, sessionID, originalID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var originalID = "2325a3c0-9b47-4fc6-b00e-111b752e44cd";
        
        CrispClient.website.getOriginalMessageInConversation(websiteID, sessionID, originalID);
    • List Conversation Pages [user, plugin]: Reference

      • CrispClient.website.listConversationPages(websiteID, sessionID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pageNumber = 1;
        
        CrispClient.website.listConversationPages(websiteID, sessionID, pageNumber);
    • List Conversation Events [user, plugin]: Reference

      • CrispClient.website.listConversationEvents(websiteID, sessionID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pageNumber = 1;
        
        CrispClient.website.listConversationEvents(websiteID, sessionID, pageNumber);
    • List Conversation Files [user, plugin]: Reference

      • CrispClient.website.listConversationFiles(websiteID, sessionID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pageNumber = 1;
        
        CrispClient.website.listConversationFiles(websiteID, sessionID, pageNumber);
    • Get Conversation State [user, plugin]: Reference

      • CrispClient.website.getConversationState(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getConversationState(websiteID, sessionID);
    • ⭐ Change Conversation State [user, plugin]: Reference

      • CrispClient.website.changeConversationState(websiteID, sessionID, state)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var state = "unresolved";
        
        CrispClient.website.changeConversationState(websiteID, sessionID, state);
    • Get Conversation Participants [user, plugin]: Reference

      • CrispClient.website.getConversationParticipants(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getConversationParticipants(websiteID, sessionID);
    • Save Conversation Participants [user, plugin]: Reference

      • CrispClient.website.saveConversationParticipants(websiteID, sessionID, participants)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var participants = {
          "participants": [
            {
              "type": "email",
              "target": "jane.doe@acme-inc.com"
            }
          ]
        };
        
        CrispClient.website.saveConversationParticipants(websiteID, sessionID, participants);
    • Get Block Status For Conversation [user, plugin]: Reference

      • CrispClient.website.getBlockStatusForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getBlockStatusForConversation(websiteID, sessionID);
    • Block Incoming Messages For Conversation [user, plugin]: Reference

      • CrispClient.website.blockIncomingMessagesForConversation(websiteID, sessionID, blocked)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var blocked = true;
        
        CrispClient.website.blockIncomingMessagesForConversation(websiteID, sessionID, blocked);
    • Get Verify Status For Conversation [user, plugin]: Reference

      • CrispClient.website.getVerifyStatusForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getVerifyStatusForConversation(websiteID, sessionID);
    • Update Verify Status For Conversation [user, plugin]: Reference

      • CrispClient.website.updateVerifyStatusForConversation(websiteID, sessionID, verified)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var verified = true;
        
        CrispClient.website.updateVerifyStatusForConversation(websiteID, sessionID, verified);
    • Request Email Transcript For Conversation [user, plugin]: Reference

      • CrispClient.website.requestEmailTranscriptForConversation(websiteID, sessionID, to, email)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var email = {
          "to": "operator",
          "email": "valerian@crisp.chat"
        };
        
        CrispClient.website.requestEmailTranscriptForConversation(websiteID, sessionID, to, email);
    • Request Chatbox Binding Purge For Conversation [user, plugin]: Reference

      • CrispClient.website.requestChatboxBindingPurgeForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.requestChatboxBindingPurgeForConversation(websiteID, sessionID);
    • Request User Feedback For Conversation [user, plugin]: Reference

      • CrispClient.website.requestUserFeedbackForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.requestUserFeedbackForConversation(websiteID, sessionID);
    • List Browsing Sessions For Conversation [user, plugin]: Reference

      • CrispClient.website.listBrowsingSessionsForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.listBrowsingSessionsForConversation(websiteID, sessionID);
    • Initiate Browsing Session For Conversation [user, plugin]: Reference

      • CrispClient.website.initiateBrowsingSessionForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.initiateBrowsingSessionForConversation(websiteID, sessionID);
    • Send Action To An Existing Browsing Session [user, plugin]: Reference

      • CrispClient.website.sendActionToExistingBrowsingSession(websiteID, sessionID, browsingID, action)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var browsingID = "browsing_05a9392d-ff3f-45e7-b021-1179c45668fa";
        
        var action = "start";
        
        CrispClient.website.sendActionToExistingBrowsingSession(websiteID, sessionID, browsingID, action);
    • Assist Existing Browsing Session [user, plugin]: Reference

      • CrispClient.website.assistExistingBrowsingSession(websiteID, sessionID, browsingID, assist)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var browsingID = "browsing_05a9392d-ff3f-45e7-b021-1179c45668fa";
        
        var assist = {
          "action": "mouse",
          "mouse": {
            "x": 0,
            "y": 784
          }
        };
        
        CrispClient.website.assistExistingBrowsingSession(websiteID, sessionID, browsingID, assist);
    • Initiate New Call Session For Conversation [user, plugin]: Reference

      • CrispClient.website.initiateNewCallSessionForConversation(websiteID, sessionID, mode)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var mode = "audio";
        
        CrispClient.website.initiateNewCallSessionForConversation(websiteID, sessionID, mode);
    • Get Ongoing Call Session For Conversation [user, plugin]: Reference

      • CrispClient.website.getOngoingCallSessionForConversation(websiteID, sessionID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        CrispClient.website.getOngoingCallSessionForConversation(websiteID, sessionID);
    • Abort Ongoing Call Session For Conversation [user, plugin]: Reference

      • CrispClient.website.abortOngoingCallSessionForConversation(websiteID, sessionID, callID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var callID = "call_35a0c062-72fa-4095-a2a0-f9911d47ee56";
        
        CrispClient.website.abortOngoingCallSessionForConversation(websiteID, sessionID, callID);
    • Transmit Signaling On Ongoing Call Session [user, plugin]: Reference

      • CrispClient.website.transmitSignalingOnOngoingCallSession(websiteID, sessionID, callID, payload)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var callID = "call_35a0c062-72fa-4095-a2a0-f9911d47ee56";
        
        var payload = {
          "type": "sdp",
          "payload": {}
        };
        
        CrispClient.website.transmitSignalingOnOngoingCallSession(websiteID, sessionID, callID, payload);
    • Deliver Widget Button Action For Conversation [user]: Reference

      • CrispClient.website.deliverWidgetButtonActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data, value)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb";
        var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292";
        var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785";
        
        var value = {
          "section_id": "payments",
          "item_id": "refund_on_stripe",
          "data": {
            "invoice": "D-1929-X"
          }
        };
        
        CrispClient.website.deliverWidgetButtonActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data, value);
    • Deliver Widget Data Fetch Action For Conversation [user]: Reference

      • CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb";
        var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292";
        var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785";
        
        var data = {
          "section_id": "payments",
          "item_id": "unpaid_balance",
          "action": "fetch",
          "data": {}
        };
        
        CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data);
    • Deliver Widget Data Edit Action For Conversation [user]: Reference

      • CrispClient.website.deliverWidgetDataEditActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, value)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb";
        var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292";
        var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785";
        
        var data = {
          "section_id": "payments",
          "item_id": "unpaid_balance",
          "action": "fetch",
          "data": {}
        };
        
        CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data);
    • Schedule A Reminder For Conversation [user, plugin]: Reference

      • CrispClient.website.scheduleReminderForConversation(websiteID, sessionID, date, note)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var note = {
          "date": "2018-05-29T09:00:00Z",
          "note": "Call this customer."
        };
        
        CrispClient.website.scheduleReminderForConversation(websiteID, sessionID, date, note);
    • Report Conversation [user, plugin]: Reference

      • CrispClient.website.reportConversation(websiteID, sessionID, flag)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881";
        
        var flag = "spam";
        
        CrispClient.website.reportConversation(websiteID, sessionID, flag);
  • Website People (these are your end-users)

    • Get People Statistics [user, plugin]: Reference

      • CrispClient.website.getPeopleStatistics(websiteID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        CrispClient.website.getPeopleStatistics(websiteID);
    • List Suggested People Segments [user, plugin]: Reference

      • CrispClient.website.listSuggestedPeopleSegments(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSuggestedPeopleSegments(websiteID, pageNumber);
    • Delete Suggested People Segment [user, plugin]: Reference

      • CrispClient.website.deleteSuggestedPeopleSegment(websiteID, segment)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var segment = "poweruser";
        
        CrispClient.website.deleteSuggestedPeopleSegment(websiteID, segment);
    • List Suggested People Data Keys [user, plugin]: Reference

      • CrispClient.website.listSuggestedPeopleDataKeys(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSuggestedPeopleDataKeys(websiteID, pageNumber);
    • Delete Suggested People Data Key [user, plugin]: Reference

      • CrispClient.website.deleteSuggestedPeopleDataKey(websiteID, key)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var key = "price";
        
        CrispClient.website.deleteSuggestedPeopleDataKey(websiteID, key);
    • List Suggested People Events [user, plugin]: Reference

      • CrispClient.website.listSuggestedPeopleEvents(websiteID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listSuggestedPeopleEvents(websiteID, pageNumber);
    • Delete Suggested People Event [user, plugin]: Reference

      • CrispClient.website.deleteSuggestedPeopleEvent(websiteID, text)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var text = "Removed item from basket";
        
        CrispClient.website.deleteSuggestedPeopleEvent(websiteID, text);
    • ⭐ List People Profiles [user, plugin]: Reference

      • CrispClient.website.listPeopleProfiles(websiteID, pageNumber, searchField, searchOrder, searchOperator, searchFilter, searchText)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listPeopleProfiles(websiteID, pageNumber, searchField, searchOrder, searchOperator, searchFilter, searchText);
    • ⭐ Add New People Profile [user, plugin]: Reference

      • CrispClient.website.addNewPeopleProfile(websiteID, peopleProfile)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var peopleProfile = {
          "email": "valerian@crisp.chat",
          "person": {
            "nickname": "Valerian Saliou"
          }
        };
        
        CrispClient.website.addNewPeopleProfile(websiteID, peopleProfile);
    • ⭐ Check If People Profile Exists [user, plugin]: Reference

      • CrispClient.website.checkPeopleProfileExists(websiteID, peopleID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        CrispClient.website.checkPeopleProfileExists(websiteID, peopleID);
    • ⭐ Get People Profile [user, plugin]: Reference

      • CrispClient.website.getPeopleProfile(websiteID, peopleID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        CrispClient.website.getPeopleProfile(websiteID, peopleID);
    • ⭐ Save People Profile [user, plugin]: Reference

      • CrispClient.website.savePeopleProfile(websiteID, peopleID, peopleProfile)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleProfile = {
          "email": "valerian@crisp.chat",
          "person": {
            "nickname": "Valerian Saliou"
          }
        };
        
        CrispClient.website.savePeopleProfile(websiteID, peopleID, peopleProfile);
    • ⭐ Update People Profile [user, plugin]: Reference

      • CrispClient.website.updatePeopleProfile(websiteID, peopleID, peopleProfile)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleProfile = {
          "email": "valerian@crisp.chat",
          "person": {
            "nickname": "Valerian Saliou"
          }
        };
        
        CrispClient.website.updatePeopleProfile(websiteID, peopleID, peopleProfile);
    • ⭐ Remove People Profile [user, plugin]: Reference

      • CrispClient.website.removePeopleProfile(websiteID, peopleID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        CrispClient.website.removePeopleProfile(websiteID, peopleID);
    • List People Conversations [user, plugin]: Reference

      • CrispClient.website.listPeopleConversations(websiteID, peopleID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        var pageNumber = 1;
        
        CrispClient.website.listPeopleConversations(websiteID, peopleID, pageNumber);
    • List People Campaigns [user]: Reference

      • CrispClient.website.listPeopleCampaigns(websiteID, peopleID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        var pageNumber = 1;
        
        CrispClient.website.listPeopleCampaigns(websiteID, peopleID, pageNumber);
    • Add A People Event [user, plugin]: Reference

      • CrispClient.website.addPeopleEvent(websiteID, peopleID, peopleEvent)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleEvent = {
          "text": "Added item to basket",
          "data": {
            "price": 10.99,
            "currency": "USD"
          },
          "color": "red"
        };
        
        CrispClient.website.addPeopleEvent(websiteID, peopleID, peopleEvent);
    • List People Events [user, plugin]: Reference

      • CrispClient.website.listPeopleEvents(websiteID, peopleID, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        var pageNumber = 1;
        
        CrispClient.website.listPeopleEvents(websiteID, peopleID, pageNumber);
    • Get People Data [user, plugin]: Reference

      • CrispClient.website.getPeopleData(websiteID, peopleID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        CrispClient.website.getPeopleData(websiteID, peopleID);
    • Save People Data [user, plugin]: Reference

      • CrispClient.website.savePeopleData(websiteID, peopleID, peopleData)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleData = {
          "data": {
            "type": "customer",
            "signup": "finished"
          }
        };
        
        CrispClient.website.savePeopleData(websiteID, peopleID, peopleData);
    • Update People Data [user, plugin]: Reference

      • CrispClient.website.updatePeopleData(websiteID, peopleID, peopleData)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleData = {
          "data": {
            "signup": "finished"
          }
        };
        
        CrispClient.website.updatePeopleData(websiteID, peopleID, peopleData);
    • Get People Subscription Status [user, plugin]: Reference

      • CrispClient.website.getPeopleSubscriptionStatus(websiteID, peopleID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        CrispClient.website.getPeopleSubscriptionStatus(websiteID, peopleID);
    • Update People Subscription Status [user, plugin]: Reference

      • CrispClient.website.updatePeopleSubscriptionStatus(websiteID, peopleID, peopleSubscription)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50";
        
        var peopleSubscription = {
          "email": true
        };
        
        CrispClient.website.updatePeopleSubscriptionStatus(websiteID, peopleID, peopleSubscription);
    • Export People Profiles [user]: Reference

      • CrispClient.website.exportPeopleProfiles(websiteID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        CrispClient.website.exportPeopleProfiles(websiteID);
    • Import People Profiles [user]: Reference

      • CrispClient.website.importPeopleProfiles(websiteID, profileImportSetup)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var profileImportSetup = {
          "url": "https://storage.crisp.chat/users/processing/import/aa0b64dd-9fb4-4db9-80d6-5a49eb84087b/19d956c7-0294-45ad-89e1-58ce45e7008f.csv",
          "mapping": [
            {
              "column": 1,
              "field": "email"
            },
            {
              "column": 2,
              "field": "person.nickname"
            }
          ],
          "options": {
            "column_separator": ";",
            "skip_header": true
          }
        };
        
        CrispClient.website.importPeopleProfiles(websiteID, profileImportSetup);

👉 Notice: The peopleID argument can be an email or the peopleID.

  • Website Helpdesk

    • Check If Helpdesk Exists [user, plugin]: Reference

      • CrispClient.website.checkHelpdeskExists(websiteID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        CrispClient.website.checkHelpdeskExists(websiteID);
    • Resolve Helpdesk [user, plugin]: Reference

      • CrispClient.website.resolveHelpdesk(websiteID)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        CrispClient.website.resolveHelpdesk(websiteID);
    • Initialize Helpdesk [user]: Reference

      • CrispClient.website.initializeHelpdesk(websiteID, name, domainBasic)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var name = "Valerian Helpdesk";
        var domainBasic = "valerian";
        
        CrispClient.website.initializeHelpdesk(websiteID, name, domainBasic);
    • Delete Helpdesk [user]: Reference

      • CrispClient.website.deleteHelpdesk(websiteID, verify)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var verify = {
          "method": "password",
          "secret": "MySuperSecurePassword";
        };
        
        CrispClient.website.deleteHelpdesk(websiteID, verify);
    • List Helpdesk Locales [user, plugin]: Reference

      • CrispClient.website.listHelpdeskLocales(websiteID, pageNumber, options={})
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        var pageNumber = 1;
        
        CrispClient.website.listHelpdeskLocales(websiteID, pageNumber, {
          order_visits : "1"
        });
    • Add Helpdesk Locale [user, plugin]: Reference

      • CrispClient.website.addHelpdeskLocale(websiteID, locale)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        
        CrispClient.website.addHelpdeskLocale(websiteID, locale);
    • Check If Helpdesk Locale Exists [user, plugin]: Reference

      • CrispClient.website.checkHelpdeskLocaleExists(websiteID, locale)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        
        CrispClient.website.checkHelpdeskLocaleExists(websiteID, locale);
    • Resolve Helpdesk Locale [user, plugin]: Reference

      • CrispClient.website.resolveHelpdeskLocale(websiteID, locale)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        
        CrispClient.website.resolveHelpdeskLocale(websiteID, locale);
    • Delete Helpdesk Locale [user, plugin]: Reference

      • CrispClient.website.deleteHelpdeskLocale(websiteID, locale)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        
        CrispClient.website.deleteHelpdeskLocale(websiteID, locale);
    • List Helpdesk Locale Articles [user, plugin]: Reference

      • CrispClient.website.listHelpdeskLocaleArticles(websiteID, locale, pageNumber)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var pageNumber = 1;
        
        CrispClient.website.listHelpdeskLocaleArticles(websiteID, locale, pageNumber);
    • Add A New Helpdesk Locale Article [user, plugin]: Reference

      • CrispClient.website.addNewHelpdeskLocaleArticle(websiteID, locale, title)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var title = "How to use $crisp JavaScript SDK?";
        
        CrispClient.website.addNewHelpdeskLocaleArticle(websiteID, locale, title);
    • Check If Helpdesk Locale Article Exists [user, plugin]: Reference

      • CrispClient.website.checkHelpdeskLocaleArticleExists(websiteID, locale, articleId)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        CrispClient.website.checkHelpdeskLocaleArticleExists(websiteID, locale, articleId);
    • Resolve Helpdesk Locale Article [user, plugin]: Reference

      • CrispClient.website.resolveHelpdeskLocaleArticle(websiteID, locale, articleId)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        CrispClient.website.resolveHelpdeskLocaleArticle(websiteID, locale, articleId);
    • Save Helpdesk Locale Article [user, plugin]: Reference

      • CrispClient.website.saveHelpdeskLocaleArticle(websiteID, locale, articleId, article)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        var article = {
          "title": "How to use $crisp JavaScript SDK?",
          "description": null,
          "content": "Crisp lets you create your customized chatbox easily. **It's easy to setup**.",
          "featured": false,
          "order": 1
        };
        
        CrispClient.website.saveHelpdeskLocaleArticle(websiteID, locale, articleId, article);
    • Update Helpdesk Locale Article [user, plugin]: Reference

      • CrispClient.website.updateHelpdeskLocaleArticle(websiteID, locale, articleId, article)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        var article = {
          "content": "Crisp lets you create your customized chatbox easily. **It's easy to setup**."
        };
        
        CrispClient.website.updateHelpdeskLocaleArticle(websiteID, locale, articleId, article);
    • Delete Helpdesk Locale Article [user, plugin]: Reference

      • CrispClient.website.deleteHelpdeskLocaleArticle(websiteID, locale, articleId)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        CrispClient.website.deleteHelpdeskLocaleArticle(websiteID, locale, articleId);
    • Resolve Helpdesk Locale Article Page [user, plugin]: Reference

      • CrispClient.website.resolveHelpdeskLocaleArticlePage(websiteID, locale, articleId)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        CrispClient.website.resolveHelpdeskLocaleArticlePage(websiteID, locale, articleId);
    • Resolve Helpdesk Locale Article Category [user, plugin]: Reference

      • CrispClient.website.resolveHelpdeskLocaleArticleCategory(websiteID, locale, articleId)
      • <summary>See Example</summary>
        var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc";
        
        var locale = "en";
        var articleId = "fd036d68-c619-4c63-9deb-e2ce91733dd6";
        
        CrispClient.website.resolveHelpdeskLocaleArticleCategory(websiteID, locale, articleId);
    • Update Helpdesk Locale Article Category [user, plugin]: Reference

      • CrispClient.website.updateHelpdeskLocaleArticleCategory(websiteID, locale, articleId, categoryId, sectionId)
      • <summary>See Example</summary>

changelog

Changelog

v9.10.0

New Features

  • Added support for the bucket:url:crawler:generated RTM API event.

v9.9.0

New Features

  • Added support for the session:set_origin RTM API event.

v9.8.0

New Features

  • Added the new CrispClient.website.markConversationAsUnread method.

v9.7.0

New Features

  • Added the new CrispClient.website.reportConversation method.

v9.6.0

New Features

  • Added support for the session:error RTM API event.

v9.5.0

New Features

  • Added support for the message:acknowledge:ignored RTM API event.

v9.4.0

Breaking Changes

  • ⚠️ Changed the verify argument of the CrispClient.website.inviteWebsiteOperator method (to be a verification challenge).
  • ⚠️ Changed the verify argument of the CrispClient.website.deleteHelpdesk method (to be a verification challenge).
  • ⚠️ Changed the verify argument of the CrispClient.website.deleteWebsite method (to be a verification challenge).

v9.3.1

Breaking Changes

  • ⚠️ Restored the argument of the CrispClient.website.inviteWebsiteOperator method to its specification from pre-v9.3.0.

v9.3.0

Breaking Changes

  • ⚠️ Changed the argument of the CrispClient.website.inviteWebsiteOperator method.

v9.2.0

New Features

  • Added support for the spam:message RTM API event.
  • Added support for the spam:decision RTM API event.

v9.1.0

New Features

  • Added the new CrispClient.website.listSpamConversation method.
  • Added the new CrispClient.website.resolveSpamConversationContent method.
  • Added the new CrispClient.website.submitSpamConversationDecision method.

v9.0.0

Breaking Changes

  • ⚠️ Removed the CrispClient.website.acquireAnalyticsPoints method (API route has been removed).
  • ⚠️ Removed the CrispClient.website.listAnalyticsFilters method (API route has been removed).
  • ⚠️ Removed the CrispClient.website.listAnalyticsClassifiers method (API route has been removed).

New Features

  • Added the new CrispClient.website.generateAnalytics method.

v8.5.0

Breaking Changes

  • ⚠️ Changed the argument of the CrispClient.website.batchResolveConversations method.
  • ⚠️ Changed the argument of the CrispClient.website.batchReadConversations method.
  • ⚠️ Changed the argument of the CrispClient.website.batchRemoveConversations method.

New Features

  • Added the new CrispClient.website.updateConversationInbox method.

v8.4.0

New Features

  • Added the new CrispClient.website.abortWebsiteDeletion method.

v8.3.2

New Features

  • Added the new CrispClient.website.resolveHelpdeskLocaleArticlePage method.

v8.3.1

New Features

  • Added the new CrispClient.plugin.getPluginUsageBills method.

v8.3.0

New Features

  • Added the new CrispClient.plugin.reportPluginUsageToBill method.

v8.2.3

Bug Fixes

  • Use a github: prefix on dependency fbemitter to fix Yarn 3 (closes #59).

v8.2.2

Changes

  • Added an options parameter on CrispClient.website.listHelpdeskLocales(websiteID, pageNumber, options).

v8.2.1

Changes

  • Added provenance information upon building NPM package over GitHub Actions.

v8.2.0

New Features

  • Added support for the session:sync:topic RTM API event.

v8.1.0

Bug Fixes

  • Fixed an issue where CrispClient.rebindSocket and CrispClient._connectLoopback base methods would not work due to undefined this references.

v8.0.3

Changes

  • Updated socket.io-client dependency to latest.

v8.0.2

Changes

  • Updated TypeScript definitions.

v8.0.1

Changes

  • Updated TypeScript definitions.

v8.0.0

New Features

  • Added support for all Helpdesk REST API routes, which have been opened to integrations.

v7.4.2

Bug Fixes

  • Minor README.md title fixes.

v7.4.1

Bug Fixes

  • Changed type of exported services in JSDoc to any so that TypeScript projects can use resource methods without tsc throwing errors.

v7.4.0

New Features

  • Generated up-to-date TypeScript definitions.

Bug Fixes

  • Fixed the automatic generation of TypeScript definitions.

v7.3.0

New Features

  • Added the new CrispClient.website.listConversationFiles method.

v7.2.0

New Features

  • Automated the package release process via GitHub Actions (ie. npm publish).

v7.1.0

New Features

  • Added CrispClient.verifyWidget to verify Widget Events.

v7.0.0

Breaking Changes

  • ⚠️ Renamed the CrispClient.rebind method into CrispClient.rebindSocket (update your code if you use it).

New Features

  • Added support for receiving Web Hooks through the RTM events pipeline (via CrispClient.setRtmMode(Crisp.RTM_MODES.WebHooks)).

v6.4.1

Bug Fixes

  • Return more informative error reasons for non 2xx / 3xx response codes on HEAD requests.

v6.4.0

New Features

  • Added the new CrispClient.website.requestUserFeedbackForConversation method.

v6.3.2

Bug Fixes

  • Prevent Got from throwing errors for non 2xx / 3xx response codes.
  • Fixed body payload type.

v6.3.1

Breaking Changes

  • ⚠️ Support for NodeJS 8 has been removed. The minimum version is now NodeJS 10.

Changes

  • Upgraded dependencies (closes #30).

v6.3.0

New Features

  • Added the new CrispClient.rebind method, which requests the RTM API to rebind to newly installed/subscribed websites (depending on the authentication tier).

v6.2.0

New Features

  • Added the new CrispClient.website.getVerifyStatusForConversation method.
  • Added the new CrispClient.website.updateVerifyStatusForConversation method.

v6.1.0

New Features

  • Added the new CrispClient.website.removeMessageInConversation method.
  • Added support for the message:removed RTM API event.

v6.0.0

Breaking Changes

  • ⚠️ Support for NodeJS 6 has been removed. The minimum version is now NodeJS 8.
  • ⚠️ The CrispClient.on method now returns a Promise. Please update your code accordingly. We do recommend that you add error catchers.

New Features

  • The RTM API URL is now dynamically pulled from the REST API, based on the authentication tier. This allows for (much) more efficient message routing at Crisp scale, and offers performance and stability benefits to your integration.

Bug Fixes

  • Fixed an issue where the library would not reconnect to the RTM API when it lost connection with the server.

v5.3.0

New Features

  • Added the new CrispClient.plugin.getConnectEndpoints method.

v5.2.0

Changes

  • Upgraded Socket.IO from v2 to v4, meaning that node-crisp-api is now connecting to the RTM API over EIO protocol version 4 (versus EIO 3 before).

v5.1.0

New Features

  • Added support for the session:set_subject RTM API event.

v5.0.4

Changes

  • Added a new parameter mode to the CrispClient.website.initiateNewCallSessionForConversation method.

v5.0.3

Changes

  • Improved README.md references to REST API and RTM API resources.

v5.0.2

Changes

  • Added a new parameter data to the CrispClient.website.deliverWidgetDataFetchActionForConversation method.

v5.0.1

Changes

  • Minor README.md title change.

v5.0.0

Breaking Changes

  • ⚠️ The package has been renamed from node-crisp-api to crisp-api. Since it is typical of NPM packages to skip the node- prefix in their name, we chose to normalize the package name to this community standard. The programmatic API did not change, so you can simply update the package name to the new name in your package.json and all imports.

v4.2.0

New Features

  • Added the new CrispClient.website.updatePeopleData method.

v4.1.1

Bug Fixes

  • Fixed TypeScript types not being picked up correctly.

v4.1.0

New Features

  • Added TypeScript definitions.

v4.0.2

Bug Fixes

  • Fixed a typo in the BucketURL resource include from its Bucket service.

v4.0.1

Changes

  • The CrispClient.website.debugExistingBrowsingSession method has been removed, following the sunset of the LiveDebug feature across our products.

v4.0.0

Breaking Changes

🆘 Major changes follow, that will likely require that you update your integration code. If you want to wait to apply those changes, we recommend that you pin node-crisp-api to 3.0.0 or lower in your package.json.

  • ⚠️ All resource methods have been nested into their parent category, eg. website. So all calls to eg. CrispClient.websiteConversation or CrispClient.websitePeople become CrispClient.website. This makes API calls more readable throughout your code.

v3.0.0

Breaking Changes

🆘 Major changes follow, that will likely require that you update your integration code. If you want to wait to apply those changes, we recommend that you pin node-crisp-api to 2.0.0 or lower in your package.json.

  • ⚠️ The programmatic interface to node-crisp-api has been completely revamped, so that all REST API methods specified in REST API Reference (V1) are also available in this wrapper. Most method names have been changed as to match their name in the reference. Please check the README for a full list of available methods.