Get a message
AI agents: read /llms.txt; add .md to any page URL. This page as Markdown: /reference/messages/v2-messages-show.md. Index of every page and the rules for every call: /llms.txt. Guides and concepts in one file: /llms-full.txt. OpenAPI: /openapi.json.
GET/
Returns one message in full: the message as written (message), the whole message as HTML (original_message), attachments, recipients with their delivery status, its team status, and retryable, which says whether a failed delivery can be sent again.
It has fields the list doesn't (display_type, message_participant_id, driver, message, original_message, retryable, message_status) and lacks some the list has (customer, vendor, is_order_rush, mode).
Path parameters
Your team slug, shown as Team ID next to your API key in Profile.
- Example
your-team
- Example
The message's
id, from the message list. A hash id; unique keys and document numbers are refused with 404.- Example
u7HKhdhT6tkEUy
- Example
Request body
This operation takes no request body.
Response
200Successful response.
Child fields (35)
actor_namestring | nullThe writer's name, by
actor_type: your team's name forsystem, the team member, the contact, the order's customer, the purchase order's vendor, the participant, or the name aguestgave. Null when YoPrint can't find the writer's record.actor_typestringWho wrote it:
user,customer,vendor,contact(written in the customer or vendor portal),participant,guest(someone who is not a contact) orsystem.attachmentsarray of objectsFiles attached to it, in the same shape as an upload (
id,name,file_name,mime_type,size,url).contactobject | nullThe contact who wrote it, when
contact_idis set:first_name,last_name,email,phoneand more.contact_idstring | nullcreated_atstring (date-time)delivery_summaryobject | nullOutbound messages: how delivery went across all recipients. Null for inbound messages.
Child fields (12)
acceptedintegercompletebooleandeliveredintegerfailedintegerreasonstring | nullWhy the state is not final, or why nothing was sent, for example
no_recipientsordelivery_evidence_unavailable. Usually null.retryablebooleanTrue when the retry operation accepts this message. When false, it answers 422.
skippedintegerstatestringsent: the provider took it, delivery not confirmed yet.partial: recipients are in different states.not_sent: there were no recipients.- One of:
"pending","sending","sent","delivered","failed","partial","unknown","not_sent"
- One of:
submittingintegertotalintegerunknownintegerwaitinginteger
display_typestringHow the web app draws it, for example
default_v2, orsystem_v2for automatic messages.driverstring | nullemail,sms, orwebfor a message written in YoPrint.emailstring | nullThe sender's email address.
has_messagebooleanhas_original_messagebooleanidstringmessagestring | nullThe message as it was written, without the email layout.
message_participant_idstring | nullThe author, as a message participant.
message_statusobject | nullThe status named by
status_id:id,role(customer_message),type,label,customer_label,color,position,trashed.namestring | nullThe sender's name.
order_idstring | nullThe sales order or quote it is on.
order_object_typestring | nullsales_orderorquote. Null without an order.order_quoteboolean | nullorder_scoped_idstring | nullThe order's number, such as
SO1001. An empty string""(not null) without an order.original_messagestring | nullThe whole message as HTML: for a reply, the email as it arrived, with any quoted text; for a message you sent, the full message YoPrint rendered.
participantobject | nullThe author, as a message participant, when
message_participant_idis set. Itsdelivery_*fields are null.Child fields (24)
can_receive_mailbooleancan_receive_smsbooleancontactobject | nullThe contact, for
typecontact:first_name,last_name,email,phoneand more.contact_idstring | nulldelivery_channelstring | null- One of:
"email","sms"
- One of:
delivery_created_atstring (date-time) | nulldelivery_destinationstring | nullThe email address or phone number it went to.
delivery_destination_namestring | nulldelivery_idstring | nullThe recipient id: the id the recipient operations take. Null on
participant.delivery_latest_error_reasonstring | nulldelivery_message_idstring | nulldelivery_participant_idstring | nulldelivery_statestring | nullFrom the provider's report. Null for older messages and on
participant.- One of:
"pending","sending","sent","delivered","failed","unknown"
- One of:
delivery_statusstring | null- One of:
"pending","dispatched","dispatch_failed","delivered","delivery_failed"
- One of:
delivery_updated_atstring (date-time) | nullemailstring | nullidstringThe participant id. The recipient operations take
delivery_id, not this.namestring | nullorder_idstring | nullphonestring | nullpurchase_order_idstring | nullstatusstringWhat they receive:
message,notification,allordisabled.trashedbooleantypestringuser: a team member.contact: one of the customer's or vendor's contacts.guest: just a name and email.- One of:
"user","contact","guest"
- One of:
preview_messagestring | nullA short plain-text preview.
purchase_order_idstring | nullThe purchase order it is on.
purchase_scoped_idstring | nullThe purchase order's number. Null when it is not on a purchase order.
recipientsarray of objectsWho it was sent to: each participant with its delivery (
delivery_status,delivery_channel,delivery_destination).delivery_idis the id the recipient operations take.Fields of each item (24)
can_receive_mailbooleancan_receive_smsbooleancontactobject | nullThe contact, for
typecontact:first_name,last_name,email,phoneand more.contact_idstring | nulldelivery_channelstring | null- One of:
"email","sms"
- One of:
delivery_created_atstring (date-time) | nulldelivery_destinationstring | nullThe email address or phone number it went to.
delivery_destination_namestring | nulldelivery_idstring | nullThe recipient id: the id the recipient operations take. Null on
participant.delivery_latest_error_reasonstring | nulldelivery_message_idstring | nulldelivery_participant_idstring | nulldelivery_statestring | nullFrom the provider's report. Null for older messages and on
participant.- One of:
"pending","sending","sent","delivered","failed","unknown"
- One of:
delivery_statusstring | null- One of:
"pending","dispatched","dispatch_failed","delivered","delivery_failed"
- One of:
delivery_updated_atstring (date-time) | nullemailstring | nullidstringThe participant id. The recipient operations take
delivery_id, not this.namestring | nullorder_idstring | nullphonestring | nullpurchase_order_idstring | nullstatusstringWhat they receive:
message,notification,allordisabled.trashedbooleantypestringuser: a team member.contact: one of the customer's or vendor's contacts.guest: just a name and email.- One of:
"user","contact","guest"
- One of:
rendered_attachmentsarray of objectsEverything attached when it was sent: the files (
attachment_typemedia, upload shape) and generated documents such as the order PDF (attachment_typeinternal_attachment, withnameandurl).retryablebooleanFor outbound messages, the same as
delivery_summary.retryable.statusstring | nullOlder delivery status word, such as
pending,dispatched,partial_delivered,delivery_failed,delivered, orreceivedfor a reply. Preferdelivery_summary.status_idstring | nullYour team's message status (for example "Needs reply"), set with the status operation. Null when none is set.
systembooleanTrue for messages YoPrint sent automatically.
typestringoutbound: sent by your team.inbound: a reply received.- One of:
"outbound","inbound"
- One of:
userobject | nullThe team member who wrote it, when
user_idis set.Child fields (5)
avatar_urlstring | nullemailstringidstringnamestringtimezonestring | null
user_idstring | null
Errors
401The API key is missing or wrong (
unauthenticated).403You are not allowed to do this.
api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only{"message": "Insufficient Permission"}. Other refusals use the error envelope, withunauthorizedoruser_is_not_authorized.- When
- The message is on a sales order or quote you can't message (
user_is_not_authorized). - Fix
- Ask a team admin for permission to message that order.
404Not found.
page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's.code: null, with a message that starts "No query results for": there is no record with that id.- When
- No message of this team has this id, or it is an internal notification.
- Fix
- Use an
idfrom the message list.
Related
- GETList a message's recipients
/v2/ api/ store/ {team_slug}/ messages/ {hash_id}/ recipients - PUTRetry a message's failed deliveries
/v2/ api/ store/ {team_slug}/ messages/ {hash_id}/ retry - PUTSet a message's status
/v2/ api/ store/ {team_slug}/ messages/ {hash_id}/ status
