Bundles are used to send messages to multiple recipients simultaneously, which is ideal for group broadcasts or marketing campaigns. Note: If you want to send RCS to a single recipient, use the endpoint Conversation. A bundle contains information about the sending agent, content in the form of text or cards, and a list of recipients. This is the most effective way to reach a larger group of users with a single interactive message.


Quickstart #

💻
Quick Start (cURL)
Copy to clipboard
curl -X POST https://api.ip1.net/v3/bundles \
  -H "Authorization: Bearer API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "brand": "My-Store-Inc",
  "agent": "Customer Service",
  "recipients": {
    "46700123456": {}
  },
  "reference": "INTERN-REF-001",
  "tags": [
    "shipping",
    "important"
  ],
  "type": "Carousel",
  "carousel": [
    {
      "title": "Summer Campaign 2026",
      "content": "Get 20% off all sunglasses!",
      "mediaUrl": "https://cdn.site.se/promo-sun.jpg",
      "type": 1,
      "order": 0
    },
    {
      "title": "Summer Sale 2026",
      "content": "Get 20% off all sunglasses!",
      "mediaUrl": "https://cdn.site.se/promo-sun.jpg",
      "type": 1,
      "order": 2
    },
  ],
  "suggestions": [
    {
      "text": "View selection",
      "type": 1,
      "order": 0,
      "url": "https://site.se/shop",
      "postbackData": "shop_click"
    },
    {
      "text": "Call the store",
      "type": 4,
      "order": 1,
      "phoneNumber": "468123456",
      "postbackData": "call_click"
    }
  ]
}'"

Call #

Endpoint: /bundles

Methodology: POST

Example of call data #

📋
Call data (JSON)
Copy to clipboard
{
  "brand": "Min-Butik-AB",
  "agent": "Customer Service",
  "recipients": {
    "46700123456": {}
  },
  "reference": "INTERN-REF-001",
  "tags": [
    "shipping",
    "important"
  ],
  "type": "Carousel",
  "carousel": [
    {
      "title": "Summer Campaign 2026",
      "content": "Get 20% off all sunglasses!",
      "mediaUrl": "https://cdn.site.se/promo-sun.jpg",
      "type": 1,
      "order": 0
    },
    {
      "title": "Summer Sale 2026",
      "content": "Get 20% off all sunglasses!",
      "mediaUrl": "https://cdn.site.se/promo-sun.jpg",
      "type": 1,
      "order": 2
    },
  ],
  "suggestions": [
    {
      "text": "View selection",
      "type": 1,
      "order": 0,
      "url": "https://site.se/shop",
      "postbackData": "shop_click"
    },
    {
      "text": "Call the store",
      "type": 4,
      "order": 1,
      "phoneNumber": "468123456",
      "postbackData": "call_click"
    }
  ]
}

Fields for request data #

Field nameDescription of the projectRequiredTypeExample
brandYour brand name Yesstring"My Shop Ltd."
agentYour agent's nameYesstring”Customer service
recipientsYour recipient listYesObject”46700123456”: { ”name”: ”Kalle” }
contentThe content of the message itselfRequired if the type is ”Text”string”Hi {name}! Your order has now been shipped.”
typeMessage typeYesString or number (enum)”Carousel”
referenceInternal reference for bundleNo, it is not.string”INTERN-REF-001”
tagsA list of searchable tags for grouping the mailingNo, it is not.Array[”shipping”, ”important”]
carouselA list of multiple cards that create a CarouselRequired if the type is ”Carousel”Array(See table below)
cardContains image, headline, and text (Rich Card).Required if the type is ”Card”Object(See table below)
suggestionsA list of interactive buttons.No, it is not.Array(See table below)
uniqueIdUnique ID to avoid duplicates.No, it is not.string”order-12345-id”

Field details card #

Field nameDescription of the projectRequiredTypeExample
titleThe heading displayed at the top of the card.Yesstring”Spring Sale!”
contentThe descriptive text on the card.Yesstring”We are emptying the warehouse now.”
typeCard type (2 for Rich Card in carousel).YesInteger2
orderOrder in which cards are shownRequired if the ”Carousel” type is usedInteger1
mediaUrlURL to image or video (public link).No, it is not.URI”https://site.se/image.jpg”

Field details suggestions #

Field nameDescription of the projectRequiredTypeExample
textThe text on the button.Yesstring”Shop now”
typeAction type (2=URL, 5=Share Location, 6=Call).YesInteger2
orderDetermines the order suggestions are displayed.Yes, with more than one suggestionInteger”2”
postbackDataThe data you get back upon a click.Yesstring”track_sale_click”
URLTarget URL (required for type 2).No, it is not.string”https://site.se/shop”
TitleTitle for Show Location on Map and Calendar Event.Required for types 5 and 3string”Our Store”
DescriptionEvent description.Required for Type 3string”Welcome for a haircut!”
Start Time
The start time for a calendar event.
Required for Type 3string”2026-07-01T14:30”
EndTime
The end time for a calendar event.
Required for Type 3string”2026-07-01T15:30”
LatitudeLatitude to display a location on a map.Required at Type 5string”58.3944347”
LongitudeThe longitude to display a location on a map.Required at Type 5string”13.8601547,18”
PhoneNumberThe phone number being dialed when the button is pressedRequired at type 6string”46101606060”

Responsibility #

Example of response data #

📋
Response data (JSON)
Copy to clipboard
{
  "id": "65eb3d14f1234567890abcdef",
  "brand": "My-Store-Inc",
  "agent": "Customer Service",
  "type": 2,
  "content": "Hello! Your order has now been shipped.",
  "card": {
    "title": "Order #12345",
    "content": "The package is expected to arrive tomorrow.",
    "mediaUrl": "https://cdn.site.se/package.jpg",
    "type": 1,
    "height": 2
  },
  "suggestions": [
    {
      "text": "Track package",
      "type": 1,
      "url": "https://frakt.se/track/123",
      "postbackData": "track_click",
      "order": 0
    }
  ],
  "sendDate": "2026-03-04T15:05:00Z",
  "uniqueId": "order-12345-id",
  "reference": "INTERN-REF-001",
  "created": "2026-03-04T15:03:02Z",
  "tags": ["shipping", "important"]
}

Fields for response data #

Field nameDescription of the projectTypeExample
idBundle's unique ID.string"65eb3d14f1234567890abcdef"Hello.
brandThe brand used.string”My-Shop-Co”
agentYour agent's namestring”Customer service”
typeMessage type (e.g., 1=Text).Integer1
contentThe text content that was sent out.string”Hi {name}! Your order has now been shipped.”
sendDateDispatch time.DateTime”2026-03-04T15:05:00Z”
referenceYour optional free-text reference.string”INTERN-REF-001”
uniqueIdYour own ID for duplicate check.string”order-12345-id”
createdTimestamp when the mail was created in the system.DateTime”03/04/2026 3:03:02 PM UTC”
tagsArray of tags associated with the shipment.Array[”shipping”, ”important”]
cardContains details for the sent card (if applicable).Object{…}
suggestionsList of buttons that were sent.Array[…]