Sendblue
App · 20 actions
Text customers over iMessage and SMS with Sendblue: send messages, reactions, typing indicators and read receipts, check iMessage support, and manage contacts and webhooks.
Actions
| Action | What it does |
|---|---|
| Add verified contact | Let a phone number be messaged from the free plan's shared line. |
| Add webhook | Add an https:// address for Sendblue to post one type of event to. |
| Check iMessage support | Check whether a phone number or email address can receive iMessages. |
| Create contact | Add a contact with name, owner, line, tags and custom variables. |
| Delete contact | Delete a contact by phone number. |
| Delete webhook | Remove one webhook address for one event type. |
| Get contact | Get a contact by phone number. |
| Get message | Get one sent or received message by its handle, with its content, service, status and any error. |
| Get message status | Check whether a sent message is queued, sent, delivered or failed, by its handle. |
| List contacts | List a page of your contacts, optionally by phone number, contact id or creation time. |
| List lines | List the Sendblue phone numbers you can send from. |
| List messages | List messages sent and received on your account, filtered by line, contact, direction, service, status or time. |
| List verified contacts | List the numbers added for the free plan's shared line, with whether each is verified yet, and the line itself. |
| List webhooks | List the addresses Sendblue posts events to, with each one's event type. |
| Mark conversation read | Send a read receipt for a one-to-one conversation, so the person sees their messages as read. |
| Send message | Send a one-to-one iMessage from your Sendblue line, with text, a picture or file link, or both. |
| Send reaction | React to a message you received over iMessage in the last few days, with a tapback (love, like, laugh...) or one emoji, or remove a tapback. |
| Send typing indicator | Show or hide the typing bubble in an existing one-to-one iMessage conversation. |
| Set contact opt-out | Opt a contact out of your messages, or back in. |
| Update contact | Change a contact's name, company, owner, line, tags or custom variables. |
Add verified contact
Let a phone number be messaged from the free plan's shared line. It stays pending until the person texts the line number returned; the result says what to tell them. Returns the existing entry if the number was already added.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
Outputs
contactobject- The verified contact
lineobject- The shared line they must text
verification_instructionstext- What to tell them; empty once verified
Example output
{
"contact": {
"created_at": "2026-10-14T10:00:00.000Z",
"phone_number": "+15551234567",
"updated_at": "2026-10-14T10:05:00.000Z",
"verification_status": "pending",
"verified": true
},
"line": {
"phone_number": "+13055550100",
"type": "shared"
},
"verification_instructions": "Text any message to +13055550100 to start chatting."
}Add webhook
Add an https:// address for Sendblue to post one type of event to. Existing webhooks are kept. Webhooks apply to every line on the account.
Inputs
- Webhook URL
urltextRequired - The https:// address Sendblue posts events to.
- Event
webhook_typetext - Which events the address receives. Defaults to Message received.One of:
receive(Message received),outbound(Message status (outbound)),typing_indicator(Typing indicator),call_log(Call log),call_completed(Call completed),inbound_call(Inbound call),line_blocked(Line blocked),line_assigned(Line assigned),contact_profile(Contact profile),contact_created(Contact created). - Signing secret
secrettext - A secret Sendblue sends with each event so your endpoint can check it came from Sendblue.
- Only for lines
sendblue_numberslist - Only send events for these Sendblue numbers. Message received webhooks only.
Outputs
addedtrue/false- Always true once added
messagetext- Sendblue's confirmation
urltext- The address added
webhook_typetext- Its event type
webhookslist- Every webhook now set
Example output
{
"added": true,
"message": "Webhooks added successfully",
"url": "https://example.com/sendblue",
"webhook_type": "receive",
"webhooks": [
{
"has_secret": false,
"sendblue_numbers": [],
"url": "https://example.com/sendblue",
"webhook_type": "receive"
}
]
}Check iMessage support
Check whether a phone number or email address can receive iMessages. Limited to 30 checks an hour and 100 a day per line.
Inputs
- Phone number or email
numbertextRequired - The phone number (like +15551234567) or email.
Outputs
numbertext- The number checked
servicetext- iMessage or SMS
supports_imessagetrue/false- Whether it can receive iMessages
Example output
{
"number": "+15551234567",
"service": "iMessage",
"supports_imessage": true
}Create contact
Add a contact with name, owner, line, tags and custom variables. This does not let you message them on the free plan; use 'Add verified contact' for that.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
- First name
first_nametext - The contact's first name.
- Last name
last_nametext - The contact's last name.
- Assigned to
assigned_to_emailtext - The email address of the teammate who owns this contact.
- Sendblue line
sendblue_numbertext - The Sendblue number this contact talks to.
- Tags
tagslist - Tags to give the contact.
- Custom variables
custom_variablesobject - Text values by label, for example plan: Pro. A new label is created for you.
- Update if it exists
update_if_existstrue/false - If a contact with this number exists, update it instead of failing.
Outputs
contactobject- The contact as Sendblue has it now
Example output
{
"contact": {
"assigned_to_email": null,
"company_name": null,
"contact_id": "c_8f2a1b",
"created_at": "2026-10-15T10:00:00.000Z",
"custom_variables": {
"plan": "Pro"
},
"first_name": "Jo",
"last_name": "Rivera",
"opt_out": false,
"phone": "+15551234567",
"sendblue_number": "+13055550100",
"tags": [
"lead"
]
}
}Delete contact
Delete a contact by phone number.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
Outputs
deletedtrue/false- Always true once deleted
numbertext- The contact deleted
statustext- Sendblue's status
Example output
{
"deleted": true,
"number": "+15551234567",
"status": "OK"
}Delete webhook
Remove one webhook address for one event type.
Inputs
- Webhook URL
urltextRequired - The https:// address Sendblue posts events to.
- Event
webhook_typetext - Which events the address receives. Defaults to Message received.One of:
receive(Message received),outbound(Message status (outbound)),typing_indicator(Typing indicator),call_log(Call log),call_completed(Call completed),inbound_call(Inbound call),line_blocked(Line blocked),line_assigned(Line assigned),contact_profile(Contact profile),contact_created(Contact created).
Outputs
deletedtrue/false- Always true once deleted
messagetext- Sendblue's confirmation
urltext- The address removed
webhook_typetext- Its event type
Example output
{
"deleted": true,
"message": "Webhooks deleted successfully",
"url": "https://example.com/sendblue",
"webhook_type": "receive"
}Get contact
Get a contact by phone number.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
Outputs
contactobject- The contact as Sendblue has it now
Example output
{
"contact": {
"assigned_to_email": null,
"company_name": null,
"contact_id": "c_8f2a1b",
"created_at": "2026-10-15T10:00:00.000Z",
"custom_variables": {
"plan": "Pro"
},
"first_name": "Jo",
"last_name": "Rivera",
"opt_out": false,
"phone": "+15551234567",
"sendblue_number": "+13055550100",
"tags": [
"lead"
]
}
}Get message
Get one sent or received message by its handle, with its content, service, status and any error.
Inputs
- Message handle
message_handletextRequired - The message's handle, from 'Send message', 'List messages' or an earlier step.
Outputs
account_emailtextcontenttextdate_senttextdate_updatedtexterror_codenumbererror_detailtexterror_keytexterror_messagetexterror_reasontextfrom_numbertextgroup_display_nametextgroup_idtextis_outboundtrue/falsemedia_urltextmessage_handletextmessage_typetextnumbertextopted_outtrue/falseparticipantslistplantextreply_toobjectsend_styletextsendblue_numbertextsender_emailtextservicetextstatustextto_numbertextwas_downgradedtrue/false
Example output
{
"account_email": "owner@example.com",
"content": "Hello from Lodol",
"date_sent": "2026-10-15T10:00:00.000Z",
"date_updated": "2026-10-15T10:00:02.000Z",
"from_number": "+13055550100",
"is_outbound": true,
"message_handle": "5a17319e-2a6c-4c3e-9f1e-7b8d2c1a0f11",
"message_type": "message",
"number": "+15551234567",
"sendblue_number": "+13055550100",
"service": "iMessage",
"status": "DELIVERED",
"to_number": "+15551234567",
"was_downgraded": false
}Get message status
Check whether a sent message is queued, sent, delivered or failed, by its handle.
Inputs
- Message handle
message_handletextRequired - The message's handle, from 'Send message', 'List messages' or an earlier step.
Outputs
account_emailtextcontenttextdate_createdtextdate_updatedtexterror_codenumbererror_keytexterror_messagetextfrom_numbertextis_outboundtrue/falsemedia_urltextmessage_handletextmessage_typetextnumbertextreply_toobjectsend_styletextsender_emailtextstatustext
Example output
{
"account_email": "owner@example.com",
"content": "Hello from Lodol",
"date_created": "2026-10-15T10:00:00.000Z",
"date_updated": "2026-10-15T10:00:01.000Z",
"error_code": null,
"error_message": null,
"from_number": "+13055550100",
"is_outbound": true,
"media_url": null,
"message_handle": "5a17319e-2a6c-4c3e-9f1e-7b8d2c1a0f11",
"message_type": "message",
"number": "+15551234567",
"send_style": null,
"status": "DELIVERED"
}List contacts
List a page of your contacts, optionally by phone number, contact id or creation time.
Inputs
- Phone number
phone_numbertext - Only the contact with this phone number.
- Contact ID
contact_idtext - Only the contact with this Sendblue id.
- Created after
created_afterdate and time - Only contacts created at or after this time.
- Sort by
order_bytext - The field to sort by. Defaults to created.One of:
created_at(Created),firstName(First name),lastName(Last name),phone. - Sort direction
order_directiontext - Ascending or descending.One of:
asc(Ascending),desc(Descending). - Limit
limitnumber - How many contacts to return, up to 1000 (default 100).From 1 to 1000.
- Offset
offsetnumber - How many contacts to skip, up to 10000.From 0 to 10000.
Outputs
contactslist- The contacts
countnumber- How many on this page
has_moretrue/false- Whether a full page came back, so more may remain
limitnumber- The page size
offsetnumber- How many were skipped
Example output
{
"contacts": [
{
"assigned_to_email": null,
"company_name": null,
"contact_id": "c_8f2a1b",
"created_at": "2026-10-15T10:00:00.000Z",
"custom_variables": {
"plan": "Pro"
},
"first_name": "Jo",
"last_name": "Rivera",
"opt_out": false,
"phone": "+15551234567",
"sendblue_number": "+13055550100",
"tags": [
"lead"
]
}
],
"count": 1,
"has_more": false,
"limit": 100,
"offset": 0
}List lines
List the Sendblue phone numbers you can send from.
Inputs
None.
Outputs
countnumber- How many
numberslist- The line numbers
Example output
{
"count": 1,
"numbers": [
"+13055550100"
]
}List messages
List messages sent and received on your account, filtered by line, contact, direction, service, status or time.
Inputs
- Sendblue line
sendblue_numbertext - Only messages on this Sendblue number.
- Contact number
numbertext - Only messages to or from this phone number.
- Direction
directiontext - Only received or only sent messages.One of:
inbound(Received (inbound)),outbound(Sent (outbound)). - Service
servicetext - Only messages sent over this service.One of:
iMessage,SMS,RCS. - Status
statustext - Only messages with this status.One of:
REGISTERED,PENDING,SENT,DELIVERED,RECEIVED,QUEUED,ERROR,DECLINED,ACCEPTED,SUCCESS. - Conversation type
message_typetext - Only one-to-one or only group messages.One of:
message(One-to-one),group. - Group ID
group_idtext - Only messages in this group conversation.
- Created after
created_afterdate and time - Only messages created at or after this time.
- Created before
created_beforedate and time - Only messages created at or before this time.
- Updated after
updated_afterdate and time - Only messages updated at or after this time.
- Sort by
order_bytext - Which time to sort by.One of:
createdAt(Created),updatedAt(Updated),sentAt(Sent). - Sort direction
order_directiontext - Ascending or descending.One of:
asc(Ascending),desc(Descending). - Limit
limitnumber - How many messages to return, up to 100.From 1 to 100.
- Offset
offsetnumber - How many messages to skip, for the next page.At least 0.
Outputs
countnumber- How many on this page
has_moretrue/false- Whether more remain
limitnumber- The page size
messageslist- The messages
offsetnumber- How many were skipped
totalnumber- How many match in all
Example output
{
"count": 1,
"has_more": false,
"limit": 50,
"messages": [
{
"account_email": "owner@example.com",
"content": "Hello from Lodol",
"date_sent": "2026-10-15T10:00:00.000Z",
"date_updated": "2026-10-15T10:00:02.000Z",
"from_number": "+13055550100",
"is_outbound": true,
"message_handle": "5a17319e-2a6c-4c3e-9f1e-7b8d2c1a0f11",
"message_type": "message",
"number": "+15551234567",
"sendblue_number": "+13055550100",
"service": "iMessage",
"status": "DELIVERED",
"to_number": "+15551234567",
"was_downgraded": false
}
],
"offset": 0,
"total": 1
}List verified contacts
List the numbers added for the free plan's shared line, with whether each is verified yet, and the line itself.
Inputs
- Status
verification_statustext - Only verified or only pending contacts.One of:
verified,pending.
Outputs
contactslist- The contacts
countnumber- How many
lineobject- The shared line
Example output
{
"contacts": [
{
"created_at": "2026-10-14T10:00:00.000Z",
"phone_number": "+15551234567",
"updated_at": "2026-10-14T10:05:00.000Z",
"verification_status": "verified",
"verified": true
}
],
"count": 1,
"line": {
"phone_number": "+13055550100",
"type": "shared"
}
}List webhooks
List the addresses Sendblue posts events to, with each one's event type. Signing secrets are not shown.
Inputs
- Event
webhook_typetext - Only webhooks for this event.One of:
receive(Message received),outbound(Message status (outbound)),typing_indicator(Typing indicator),call_log(Call log),call_completed(Call completed),inbound_call(Inbound call),line_blocked(Line blocked),line_assigned(Line assigned),contact_profile(Contact profile),contact_created(Contact created).
Outputs
countnumber- How many
has_global_secrettrue/false- Whether an account-wide signing secret is set
webhookslist- The webhooks
Example output
{
"count": 1,
"has_global_secret": false,
"webhooks": [
{
"has_secret": false,
"sendblue_numbers": [],
"url": "https://example.com/sendblue",
"webhook_type": "receive"
}
]
}Mark conversation read
Send a read receipt for a one-to-one conversation, so the person sees their messages as read.
Inputs
- Sendblue line
from_numbertextRequired - The Sendblue number to use. A free account has one shared line.
- Recipient
numbertextRequired - The person's phone number, like +15551234567. On the free plan they must have texted your Sendblue line first.
Outputs
messagetext- Sendblue's confirmation
numbertext- The contact
statustext- OK
Example output
{
"message": "Mark read request sent",
"number": "+15551234567",
"status": "OK"
}Send message
Send a one-to-one iMessage from your Sendblue line, with text, a picture or file link, or both. Sendblue falls back to SMS when the person has no iMessage. On the free plan the person must have texted your line first.
Inputs
- Sendblue line
from_numbertextRequired - The Sendblue number to use. A free account has one shared line.
- Recipient
numbertextRequired - The person's phone number, like +15551234567. On the free plan they must have texted your Sendblue line first.
- Message
contenttext - The text to send (up to 18,996 characters). Optional when a media URL is given.
- Media URL
media_urltext - A public link to a picture, video or file to attach. It must end with the file extension (like .jpg); signed links are not supported.
- Effect
send_styletext - An iMessage bubble or screen effect.One of:
celebration,shooting_star(Shooting star),fireworks,lasers,love,confetti,balloons,spotlight,echo,invisible(Invisible ink), and 3 more. - Status callback URL
status_callbacktext - An https:// address Sendblue posts this message's delivery updates to.
- Reply to message
reply_to_message_handletext - The handle of a message to reply to in a thread. Only on Sendblue's newer (V2) iMessage lines.
- Reply to part
reply_to_part_indexnumber - Which part of that message to reply to, counting from 0. Defaults to the first.At least 0.
- Let one message through before a reply
pre_reply_overridetrue/false - Send even though the person has not replied yet. Allowed once per contact, per line, per day.
Outputs
account_emailtextcontenttextdate_createdtextdate_updatedtexterror_codenumbererror_keytexterror_messagetextfrom_numbertextis_outboundtrue/falsemedia_urltextmessage_handletextmessage_typetextnumbertextreply_toobjectsend_styletextsender_emailtextstatustext
Example output
{
"account_email": "owner@example.com",
"content": "Hello from Lodol",
"date_created": "2026-10-15T10:00:00.000Z",
"date_updated": "2026-10-15T10:00:01.000Z",
"error_code": null,
"error_message": null,
"from_number": "+13055550100",
"is_outbound": true,
"media_url": null,
"message_handle": "5a17319e-2a6c-4c3e-9f1e-7b8d2c1a0f11",
"message_type": "message",
"number": "+15551234567",
"send_style": null,
"status": "QUEUED"
}Send reaction
React to a message you received over iMessage in the last few days, with a tapback (love, like, laugh...) or one emoji, or remove a tapback. Not every line supports reactions.
Inputs
- Sendblue line
from_numbertextRequired - The Sendblue number to use. A free account has one shared line.
- Message handle
message_handletextRequired - The handle of the received iMessage, from 'List messages' with direction Received.
- Tapback
reactiontext - The tapback to send. Choose this or an emoji.One of:
love,like,dislike,laugh,emphasize,question. - Emoji
emojitext - Exactly one emoji to react with, instead of a tapback.
- Remove this tapback
removetrue/false - Take the chosen tapback off the message instead.
- Message part
part_indexnumber - Which part of the message to react to, counting from 0. Defaults to the first.At least 0.
Outputs
messagetext- Sendblue's confirmation
message_handletext- The message reacted to
reactiontext- The reaction sent
statustext- OK
Example output
{
"message": "Reaction request sent",
"message_handle": "5a17319e-2a6c-4c3e-9f1e-7b8d2c1a0f11",
"reaction": "love",
"status": "OK"
}Send typing indicator
Show or hide the typing bubble in an existing one-to-one iMessage conversation. Best effort; not in group chats.
Inputs
- Sendblue line
from_numbertextRequired - The Sendblue number to use. A free account has one shared line.
- Recipient
numbertextRequired - The person's phone number, like +15551234567. On the free plan they must have texted your Sendblue line first.
- Typing
statetext - Start or stop the typing bubble. Defaults to start.One of:
start(Start typing),stop(Stop typing). - Show for up to (ms)
max_duration_msnumber - How long the bubble may show, in milliseconds (1 to 300000). Sendblue's default is 60000.From 1 to 300000.
Outputs
numbertext- The recipient
statetext- start or stop
statustext- SENT
Example output
{
"number": "+15551234567",
"state": "start",
"status": "SENT"
}Set contact opt-out
Opt a contact out of your messages, or back in. Opted-out contacts cannot be messaged.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
- Opted out
opted_outtrue/false - On to opt them out, off to opt them back in.Default:
true.
Outputs
numbertext- The contact
opted_outtrue/false- Whether opted out now
statustext- Sendblue's status
Example output
{
"number": "+15551234567",
"opted_out": true,
"status": "OK"
}Update contact
Change a contact's name, company, owner, line, tags or custom variables. Tags given replace all of the contact's tags; custom variables are merged with the existing ones. Fields left empty are not changed.
Inputs
- Phone number
numbertextRequired - The contact's phone number, like +15551234567.
- First name
first_nametext - The contact's first name.
- Last name
last_nametext - The contact's last name.
- Company
company_nametext - The contact's company.
- Assigned to
assigned_to_emailtext - The email address of the teammate who owns this contact.
- Sendblue line
sendblue_numbertext - The Sendblue number this contact talks to.
- Tags
tagslist - The contact's tags. These replace every tag it has now.
- Custom variables
custom_variablesobject - Text values by label, for example plan: Pro. A new label is created for you.
Outputs
contactobject- The contact as Sendblue has it now
Example output
{
"contact": {
"assigned_to_email": null,
"company_name": "Acme",
"contact_id": "c_8f2a1b",
"created_at": "2026-10-15T10:00:00.000Z",
"custom_variables": {
"plan": "Pro"
},
"first_name": "Jo",
"last_name": "Rivera",
"opt_out": false,
"phone": "+15551234567",
"sendblue_number": "+13055550100",
"tags": [
"lead"
]
}
}