# Create Interfaces using client APIs
These APIs are useful for cases similar to the ones described below.
- Use a custom chat interface instead of the CarbonChat chat widget
- Build conversational interfaces into your mobile apps
- Add CarbonChat to other platforms for which CarbonChat doesn't have an official SDK
# Creating customer objects
You can create and retrieve customer data objects using the inbox_identifier and customer_identifier.
# Inbox Identifier
The inbox_identifier for the API channel can be obtained by running the following command in your rails console.
# replace api_inbox_id with your inbox id
Inbox.find(api_inbox_id).channel.identifier
# Customer Identifier
The customer_identifier or the source_id can be obtained when creating the customer using the create API. You will need to store this identifier on your client-side to make further requests on behalf of the customer. This can be done in cookies, local storage etc.
# Available APIs
Some of the things you can do via the APIs are
- Create, View and Update Contact
- Create and List Conversations
- Create, List and Update Messages
# HMAC Authentication
The Client APIs also support HMAC Authentication (opens new window). The HMAC token for the Channel can be obtained via running the following on your rails console.
# replace api_inbox_id with your inbox id
Inbox.find(api_inbox_id).channel.hmac_token
# Connecting to the CarbonChat WebSockets
To receive the real-time updates from the agent dashboard, You can connect to the CarbonChat WebSockets. CarbonChat WebSockets connecting can be made at the following URL
<your installation url>/cable
# Authenticating your WebSocket connection
You will start receiving the events directed towards your customer object after subscribing using the customer pubsub_token. pubsub_token is provided during the customer create API call.
const connection = new WebSocket('ws://localhost:3000/cable');
connection.send(JSON.stringify({ command:"subscribe", identifier: "{\"channel\":\"RoomChannel\",\"pubsub_token\":\""+ customer_pubsub_token+"\"}" }));
Find the full list of events supported by the web sockets here (opens new window).