A standalone rich card is always Single Message — rich content overrides any text-length rule. Use for product showcases, announcements, or any send where image and action chips matter.

Request

Authorization
string
required
Bearer <api_key>
Idempotency-Key
string
UUID to prevent duplicate sends on retry.

Body

{
  "to": "+4917612345678",
  "agent_id": "ag_live_xxxx",
  "message_type": "MESSAGE",
  "content": {
    "rich_card": {
      "standalone": {
        "orientation": "VERTICAL",
        "content": {
          "title": "Summer Sale",
          "description": "50% off all items this weekend",
          "media": {
            "url": "https://cdn.arowana.app/sale-banner.jpg",
            "height": "TALL"
          },
          "suggestions": [
            { "action": { "text": "Shop now", "open_url": { "url": "https://shop.arowana.app/sale" } } },
            { "reply": { "text": "Remind me later", "postback_data": "remind_sale" } }
          ]
        }
      }
    }
  },
  "traffic_type": "PROMOTION"
}
to
string
required
Destination phone number in international format (e.g. +4917612345678).
agent_id
string
required
Approved production agent id.
message_type
string
required
MESSAGE for one-shot sends. Use NEWSLETTER for newsletter channel — see RCS newsletter.
content.rich_card.standalone.orientation
string
Card layout orientation: VERTICAL or HORIZONTAL.
content.rich_card.standalone.content.title
string
Primary headline text. Maximum 200 characters.
content.rich_card.standalone.content.description
string
Supporting text below the title. Maximum 2,000 characters.
content.rich_card.standalone.content.media.url
string
Publicly reachable HTTPS URL for the image, video, or GIF. Google fetches and caches the file at submission time; redirects are not supported. Recommended max file size: 100 MB.
content.rich_card.standalone.content.media.thumbnail_url
string
Optional thumbnail URL shown while the main file loads. Max 100 kB.
content.rich_card.standalone.content.media.height
string
Media height in vertical cards: SHORT (112 dp), MEDIUM (168 dp), or TALL (264 dp). Ignored for horizontal layout.
content.rich_card.standalone.content.suggestions
array
Optional action/reply chips attached to the card. Maximum 4 suggestions per card (this limit is per card content, not per message).Each item is one of:
  • reply — quick reply chip: { "text": "...", "postback_data": "..." }. Text max 25 chars. postback_data must be base64-encoded; max 2048 chars.
  • action — native action chip: { "text": "...", "fallback_url": "...", "<action_type>": { ... } }. Text max 25 chars. fallback_url is optional; opens in browser on devices that don’t support the action.
Action typeRequired fieldsNotes
dialphone_numberInternational format (e.g. +4930123456)
open_urlurlhttps:// or http:// only — other schemes rejected since Nov 2025
open_url_in_webviewurl, view_mode (FULL, HALF, TALL)Requires device support for ACTION_OPEN_URL_IN_WEBVIEW
view_locationlat + long + optional label; or queryOpens map app
share_location(no fields)Lets user share their location back
create_calendar_eventtitle (max 100 chars), description (max 500 chars), start_time, end_timeOpens calendar pre-filled
ttl
string
Optional delivery expiry. Duration string (e.g. "3600s"). Message is automatically revoked if not delivered within this window. Useful for time-sensitive content.
traffic_type
string
required
Regulatory classification. Values: AUTHENTICATION, TRANSACTION, PROMOTION, SERVICEREQUEST, ACKNOWLEDGEMENT. Must match the agent’s approved use case.

Responses

{
  "message_id": "msg_b2c3d4e5",
  "status": "queued",
  "created_at": "2026-03-28T09:00:00Z",
  "billing": {
    "channel": "RCS",
    "message_type": "single_message",
    "hold_amount": 0.12,
    "message_price": 0.10,
    "balance": {
      "free": 49.88,
      "reserved": 0.12,
      "total": 50.00
    },
    "tier": {
      "channel": "RCS",
      "current": "tier_1",
      "volume_used": 1251
    }
  }
}
message_id
string
Message id for status, revoke, and webhook correlation.
billing.message_type
string
Always single_message for rich card content.
billing.hold_amount
number
Balance held until delivery resolves.
billing.message_price
number
Expected unit price for this classification and tier.
billing.tier
object