Create message
Create an inbound customer message. If `conversation.id` is provided the message is appended to that conversation; otherwise a new conversation is created on the channel given by `conversation.type` (email / sms / web_chat). For email, threading uses RFC 5322 References / In-Reply-To headers passed via `message.email`. The AI agent processes the message and any reply is delivered through Applied's native channel (Postmark for email, Twilio for SMS, WebSocket for web chat) — never through a ticketing connector.
/v2026-04/messages/Usage
Start from this cURL example and add filters as needed.
curl -X POST https://core.appliedlabs.ai/v2026-04/messages/ \
-H "Authorization: Bearer <api-token>" \
-H "X-Shop-Id: 66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10" \
-H "Content-Type: application/json" \
--data '{
"contact": {
"email": "support@example.com",
"name": "",
"phone": "string",
"remote_id": "string"
},
"conversation": {
"agent_contact": "string",
"direction": "inbound",
"flags": [
"66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
],
"id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"intent_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"tags": [
"string"
],
"topic_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"type": "email",
"user_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
},
"message": {
"attachments": [
"66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
],
"content": "string",
"email": {
"bcc": [
{
"email": "support@example.com",
"name": ""
}
],
"cc": [
{
"email": "support@example.com",
"name": ""
}
],
"in_reply_to": "",
"references": [
"string"
],
"subject": ""
},
"format": "TEXT",
"remote_id": "string",
"timestamp": "2026-04-07T14:30:00Z"
}
}'Authorizations
Send your Applied API key as Authorization: Bearer AL.... Create the key in the Applied dashboard and keep it on your server.
Header parameters
X-Shop-Idstring · uuidrequiredThe shop whose data you want to read.
Body
contactobjectrequiredcontact.emailstring · email | nullcontact.namestringcontact.phonestring | nullcontact.remote_idstring | nullYour system's stable ID for this customer. Stored on the contact with the platform set to your workspace handle, and used to match the same customer on future messages even if their email or phone changes.
conversationobjectrequiredconversation.agent_contactstring | nullThe support email or phone the inbound message was sent to. Used to resolve which Agent handles the conversation. Required for email and sms types; omit for web_chat.
conversation.directionenum<string>requiredinboundconversation.flagsarray | nullIDs of flags to apply to the conversation before the AI agent processes the message. Appended to any flags already on the conversation; duplicates are ignored. Adding a flag triggers any flows configured for it. At most 10 per request.
conversation.idstring · uuid | nullconversation.intent_idstring · uuid | nullconversation.tagsarray | nullTags to apply to the conversation before the AI agent processes the message. Appended to any tags already on the conversation; duplicates are ignored. At most 20 per request.
conversation.topic_idstring · uuid | nullconversation.typeoneOfemailsmsweb_chatconversation.user_idstring · uuid | nullmessageobjectrequiredmessage.attachmentsarraymessage.contentstringrequiredmessage.emailobjectOptional email-specific headers attached to message.email.
message.formatallOfTEXTMARKDOWNHTMLmessage.remote_idstring | nullmessage.timestampstring · date-time | null{
"contact": {
"email": "support@example.com",
"name": "",
"phone": "string",
"remote_id": "string"
},
"conversation": {
"agent_contact": "string",
"direction": "inbound",
"flags": [
"66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
],
"id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"intent_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"tags": [
"string"
],
"topic_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10",
"type": "email",
"user_id": "66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
},
"message": {
"attachments": [
"66e4c4d2-34e8-4f85-8f51-84b6ed7b5f10"
],
"content": "string",
"email": {
"bcc": [
{
"email": "support@example.com",
"name": ""
}
],
"cc": [
{
"email": "support@example.com",
"name": ""
}
],
"in_reply_to": "",
"references": [
"string"
],
"subject": ""
},
"format": "TEXT",
"remote_id": "string",
"timestamp": "2026-04-07T14:30:00Z"
}
}Response
The existing message that matched the dedup key.
agent_idstring · uuid | nullrequiredcontact_idstring · uuid | nullrequiredcontact_remote_idstring | nullrequiredYour system's ID for the message's contact, if one is set.
contentstringconversation_flagsarrayrequiredIDs of flags currently applied to the message's conversation.
conversation_flags[]string · uuidconversation_idstring · uuid | nullrequiredconversation_tagsarrayrequiredTags currently applied to the message's conversation.
conversation_tags[]stringcreated_atstring · date-timeformatenum<string>How the message content is formatted.
TEXTRICH_TEXTHTMLMARKDOWNidstring · uuidrequiredremote_idstring | nullremote_platformstring | nullrolestringstatusoneOfDelivery status for outbound messages.
PENDINGDELIVEREDFAILEDHIDDENtextstringticket_idstring · uuid | nullrequiredtypeenum<string>Whether the message is customer-facing or internal only.
InternalExternalupdated_atstring · date-timerequireduser_idstring · uuid | nullrequired{
"agent_id": "33333333-3333-4333-8333-333333333333",
"contact_id": "11111111-1111-4111-8111-111111111111",
"contact_remote_id": "cus_3667beus",
"content": "Participant individual American range attorney role.",
"conversation_flags": [
"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"
],
"conversation_id": "55555555-5555-4555-8555-555555555555",
"conversation_tags": [
"vip",
"billing"
],
"created_at": "2026-04-07T14:30:00Z",
"format": "TEXT",
"id": "66666666-6666-4666-8666-666666666666",
"remote_id": "msg_0426mwfo",
"remote_platform": "zendesk",
"role": "assistant",
"status": "DELIVERED",
"text": "Participant individual American range attorney role.",
"ticket_id": "77777777-7777-4777-8777-777777777777",
"type": "External",
"updated_at": "2026-04-07T15:12:00Z",
"user_id": "44444444-4444-4444-8444-444444444444"
}