Wednesday, July 1, 2026
HomeArtificial IntelligenceLinq's iMessage Apps Convey Funds, Tickets, Flights, and Video games Into the...

Linq’s iMessage Apps Convey Funds, Tickets, Flights, and Video games Into the iMessage Bubble Via the imessage_app Half

Linq builders can now construct iMessage Apps. These are interactive mini-apps that run inside a iMessages dialog.

A person can store, play a recreation, e book a flight, or pay. None of it requires leaving the iMessage thread. There is no such thing as a deep hyperlink to an exterior browser. There is no such thing as a ‘faucet right here to complete within the app.’

Beforehand, an agent’s predominant API possibility was to ship a hyperlink. The person then needed to comply with it some place else. iMessage Apps take away that handoff.

TL;DR

  • Linq’s new imessage_app half renders tappable, interactive playing cards straight inside an iMessage thread.
  • One card handles full workflows: video games, funds, tickets, flights, music, and courting.
  • Playing cards replace in place through /messages/{id}/replace, so state modifications redraw the identical bubble.
  • An interactive flag toggles the stay expertise versus a static caption-only format card.
  • It’s iMessage-only with no SMS/RCS fallback, and wealthy rendering wants your app put in.

iMessage Apps

An iMessage App is a tappable card that opens an interactive expertise in place. The cardboard turns into your app contained in the bubble.

Technically, it’s a new message half with sort: "imessage_app". This replaces the textual content, media, and hyperlink components you already use. An put in Messages extension attracts the wealthy content material from a url you present.

Linq is the messaging-infrastructure startup behind the API. Its platform lets AI brokers message customers over iMessage, RCS, and SMS.

How It Works

A couple of particulars determine whether or not your first card renders accurately.

The app id is the rendering key: The app object carries team_id and bundle_id. These fields inform Messages which extension renders the cardboard. team_id is the app’s 10-character uppercase identifier. You normally move your personal app’s id.

There may be one frequent failure mode right here. An unrecognized id silently renders as plain textual content. If team_id and bundle_id don’t match an put in extension, the cardboard falls again to your caption. No error is thrown.

You management captions; the app controls the picture: The format object holds the textual content drawn on the cardboard. There is no such thing as a picture subject. The picture, icon, and interactive UI come out of your extension.

format subject Place
caption top-left, daring main label
subcaption left, under caption
trailing_caption top-right
trailing_subcaption proper, under trailing_caption

A minimum of one subject should be set. In any other case the cardboard renders as an empty bubble. Messages treats the url as opaque, so altering the url modifications what the cardboard exhibits.

An interactive flag controls stay versus static. It defaults to true. With true, recipients who’ve your app see the stay card. Set it to false to all the time present the static format card as a substitute.

Set up state and the flag collectively determine the outcome. Three outcomes are potential:

  • Has your app, interactive: true → the extension renders the wealthy card out of your url.
  • Has your app, interactive: false → the recipient sees the static format card.
  • No app → the recipient sees your format captions. Set app_store_id so as to add a Get the app affordance.

Implementation: Sending and Updating a Card

Ship a card with Create Chat, or submit it into an present chat with Ship Message.

curl -X POST https://api.linqapp.com/api/companion/v3/chats 
  -H "Authorization: Bearer $LINQ_API_KEY" 
  -H "Content material-Sort: software/json" 
  -d '{
    "from": "+12052535597",
    "to": ["+12052532136"],
    "message": {
      "components": [
        {
          "type": "imessage_app",
          "app": {
            "name": "Example App",
            "team_id": "A1B2C3D4E5",
            "bundle_id": "com.example.app.MessageExtension"
          },
          "url": "https://app.example.com/card?id=abc123",
          "fallback_text": "Open in Example App",
          "layout": {
            "caption": "Example App",
            "subcaption": "You said: hello"
          }
        }
      ]
    }
  }'

Updates are the fascinating primitive. A delivered card might be changed in place by referencing the unique message. That is how a recreation transfer redraws a board.

curl -X POST https://api.linqapp.com/api/companion/v3/messages/{messageId}/replace 
  -H "Authorization: Bearer $LINQ_API_KEY" 
  -H "Content material-Sort: software/json" 
  -d '{
    "url": "https://app.instance.com/card?recreation=7f3a&transfer=2",
    "fallback_text": "Rating replace",
    "format": { "caption": "Rating: 2 - 1" }
  }'

A couple of guidelines govern updates. Solely url, fallback_text, interactive, and format can change. The app id stays mounted for the cardboard’s life. The cardboard should already be delivered.

You’ll be able to replace solely an imessage_app card you despatched. Inbound playing cards can’t be up to date, and the decision returns 400. A 409 means the cardboard is just not delivered but. Retry after the message.delivered webhook.

Every replace is delivered as a brand new message with its personal ID. The interactive flag is just not inherited, so resend it every time. To replace once more, reference the brand new message ID.

You can even obtain playing cards. Inbound messages embody an imessage_app half within the message.obtained webhook.

What You Can Construct

Linq frames these as examples, not a set menu. Strive every one your self within the interactive demo under (created by Marktechpost).

  • Video games: Ship a transfer and redraw the board. A stay match turns into a sequence of updates to at least one bubble.
  • Funds: Ship a checkout or request-to-pay as a card. The recipient completes it and not using a redirect.
  • Tickets: A card can transfer from “Going / Not going” to a confirmed ticket in place.
  • Flight reserving: Floor a fare, let the person decide a seat, then replace the cardboard to a boarding move.
  • Music. Drop a monitor and let individuals play it inline. The cardboard is a participant, not a hyperlink.
  • Relationship: Let customers swipe profiles and discover matches the place they already discuss.


RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments