Everpro Chat Open API (1.0.0)

Introduction

Welcome to Everpro Chat API!

Everpro Chat Open API contains specification for public api provided by Everpro for partners. It describes how to communications between your service and Everpro RESTful Web Service.

Flow Diagram

The diagram below describes the overview flow of the Everpro Chat Open API. Before accessing the API, partners need to register their account and generate the client secret and client key.

flow-diagram

Swim Lane Diagram

The diagram below explains how the interaction flows between the Partner system and the Everpro system to send message with template. Partner can skip the Get Device List and Get Message Template List steps if they already know the device phone number and message template key that will be used to send message.

flow-diagram

Limitation

  • Rate limit: 1000 requests per minute per IP address
  • Token will expire after 24 hours

Client Callback

To keep the partner's system synchronized with events occurring in Everpro Chat, partner can configure a callback URL in the Everpro Chat Dashboard page API/App Integration. Once configured, Everpro will send HTTP POST requests to partner's callback URL whenever when specific events occur. Currently, the supported events are:

  • Broadcast delivery status
  • First inbound message
  • First reply by agent
  • Conversation closed
  • Inbound message
  • Agent replies
  • System event

Please refer to section Callback for more details about the callback data for each event.

Callback Security

Signature

To ensure the authenticity and integrity of callback requests, every callback includes an x-everpro-signature header. The signature is generated using the HMAC SHA256 algorithm with the raw request body and the partner's callback key. The callback key can be found in the Everpro Chat Dashboard page API/App Integration once the callback URL is configured.

Signature Formula:

HMAC_SHA256(raw_request_body, callback_key)

We strongly recommend validating the signature before processing any callback request. If the generated signature does not match the value received in the x-everpro-signature header, the request should be rejected.

Signature Validation Example (Golang)

func ValidateSignature(
payload []byte,
secretKey string,
receivedSignature string,
) bool {
    hash := hmac.New(sha256.New, []byte(secretKey))
    hash.Write(payload)

    expectedSignature := hex.EncodeToString(hash.Sum(nil))

    return hmac.Equal(
        []byte(expectedSignature),
        []byte(receivedSignature),
    )
}

Example Usage

func callbackHandler(w http.ResponseWriter, r *http.Request) {
body, err := io.ReadAll(r.Body)
if err != nil {
    http.Error(w, "invalid request body", http.StatusBadRequest)
    return
}

signature := r.Header.Get("x-everpro-signature")

if !ValidateSignature(body, secretKey, signature) {
    http.Error(w, "invalid signature", http.StatusUnauthorized)
    return
}

// Process callback event

w.WriteHeader(http.StatusOK)
}

Data Encryption

The callback payload may contain personal data and other sensitive information. To protect this data during transmission and prevent unauthorized access, the callback payload is encrypted before being sent to partners. The encrypted payload uses AES-256-GCM, which provides both confidentiality and integrity protection. The partner is responsible for decrypting the payload using the encryption key. The encryption key can be found in the Everpro Chat Dashboard page API/App Integration once the callback URL is configured.

Callback Payload Structure

Each callback payload contains a set of standard fields that provide information about the callback event.

JSON
{
  "id": "<request id>",
  "user_id": "<user id>",
  "timestamp": "<timestamp>",
  "event": "<event name>",
  "data": {
    "room_id": "<room id>",
    "customer_phone_number": "<customer phone number>",
    "device_phone_number": "<device phone number>",
    ...
  },
  "encrypted_data": "<encrypted data>"
}

Standard Fields

Field Type Description
id String Unique identifier for the callback event.
user_id String Identifier of the user associated with the event.
timestamp String The timestamp when the event occurred, in ISO 8601 format.
event String The name of the callback event.
data Object The callback data in plain format. This field is deprecated and will be removed in the future.
encrypted_data String The callback data encrypted using AES-256-GCM.

Encrypted_data
The encrypted_data field contains the encrypted version of the callback data. After successfully decrypting the encrypted_data field, the resulting payload will follow the data structure defined for the corresponding event. Please refer to section Callback for more details about the callback data for each event. To support a smooth transition to encrypted callback data, the payload format will be introduced in two phases.


New Callback Events
For new callback events, only `encrypted_data` will be provided. Clients must decrypt and use `encrypted_data` to process these events.
JSON
{
  "id": "<request id>",
  "user_id": "<user id>",
  "timestamp": "<timestamp>",
  "event": "<event name>",
  "encrypted_data": "<encrypted data>"
}

Existing Callback Events
For existing callback events, both data and encrypted_data will initially be provided:

JSON
{
  "id": "<request id>",
  "user_id": "<user id>",
  "timestamp": "<timestamp>",
  "event": "<event name>",
  "data": {
    "room_id": "<room id>",
    "customer_phone_number": "<customer phone number>",
    "device_phone_number": "<device phone number>",
    ...
  },
  "encrypted_data": "<encrypted data>"
}

The plain `data` field will be temporarily maintained for backward compatibility to prevent disruption to existing client integrations. However, partners are expected to migrate to `encrypted_data` as soon as possible. After a transition period, the plain `data` field will no longer be included in callback payloads for existing events.

Data Decryption

The partner must decrypt the encrypted_data field using the AES-256-GCM encryption key provided by our system. The following example demonstrates how to decrypt the payload using Go:

package main

import (
  "crypto/aes"
  "crypto/cipher"
  "crypto/sha256"
  "encoding/base64"
  "errors"
)

// DecryptAES256GCM decrypts a value produced by EncryptAES256GCM.
func DecryptAES256GCM(encryptedData, encryptionKey string) ([]byte, error) {
  key := sha256.Sum256([]byte(encryptionKey))

  block, err := aes.NewCipher(key[:])
  if err != nil {
    return nil, err
  }

  gcm, err := cipher.NewGCM(block)
  if err != nil {
    return nil, err
  }

  data, err := base64.StdEncoding.DecodeString(encryptedData)
  if err != nil {
    return nil, err
  }

  nonceSize := gcm.NonceSize()
  if len(data) < nonceSize {
    return nil, errors.New("ciphertext too short")
  }

  nonce, cipherText := data[:nonceSize], data[nonceSize:]
  decryptedData, err := gcm.Open(nil, nonce, cipherText, nil)
  if err != nil {
    return nil, err
  }

  return decryptedData, nil
}

package main

import (
  "errors"
  "fmt"
)

func main() {
  encryptionKey := "<encryption key>"
  encryptedData := "<encrypted data>"

  // Decrypt
  decryptedData, err := DecryptAES256GCM(encryptedData, encryptionKey)
  if err != nil {
    return
  }

  fmt.Printf("Decrypted Data: %s", string(decryptedData))
}

Response Requirements

Your callback endpoint should return an HTTP 200 OK response after successfully processing the callback request.

Auth

Generate token v2

Get Access Token v2

Request Body schema: application/json
required

Request Body

client_key
required
string

client_key key to generate token bearer

  • Contact us to get yours.
client_secret
required
string

client_secret key to generate token bearer

  • Contact us to get yours.

Responses

Request samples

Content type
application/json
{
  • "client_key": "aBcDEaF8ugo4aWFfK6JEMXtK3LNq5BLS",
  • "client_secret": "HRDbO8KL99xyyRVymkllku23xtpxU4vl"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "success create/get ...",
  • "metadata": null,
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Device

Get Device List

This endpoint returns the list of devices

Authorizations:
BearerToken
query Parameters
phone_number
string

Device phone number

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/chat/v1/device/list',
  qs: {phone_number: 'SOME_STRING_VALUE'},
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "metadata": {
    },
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Division

Get Division List

This endpoint returns the list of chat divisions, including the number of agents per division

Authorizations:
BearerToken
query Parameters
search
string

Filter by division name

page
integer

Page

Must be greater than 0. Default: 1

page_size
integer

Page size

Max: 50. Default: 10

show_total_agent
boolean

Include the total agent count per division

Default: false

is_default
boolean

Filter by default division status

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/chat/v1/division',
  qs: {
    search: 'SOME_STRING_VALUE',
    page: 'SOME_INTEGER_VALUE',
    page_size: 'SOME_INTEGER_VALUE',
    show_total_agent: 'SOME_BOOLEAN_VALUE',
    is_default: 'SOME_BOOLEAN_VALUE'
  },
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "metadata": {
    },
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Template

Get Message Template

This endpoint returns the list of message templates

Authorizations:
BearerToken
query Parameters
name
string

Message template name

category
string

Message template category

Values: MARKETING, UTILITY, AUTHENTICATION

status
string

Message template status

Values: REJECTED, PENDING, APPROVED

template_key
string

Message template key

device_phone_number
string

Device phone number

Example: 628000000000

page
integer

Page

Default: 1

page_size
integer

Page size

Default: 10

sort_by
string

Sort by

Default: meta_created_at

sort_direction
string

Sort direction

Values: ASC, DESC (Default: DESC)

Responses

Request samples

const request = require('request');

const options = {
  method: 'GET',
  url: 'https://client-api-sandbox.everpro.id/chat/v1/message/template',
  qs: {
    name: 'SOME_STRING_VALUE',
    category: 'SOME_STRING_VALUE',
    status: 'SOME_STRING_VALUE',
    template_key: 'SOME_STRING_VALUE',
    device_phone_number: 'SOME_STRING_VALUE',
    page: 'SOME_INTEGER_VALUE',
    page_size: 'SOME_INTEGER_VALUE',
    sort_by: 'SOME_STRING_VALUE',
    sort_direction: 'SOME_STRING_VALUE'
  },
  headers: {Authorization: 'REPLACE_KEY_VALUE'}
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "success create/get ...",
  • "metadata": {
    },
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Sync Message Template

Sync message templates from the provider.

Authorizations:
BearerToken
header Parameters
X-Request-Id
string <uuid>

Request id used for idempotency check

Request Body schema: application/json

Request Body

template_name
required
string

Filter sync to templates matching this name.
Min: 3 characters.

Responses

Request samples

Content type
application/json
{
  • "template_name": "order_confirmation"
}

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "success create/get ...",
  • "metadata": null,
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Message

Send Message with Template

This endpoint sends a message using message template from a specific device to customer's phone number.

Authorizations:
BearerToken
Request Body schema: application/json
required

Request Body

object

Template body's parameters mapping

Must be provided if template has body parameters
For authentication template, the key is only otp.
For other templates, the key depends on the template parameters.
Example:

  • For authentication template:
    {"otp": "ABC123"}

  • For other templates:
    {"1": "John Doe", "2": "Product A"}

Array of objects

Template buttons' parameters, keyed by button index

Must be provided if the template has a dynamic button parameter (e.g. a URL button https://everpro.id/service/{{1}})
Example: fill {{1}} of the button at index 0
[{"index": "0", "parameters": [{"type": "TEXT", "value": "abc123"}]}]

object

Template cards' parameters mapping

Must be provided if the template cards has parameters
Example: mapping body parameter for card in index 1
{"1": {"body_params": {"1": "Product A"}}}

customer_bsuid
string

Receiver BSUID (Meta business-portfolio external customer id)

Format: {ISO_CODE}.{id}
Must be provided together with device_phone_number. Mutually exclusive with customer_phone_number

customer_phone_number
string

Receiver phone number

Format: 628XXXXXXXXXXX
Must be provided together with device_phone_number. Mutually exclusive with customer_bsuid

device_phone_number
required
string

Sender device phone number

Format: 628XXXXXXXXXXX

object

Template header's parameters mapping

Must be provided if template has header parameters
Example: {"1": "John Doe", "2": "Product A"}

template_key
required
string

Message template key

Responses

Request samples

Content type
application/json
{
  • "body_params": {
    },
  • "button_params": [
    ],
  • "card_params": {
    },
  • "customer_bsuid": "ID.123456",
  • "customer_phone_number": "string",
  • "device_phone_number": "string",
  • "header_params": {
    },
  • "template_key": "string"
}

Response samples

Content type
application/json
{
  • "message_status_id": "string",
  • "reason": {
    },
  • "status": "string"
}

Send Reply Message

This endpoint sends a reply message from a specific device or room to customer's phone number.

Authorizations:
BearerToken
header Parameters
X-Request-Id
string <uuid>

Request id used for idempotency check

Request Body schema: application/json
required

Request Body

object

Audio message content

Required when type is audio

customer_bsuid
string

Receiver BSUID (Meta business-portfolio external customer id)

Format: {ISO_CODE}.{id}
Must be provided together with device_phone_number. Mutually exclusive with room_id and customer_phone_number

customer_phone_number
string <phone>

Receiver phone number

Format: 628XXXXXXXXXXX
Must be provided together with device_phone_number. Mutually exclusive with room_id and customer_bsuid

device_phone_number
string <phone>

Sender device phone number

Format: 628XXXXXXXXXXX
Must be provided together with customer_phone_number or customer_bsuid. Mutually exclusive with room_id

object

Document message content

Required when type is document

object

Image message content

Required when type is image

quoted_message_id
string <uuid>

Message id that is being replied to

room_id
string <uuid>

Room id. Required if device_phone_number and (customer_phone_number or customer_bsuid) are not provided

object

Text message content

Required when type is text

type
required
string

Message type Values: text, audio, document, video, image

object

Video message content

Required when type is video

Responses

Request samples

Content type
application/json
{
  • "audio": {},
  • "customer_bsuid": "ID.123456",
  • "customer_phone_number": "6281232323235",
  • "device_phone_number": "6281232323233",
  • "document": {},
  • "image": {},
  • "quoted_message_id": "c1f1ed8e-d4b9-4e4d-b1c1-04ddab94e26d",
  • "room_id": "05451321-18e1-4bfa-aa22-dfd0080cc120",
  • "text": {
    },
  • "type": "text",
  • "video": {}
}

Response samples

Content type
application/json
{
  • "created_at": "2026-08-10T08:51:22.000Z",
  • "customer_conversation_id": "06a71a04-609a-7ede-8000-8423708109be",
  • "message_id": "b1d8c9c6-3e2f-4d5a-8b7c-1a2b3c4d5e6f",
  • "room_id": "5f391b94-108b-48f2-b145-9cdc23608aa4",
  • "session_id": "06a7a7e6-806a-79ed-8000-e625a2fb291f",
  • "status": "sending"
}

Send Interactive Message

This endpoint sends an interactive message from a specific device or room to customer's phone number.

Authorizations:
BearerToken
header Parameters
X-Request-Id
string <uuid>

Request id used for idempotency check

Request Body schema: application/json
required

Request Body

required
object

Interactive message body

required
Array of objects [ 1 .. 10 ] items

Interactive message buttons

For type "reply" you may provide 1–10 buttons
For type "cta_url" only one button is allowed
Button types cannot be mixed — a message is either "reply" buttons or a single "cta_url", never both

customer_bsuid
string

Receiver BSUID (Meta business-portfolio external customer id)

Format: {ISO_CODE}.{id}
Must be provided together with device_phone_number. Mutually exclusive with room_id and customer_phone_number

customer_phone_number
string <phone>

Receiver phone number

Format: 628XXXXXXXXXXX
Must be provided together with device_phone_number. Mutually exclusive with room_id and customer_bsuid

device_phone_number
string <phone>

Sender device phone number

Format: 628XXXXXXXXXXX
Must be provided together with customer_phone_number or customer_bsuid. Mutually exclusive with room_id

object

Interactive message footer

object

Interactive message header

Optional. When provided, header.type determines which header content field is used

room_id
string <uuid>

Room id. Required if device_phone_number and (customer_phone_number or customer_bsuid) are not provided

Responses

Request samples

Content type
application/json
{
  • "body": {
    },
  • "buttons": [],
  • "customer_bsuid": "ID.123456",
  • "customer_phone_number": "6281232323235",
  • "device_phone_number": "6281232323233",
  • "footer": {
    },
  • "header": {},
  • "room_id": "05451321-18e1-4bfa-aa22-dfd0080cc120"
}

Response samples

Content type
application/json
{
  • "created_at": "2026-08-10T08:51:22.000Z",
  • "customer_conversation_id": "06a71a04-609a-7ede-8000-8423708109be",
  • "message_id": "b1d8c9c6-3e2f-4d5a-8b7c-1a2b3c4d5e6f",
  • "room_id": "5f391b94-108b-48f2-b145-9cdc23608aa4",
  • "session_id": "06a7a7e6-806a-79ed-8000-e625a2fb291f",
  • "status": "sending"
}

Room

Assign Room

This endpoint assigns a chat room to a specific division.

Authorizations:
BearerToken
path Parameters
id
required
string <uuid>

Room id

header Parameters
X-Request-Id
string <uuid>

Request id used for idempotency check

Request Body schema: application/json
required

Request Body

division_id
required
string <uuid>

Division id the room should be assigned to

reason
string

Reason for the assignment

Responses

Request samples

Content type
application/json
{
  • "division_id": "3d0a8c9e-4f1b-4a6c-9d2e-5f7b8a9c0d1e",
  • "reason": "manual reassignment"
}

Response samples

Content type
application/json
{
  • "data": null,
  • "message": "success create/get ...",
  • "metadata": null,
  • "request_id": "019564e5-8ab3-7bbe-98dc-164750ec045e",
  • "status": "success",
  • "status_code": 200,
  • "timestamp": "2022-04-14T05:55:35.006Z"
}

Callback

Broadcast Delivery Status Callback

Broadcast Delivery Status Callback is a mechanism to let client know when a broadcast message status was updated.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For broadcast delivery status, the value is broadcast_delivery_status.

object

data is the data of the callback.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "broadcast_delivery_status",
  • "data": {
    },
  • "encrypted_data": "string"
}

First Inbound Message Callback

First Inbound Message Callback is a mechanism to let client know when a first inbound or customer initiated message was received.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For first inbound message, the value is first_inbound_message.

object

data is the data of the callback.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "first_inbound_message",
  • "data": {
    },
  • "encrypted_data": "string"
}

First Reply By Agent Callback

First Reply By Agent Callback is a mechanism to let client know when agent replied to a message for the first time in an active conversation.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For first reply by agent, the value is first_reply_by_agent.

object

data is the data of the callback.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "first_reply_by_agent",
  • "data": {
    },
  • "encrypted_data": "string"
}

Conversation Closed Callback

Conversation Closed Callback is a mechanism to let client know when conversation is closed.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For conversation closed, the value is conversation_closed.

object

data is the data of the callback.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "conversation_closed",
  • "data": {
    },
  • "encrypted_data": "string"
}

Inbound Message Callback

Inbound Message Callback is a mechanism to let client know when a message from customer was received.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For inbound message, the value is inbound_message.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

object

data is the decrypted of the encrypted_data field.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "inbound_message",
  • "encrypted_data": "string",
  • "data": {
    }
}

Agent Replies Callback

Agent Replies Callback is a mechanism to let client know when agent replied to a message in an active conversation.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For agent replied, the value is agent_replies.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

object

data is the decrypted of the encrypted_data field.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "agent_replies",
  • "encrypted_data": "string",
  • "data": {
    }
}

System Event - Agent Assignment

System Event - Agent Assignment Callback is a mechanism to let client know when agent assignment process (assign, unassign, handover) was occured in an active conversation.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For system event, the value is system_event.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

object

data is the decrypted of the encrypted_data field.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "system_event",
  • "encrypted_data": "string",
  • "data": {
    }
}

System Event - Message Delivery Status

System Event - Message Delivery Status Callback is a mechanism to let client know when a broadcast message status that created in chatroom or via dashboard was updated.

header Parameters
x-everpro-signature
required
string

x-everpro-signature is header that contains HMAC SHA256 signature generated from the raw request body using the callback key. Client can use this header to verify the authenticity and integrity of the callback request. Please refer to section Client Callback for more details about how to verify the signature.

user-agent
required
string

user-agent is header to identify the sender of the callback. The value will be everpro

Request Body schema: application/json
required

Request Body

id
string

id is the identifier of the callback event.

user_id
string

user_id is the everpro user identifier.

timestamp
string

timestamp is the timestamp of the callback event was sent.

event
string

event is the event type of the callback. For system event, the value is system_event.

encrypted_data
string

encrypted_data is the encrypted of the callback data using AES-256-GCM.
After decrypting this value using the provided encryption key, please refer to data field for the data structure.

object

data is the decrypted of the encrypted_data field.

Responses

Request samples

Content type
application/json
{
  • "id": "5e1c69e4-8458-414d-8680-058fcad6a3cc",
  • "user_id": "6aed6767-2b40-4526-bf8b-4221b9bd9b02",
  • "timestamp": "2025-10-15T10:30:00.000Z",
  • "event": "system_event",
  • "encrypted_data": "string",
  • "data": {
    }
}