Note:
When calling this API to send a one-to-one message, you must specify whether to synchronize the message to the sender, which is the administrator account or the account specified by the administrator. Synchronization can be implemented via online terminals and roaming servers. This API provides the
SyncOtherMachine
parameter to determine whether to synchronize the message. For more information, see Sample request packet below.
https://console.tim.qq.com/v4/openim/sendmsg?sdkappid=88888888&identifier=admin&usersig=xxx&random=99999999&contenttype=json
The following table only describes the modified parameters when this API is called. For more information on other parameters, please see RESTful API Introduction.
Parameter | Description |
---|---|
v4/openim/sendmsg | The request API |
sdkappid | The SDKAppID assigned by the IM console when an application is created |
identifier | The app administrator account. For more information, please see the App Admin section in Login Authentication. |
usersig | The signature generated in the app administrator account. For details on how to generate the signature, please see Generating UserSig. |
random | A random 32-bit unsigned integer ranging from 0 to 4294967295 |
200 calls per second
Here, we use sending a text message as an example. To send messages of other types, set MsgBody
to the corresponding message type. For more information, see Message Formats.
Note:
If you do not want to synchronize the message to
From_Account
, setSyncOtherMachine
to2
. To synchronize the message toFrom_Account
, setSyncOtherMachine
to1
.
{
"SyncOtherMachine": 2, // Do not synchronize the message to the sender.
"To_Account": "lumotuwe2",
"MsgLifeTime":60, // Retain the message for 60 seconds.
"MsgRandom": 1287657,
"MsgTimeStamp": 1557387418,
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
]
}
Note:
If you do not want to synchronize the message to
From_Account
, setSyncOtherMachine
to2
. To synchronize the message toFrom_Account
, setSyncOtherMachine
to1
.
{
"SyncOtherMachine": 2, // Do not synchronize the message to the sender.
"To_Account": "lumotuwe2",
"MsgLifeTime":60, // Retain the message for 60 seconds.
"MsgRandom": 1287657,
"MsgTimeStamp": 1557387418,
"ForbidCallbackControl":[
"ForbidBeforeSendMsgCallback",
"ForbidAfterSendMsgCallback"], // Callback forbidding control option
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
]
}
From_Account
.Note:
If you do not want to synchronize the message to
From_Account
, setSyncOtherMachine
to2
.
{
"SyncOtherMachine": 2,
"From_Account": "lumotuwe1",
"To_Account": "lumotuwe2",
"MsgLifeTime":3600, // Retain the message for 1 hour.
"MsgRandom": 1287657,
"MsgTimeStamp": 1557387418,
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
],
"OfflinePushInfo": {
"PushFlag": 0,
"Desc": "The content to be pushed offline",
"Ext": "The passthrough content",
"AndroidInfo": {
"Sound": "android.mp3"
},
"ApnsInfo": {
"Sound": "apns.mp3",
"BadgeMode": 1, // If this field is not specified or is set to `0`, the message is counted. If this field is set to `1`, the message is not counted, that is, the icon number in the upper-right corner does not increase.
"Title":"apns title", // APNs title
"SubTitle":"apns subtitle", // APNs subtitle
"Image":"www.image.com" // Image URL
}
}
}
From_Account
(the sender’s terminal).Note:
To synchronize the message to
From_Account
, setSyncOtherMachine
to1
.
{
"SyncOtherMachine": 1, // Synchronize the message to the sender.
"From_Account": "lumotuwe1",
"To_Account": "lumotuwe2",
"MsgRandom": 1287657,
"MsgTimeStamp": 1557387418,
"MsgBody": [
{
"MsgType": "TIMTextElem",
"MsgContent": {
"Text": "hi, beauty"
}
}
]
}
Field | Type | Required | Description |
---|---|---|---|
SyncOtherMachine | Integer | No | 1 : synchronize the message to the From_Account online terminal and roaming server.2 : do not synchronize the message to From_Account .If this field is not specified, the message will be synchronized to the From_Account roaming server by default. |
From_Account | String | No | The UserID of the sender (used to specify the message sender) |
To_Account | String | Yes | The UserID of the recipient |
MsgLifeTime | Integer | No | The offline retention period of the message (unit: second); max. period: 7 days (604800 seconds). 0 , the message will only be sent to the recipient online and not retained offline. |
MsgRandom | Integer | Yes | The random number of the message. It is used by the backend for message deduplication within a second. Make sure the random number is entered. |
MsgTimeStamp | Integer | No | The message timestamp in UNIX format (unit: second) |
ForbidCallbackControl | Array | No | Message callback forbidding field, which is valid only for this message. ForbidBeforeSendMsgCallback forbids the callback before sending the message. ForbidAfterSendMsgCallback forbids the callback after sending the message. |
MsgBody | Object | Yes | Message body. For details on formats, please see Message Formats. (Note: a message can contain multiple message elements, in which case MsgBody is an array.) |
MsgType | String | Yes | TIM message object type. Supported message objects include TIMTextElem (text message), TIMFaceElem (emoji message), TIMLocationElem (location message), and TIMCustomElem (custom message). |
MsgContent | Object | Yes | Different message object types (MsgType ) have different formats (MsgContent ). For details, see Message Formats. |
OfflinePushInfo | Object | No | Offline push information. For details, see Message Formats. |
Response to a successful request
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0,
"MsgTime": 1572870301,
"MsgKey": "89541_2574206_1572870301"
}
Response to a failed request
{
"ActionStatus": "FAIL",
"ErrorInfo": "Fail to Parse json data of body, Please check it",
"ErrorCode": 90001
}
Field | Type | Description |
---|---|---|
ActionStatus | String | Request result. OK : successful. FAIL : failed. |
ErrorCode | Integer | Error code. 0 : successful. Other values: failed. |
ErrorInfo | String | Error information |
MsgTime | Integer | Message timestamp in the UNIX format |
MsgKey | String | The unique identifier of the message. This field is required to recall a message. The value is a string of no more than 50 characters. |
The returned HTTP status code for this API is always 200 unless a network error (such as error 502) occurs. The specific error code and details can be found in the response fields ErrorCode
and ErrorInfo
respectively.
For public error codes (60000 to 79999), please see Error Codes.
The following table describes the error codes specific to this API:
Error Code | Description |
---|---|
20001 | Invalid request packet. |
20002 | UserSig or A2 has expired. |
20003 | The UserID of the sender or recipient is invalid or does not exist. Make sure that the UserID has been imported into IM. |
20004 | Network exception. Try again. |
20005 | Internal server error. Try again. |
20006 | The callback before sending a one-to-one message was triggered, and the app backend returned a response to forbid delivering the message. |
90001 | Failed to parse the JSON request packet. Make sure the format is valid. |
90002 | The MsgBody in the JSON request packet does not meet message format requirements or MsgBody is not an array. For more information, please see the Message Element TIMMsgElement section in Message Formats. |
90003 | The JSON request packet does not contain the To_Account field or the To_Account field is not a string. |
90005 | The JSON request packet does not contain the MsgRandom field or the MsgRandom field is not an integer. |
90006 | The MsgTimeStamp field in the JSON request packet is not an integer. |
90007 | The MsgBody field in the JSON request packet is not an array. Change it to an array. |
90009 | The request requires app admin permissions. |
90010 | The JSON request packet does not meet message format requirements. For more information, see the Message Element TIMMsgElement section in Message Formats. |
90012 | The account specified in To_Account does not exist or has not been registered. Make sure the account has been imported to IM and is correctly spelled. |
90026 | The offline retention time of the message is incorrect. Messages cannot be retained offline for more than 7 days. |
90031 | The SyncOtherMachine field in the JSON request packet is not an integer. |
90044 | The MsgLifeTime field in the JSON request packet is not an integer. |
91000 | Internal service error. Try again. |
90992 | Internal service error. Try again. If this error code is returned for all requests and third-party callback is enabled, make sure the app server returns the callback results to the IM backend normally. |
93000 | The JSON packet has exceeded the maximum size of 8 KB. |
90048 | The requested account does not exist. |
Use the RESTful API online debugging tool to debug this API.
Sending One-to-One Messages to Multiple Users (v4/openim/batchsendmsg)
Querying One-to-One Messages (v4/openim/admin_getroammsg)
Recalling One-to-One Messages (v4/openim/admin_msgwithdraw)
Was this page helpful?