Pipory
Node reference

Heymarket

Heymarket node reference - all 62 operations, the credential it needs, and a worked example.

Heymarket business texting (Messaging). 62 operations: SMS, MMS, group MMS, broadcasts, private notes and email; conversations (list, open, close, reassign, transfer, read state); contacts v1 and v2 with custom fields and opt-out status; lists; scheduled messages; templates; tracked short links; tags; surveys; inboxes and team.

Credential: Heymarket API credential - see Credentials.

Permissions

Heymarket has no scope system. Its OpenAPI spec publishes two bearer schemes - the legacy team API key (what Pipory's credential holds) and a self-signed HS256 JWT minted from an API Secret - and lists BOTH as acceptable on every one of its 77 operations, with no per-operation scope or permission attached to either. Access is simply whatever the team member behind the key already has, so a 401 or 403 means the key is wrong, revoked, or belongs to a user who cannot reach that inbox - never that a checkbox was left unticked. Limit the blast radius by issuing the key under a user with a restricted team role.

Operations (62)

Messages

OperationWhat it does
sendMessageSend SMS / MMS (1:1)
sendGroupMmsSend group MMS
sendBroadcastSend broadcast to a list
sendPrivateNotePost a private note (memo)
sendEmailSend email
getConversationMessagesGet recent messages in a conversation
listMessagesList all team messages

Conversations

OperationWhat it does
getConversationGet conversation
listConversationsList conversations
markConversationReadMark conversation read
markConversationUnreadMark conversation unread
openConversationOpen conversation
closeConversationClose conversation
reassignConversationReassign conversation to a user
transferConversationTransfer conversation to another inbox

Contacts

OperationWhat it does
createContactCreate contact
getContactGet contact
updateContactUpdate contact
deleteContactDelete contact
findContactFind contact by phone or external ID
listContactsList contacts
batchCreateContactsBatch create contacts
getContactStatusGet contact opt-out / block status
setContactStatusSet contact opt-out / block status
listContactFieldsList custom contact fields
createContactFieldsCreate custom contact fields

Contacts (v2, multi-channel)

OperationWhat it does
createContactV2Create contact (v2)
getContactV2Get contact (v2)
updateContactV2Update contact (v2)
deleteContactV2Delete contact (v2)
listContactsV2List contacts (v2)
searchContactsV2Search contacts by channel (v2)
bulkUpsertContactsV2Bulk create / update contacts (v2)

Lists

OperationWhat it does
createListCreate list
updateListUpdate list membership
deleteListDelete list
getListGet list
listListsList lists

Scheduled messages

OperationWhat it does
createScheduledMessageSchedule a message
getScheduledMessageGet scheduled message
updateScheduledMessageUpdate scheduled message
deleteScheduledMessageCancel scheduled message

Templates

OperationWhat it does
createTemplateCreate template
getTemplateGet template
updateTemplateUpdate template
deleteTemplateDelete template
listTemplatesList templates
OperationWhat it does
createLinkCreate tracked short link
bulkCreateLinksCreate up to 5 tracked links
getLinkGet tracked link
getLinkByShortCodeGet tracked link by short code
updateLinkChange a link's destination
deleteLinkDelete tracked link
listLinksList tracked links

Tags

OperationWhat it does
createTagCreate tag
getTagGet tag
deleteTagDelete tag
listTagsList tags

Surveys

OperationWhat it does
getSurveyGet survey
listSurveysList surveys

Team & inboxes

OperationWhat it does
listInboxesList inboxes
getTeamGet team and members

Example

Send a text — and supply the two ids the old node never collected

A Heymarket node saved before the operation wave will not run until inboxId and creatorId are filled in. That is not a migration we could avoid: the documented send endpoint requires both, the old node sent neither (it posted a body the API does not accept, to a host on a different TLD), and there is no default that would be correct. listInboxes returns both, which is why it exists.

Set Operation to sendMessage, then fill in:

FieldValueNotes
inboxId{{ inboxes.[0].id }}From listInboxes. An integer — Heymarket rejects the string form, so the node coerces and reports a fixable error
creatorId{{ inboxes.[0].creator_id }}The user the message is attributed to
to{{ myTrigger.phone }}E.164
textYour order {{ myTrigger.orderId }} has shipped.

Sets {{sms.messageId}} and {{sms.status}}.