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

ActionWhat it does
Add verified contactLet a phone number be messaged from the free plan's shared line.
Add webhookAdd an https:// address for Sendblue to post one type of event to.
Check iMessage supportCheck whether a phone number or email address can receive iMessages.
Create contactAdd a contact with name, owner, line, tags and custom variables.
Delete contactDelete a contact by phone number.
Delete webhookRemove one webhook address for one event type.
Get contactGet a contact by phone number.
Get messageGet one sent or received message by its handle, with its content, service, status and any error.
Get message statusCheck whether a sent message is queued, sent, delivered or failed, by its handle.
List contactsList a page of your contacts, optionally by phone number, contact id or creation time.
List linesList the Sendblue phone numbers you can send from.
List messagesList messages sent and received on your account, filtered by line, contact, direction, service, status or time.
List verified contactsList the numbers added for the free plan's shared line, with whether each is verified yet, and the line itself.
List webhooksList the addresses Sendblue posts events to, with each one's event type.
Mark conversation readSend a read receipt for a one-to-one conversation, so the person sees their messages as read.
Send messageSend a one-to-one iMessage from your Sendblue line, with text, a picture or file link, or both.
Send reactionReact 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 indicatorShow or hide the typing bubble in an existing one-to-one iMessage conversation.
Set contact opt-outOpt a contact out of your messages, or back in.
Update contactChange 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 numbernumbertextRequired
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 URLurltextRequired
The https:// address Sendblue posts events to.
Eventwebhook_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 secretsecrettext
A secret Sendblue sends with each event so your endpoint can check it came from Sendblue.
Only for linessendblue_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 emailnumbertextRequired
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 numbernumbertextRequired
The contact's phone number, like +15551234567.
First namefirst_nametext
The contact's first name.
Last namelast_nametext
The contact's last name.
Assigned toassigned_to_emailtext
The email address of the teammate who owns this contact.
Sendblue linesendblue_numbertext
The Sendblue number this contact talks to.
Tagstagslist
Tags to give the contact.
Custom variablescustom_variablesobject
Text values by label, for example plan: Pro. A new label is created for you.
Update if it existsupdate_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 numbernumbertextRequired
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 URLurltextRequired
The https:// address Sendblue posts events to.
Eventwebhook_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 numbernumbertextRequired
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 handlemessage_handletextRequired
The message's handle, from 'Send message', 'List messages' or an earlier step.

Outputs

account_emailtext
contenttext
date_senttext
date_updatedtext
error_codenumber
error_detailtext
error_keytext
error_messagetext
error_reasontext
from_numbertext
group_display_nametext
group_idtext
is_outboundtrue/false
media_urltext
message_handletext
message_typetext
numbertext
opted_outtrue/false
participantslist
plantext
reply_toobject
send_styletext
sendblue_numbertext
sender_emailtext
servicetext
statustext
to_numbertext
was_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 handlemessage_handletextRequired
The message's handle, from 'Send message', 'List messages' or an earlier step.

Outputs

account_emailtext
contenttext
date_createdtext
date_updatedtext
error_codenumber
error_keytext
error_messagetext
from_numbertext
is_outboundtrue/false
media_urltext
message_handletext
message_typetext
numbertext
reply_toobject
send_styletext
sender_emailtext
statustext
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 numberphone_numbertext
Only the contact with this phone number.
Contact IDcontact_idtext
Only the contact with this Sendblue id.
Created aftercreated_afterdate and time
Only contacts created at or after this time.
Sort byorder_bytext
The field to sort by. Defaults to created.One of: created_at (Created), firstName (First name), lastName (Last name), phone.
Sort directionorder_directiontext
Ascending or descending.One of: asc (Ascending), desc (Descending).
Limitlimitnumber
How many contacts to return, up to 1000 (default 100).From 1 to 1000.
Offsetoffsetnumber
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 linesendblue_numbertext
Only messages on this Sendblue number.
Contact numbernumbertext
Only messages to or from this phone number.
Directiondirectiontext
Only received or only sent messages.One of: inbound (Received (inbound)), outbound (Sent (outbound)).
Serviceservicetext
Only messages sent over this service.One of: iMessage, SMS, RCS.
Statusstatustext
Only messages with this status.One of: REGISTERED, PENDING, SENT, DELIVERED, RECEIVED, QUEUED, ERROR, DECLINED, ACCEPTED, SUCCESS.
Conversation typemessage_typetext
Only one-to-one or only group messages.One of: message (One-to-one), group.
Group IDgroup_idtext
Only messages in this group conversation.
Created aftercreated_afterdate and time
Only messages created at or after this time.
Created beforecreated_beforedate and time
Only messages created at or before this time.
Updated afterupdated_afterdate and time
Only messages updated at or after this time.
Sort byorder_bytext
Which time to sort by.One of: createdAt (Created), updatedAt (Updated), sentAt (Sent).
Sort directionorder_directiontext
Ascending or descending.One of: asc (Ascending), desc (Descending).
Limitlimitnumber
How many messages to return, up to 100.From 1 to 100.
Offsetoffsetnumber
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

Statusverification_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

Eventwebhook_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 linefrom_numbertextRequired
The Sendblue number to use. A free account has one shared line.
RecipientnumbertextRequired
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 linefrom_numbertextRequired
The Sendblue number to use. A free account has one shared line.
RecipientnumbertextRequired
The person's phone number, like +15551234567. On the free plan they must have texted your Sendblue line first.
Messagecontenttext
The text to send (up to 18,996 characters). Optional when a media URL is given.
Media URLmedia_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.
Effectsend_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 URLstatus_callbacktext
An https:// address Sendblue posts this message's delivery updates to.
Reply to messagereply_to_message_handletext
The handle of a message to reply to in a thread. Only on Sendblue's newer (V2) iMessage lines.
Reply to partreply_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 replypre_reply_overridetrue/false
Send even though the person has not replied yet. Allowed once per contact, per line, per day.

Outputs

account_emailtext
contenttext
date_createdtext
date_updatedtext
error_codenumber
error_keytext
error_messagetext
from_numbertext
is_outboundtrue/false
media_urltext
message_handletext
message_typetext
numbertext
reply_toobject
send_styletext
sender_emailtext
statustext
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 linefrom_numbertextRequired
The Sendblue number to use. A free account has one shared line.
Message handlemessage_handletextRequired
The handle of the received iMessage, from 'List messages' with direction Received.
Tapbackreactiontext
The tapback to send. Choose this or an emoji.One of: love, like, dislike, laugh, emphasize, question.
Emojiemojitext
Exactly one emoji to react with, instead of a tapback.
Remove this tapbackremovetrue/false
Take the chosen tapback off the message instead.
Message partpart_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 linefrom_numbertextRequired
The Sendblue number to use. A free account has one shared line.
RecipientnumbertextRequired
The person's phone number, like +15551234567. On the free plan they must have texted your Sendblue line first.
Typingstatetext
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 numbernumbertextRequired
The contact's phone number, like +15551234567.
Opted outopted_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 numbernumbertextRequired
The contact's phone number, like +15551234567.
First namefirst_nametext
The contact's first name.
Last namelast_nametext
The contact's last name.
Companycompany_nametext
The contact's company.
Assigned toassigned_to_emailtext
The email address of the teammate who owns this contact.
Sendblue linesendblue_numbertext
The Sendblue number this contact talks to.
Tagstagslist
The contact's tags. These replace every tag it has now.
Custom variablescustom_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"
    ]
  }
}

On this page