# Message types
| field | description |
| ---- | ----------- |
| type| Message must have field 'type' from Message types enum |
| subType | Message by default have subType from client. Also it can have value from [MessageSubTypeEnum](/5ZfGhqnOSFeM5oJ_6531fQ) |
| messageId | If message what you try to send have messageId field, then we do\`nt save it in DB |
| senderLabel | This field you for displaying from who this message. This platform is used differently on different platforms. If this field not exist in package, then base handler add it([Message sender label](/TliqKkj6Sfepk_QUkxJPBA)) |
Example:
```
{
type: MessageTypeEnum,
?subType: MessageSubTypeEnum,
?senderLabel: String,
?messageId: Number,
}
```
## Message type enum
| value | description | example |
|:-------------- | ----------- | ------- |
| message | | { type: 'message', text: String } |
| typing | | { type: 'typing', isTyping: Boolean } |
| typingPreview | | { type: 'typingPreview', previewText: String } |
| error | | null |
| systemEvent | [System events](/KeujzWaVT6-BmxY1bHcjDw)| { type: 'systemEvent', systemEventId: Number } |