RubiConnect Messaging Platform

REST API for sending messages, managing campaigns, RCS capability checks, and webhook callbacks. Auth via API key (X-API-Key) or Bearer token.

Operations 5

POST /messages/send Send a single message or stream broadcast #
POST /campaigns Create and dispatch a campaign #
GET /campaigns Query campaign status and stats #
POST /capabilities/check Check RCS capability #
POST /webhooks Webhook event callback receiver

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rubiconnect-messaging-platform"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

rubiconnect-openapi.json Raw ↑
{
  "openapi": "3.0.3",
  "info": {
    "title": "RubiConnect Messaging Platform & MCP Server",
    "description": "Model Context Protocol (MCP) server and programmatic interface for RubiConnect. Enables external AI agents and developers to check RCS & WhatsApp capability, dispatch rich interactive messages, manage campaigns & templates, access inbox conversations, and query real-time delivery analytics.",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://console.rubiconnect.com/api/v1",
      "description": "Production Server"
    }
  ],
  "paths": {
    "/messages/send": {
      "post": {
        "summary": "Send a single message or stream broadcast",
        "description": "Sends a plain text, media card, or rich template message to a recipient phone number, OR streams a zero-persistence bulk broadcast directly from a remote CSV/JSONL HTTPS URL.",
        "operationId": "sendMessage",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SendMessageRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted and queued for transmission or streaming",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameter validation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized (missing or invalid API key)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden (feature disabled for this account tier)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Agent or template not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/campaigns": {
      "post": {
        "summary": "Create and dispatch a campaign",
        "description": "Creates a new campaign and dispatches messages to stored contact lists or pre-signed remote CSV/JSONL URLs.",
        "operationId": "createCampaign",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCampaignRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Campaign created and queued for broadcast",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCampaignResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ]
      },
      "get": {
        "summary": "Query campaign status and stats",
        "description": "Fetches a single campaign by ID or lists recent campaigns with real-time delivery and read counters.",
        "operationId": "getCampaign",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "Specific campaign ID to query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "agentId",
            "in": "query",
            "description": "Filter campaigns by agent ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Campaign details retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCampaignResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Campaign not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/capabilities/check": {
      "post": {
        "summary": "Check RCS capability",
        "description": "Verifies whether a recipient phone number is capable of receiving rich RCS messages for a specific agent context.",
        "operationId": "checkCapability",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CapabilityCheckRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Capability check successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CapabilityCheckResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request (invalid parameter validation)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized (missing or invalid API key)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Agent not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/webhooks": {
      "post": {
        "summary": "Webhook event callback receiver",
        "description": "Endpoint implemented by the client to receive live notifications (message.status_updated and message.received) from RubiConnect.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MessageStatusUpdatedEvent"
                  },
                  {
                    "$ref": "#/components/schemas/MessageReceivedEvent"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook event successfully processed"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "CapabilityCheckRequest": {
        "type": "object",
        "required": [
          "recipient",
          "agentId"
        ],
        "properties": {
          "recipient": {
            "type": "string",
            "description": "Destination phone number in E.164 format.",
            "example": "+15555551234"
          },
          "agentId": {
            "type": "string",
            "description": "The registered agent identifier.",
            "example": "marketing-agent"
          }
        }
      },
      "CapabilityCheckResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "recipient": {
            "type": "string",
            "description": "Normalized E.164 phone number.",
            "example": "+15555551234"
          },
          "isRcs": {
            "type": "boolean",
            "description": "Whether the recipient is RCS-capable.",
            "example": true
          },
          "status": {
            "type": "string",
            "description": "Detailed RCS capability status.",
            "example": "CAPABILITY_FULL"
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Supported features/capabilities of the handset.",
            "example": ["UP_2_0", "GEO_PUSH"]
          },
          "optedOut": {
            "type": "boolean",
            "description": "Whether the recipient has opted out of communication.",
            "example": false
          }
        }
      },
      "SendMessageRequest": {
        "type": "object",
        "required": [
          "agentId"
        ],
        "properties": {
          "recipient": {
            "type": "string",
            "description": "Destination phone number in E.164 format. Required for single send if contactsUrl is not specified.",
            "example": "+15555551234"
          },
          "contactsUrl": {
            "type": "string",
            "description": "Pre-signed HTTPS CSV or JSONL URL to stream contacts from with zero database persistence.",
            "example": "https://storage.googleapis.com/crm-exports/customers.csv"
          },
          "urlFormat": {
            "type": "string",
            "enum": ["csv", "jsonl"],
            "description": "Format of contactsUrl file.",
            "default": "csv",
            "example": "csv"
          },
          "agentId": {
            "type": "string",
            "description": "The registered agent identifier.",
            "example": "marketing-agent"
          },
          "text": {
            "type": "string",
            "description": "Plain text message content. Mutually exclusive with mediaUrl and templateId.",
            "example": "Hello, thank you for your order!"
          },
          "mediaUrl": {
            "type": "string",
            "description": "Public URL pointing to a media attachment. Mutually exclusive with text and templateId.",
            "example": "https://example.com/banner.jpg"
          },
          "templateId": {
            "type": "string",
            "description": "The pre-configured rich template ID. Mutually exclusive with text and mediaUrl.",
            "example": "order_delivery_alert"
          },
          "contentVariables": {
            "type": "object",
            "description": "Key-value pair map to interpolate variables inside messages or templates.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "customerName": "Alice",
              "orderNumber": "RC-123"
            }
          },
          "allowSmsFallback": {
            "type": "boolean",
            "description": "Whether to fallback to SMS if recipient handset lacks RCS capability.",
            "default": false,
            "example": true
          },
          "callbackUrl": {
            "type": "string",
            "description": "Custom webhook URL to receive status callbacks specifically for this message.",
            "example": "https://callback.mycompany.com/webhook"
          }
        }
      },
      "SendMessageResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "messageId": {
            "type": "string",
            "description": "Unique message tracking identifier (for single send).",
            "example": "msg_9a8b7c6d5e4f3g2h1i"
          },
          "broadcastId": {
            "type": "string",
            "description": "Unique broadcast campaign identifier (for remote URL streaming).",
            "example": "bcast_1725001234567_8901"
          },
          "status": {
            "type": "string",
            "enum": [
              "sending",
              "sent",
              "streaming"
            ],
            "example": "streaming"
          },
          "channel": {
            "type": "string",
            "example": "RCS"
          }
        }
      },
      "CreateCampaignRequest": {
        "type": "object",
        "required": [
          "name",
          "agentId"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Campaign display name.",
            "example": "Summer VIP Alert"
          },
          "agentId": {
            "type": "string",
            "description": "Registered agent ID.",
            "example": "marketing-agent"
          },
          "templateId": {
            "type": "string",
            "description": "Pre-configured template ID to broadcast.",
            "example": "summer_vip_sale"
          },
          "flowId": {
            "type": "string",
            "description": "Interactive flow ID to trigger for recipients.",
            "example": "flow_123"
          },
          "recipientSource": {
            "type": "string",
            "enum": ["contacts", "remote_url"],
            "default": "contacts",
            "description": "Audience source for the campaign."
          },
          "contactsUrl": {
            "type": "string",
            "description": "Pre-signed HTTPS CSV/JSONL URL (required when recipientSource is remote_url).",
            "example": "https://storage.googleapis.com/crm-exports/customers.csv"
          },
          "urlFormat": {
            "type": "string",
            "enum": ["csv", "jsonl"],
            "default": "csv"
          },
          "contactListName": {
            "type": "string",
            "description": "Contact list name (required when recipientSource is contacts)."
          },
          "sendNow": {
            "type": "boolean",
            "default": true,
            "description": "Immediately trigger and stream the broadcast."
          },
          "allowSmsFallback": {
            "type": "boolean",
            "default": false
          }
        }
      },
      "CreateCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "campaignId": {
            "type": "string",
            "example": "camp_1725001234567_4321"
          },
          "status": {
            "type": "string",
            "example": "Sending"
          },
          "recipientSource": {
            "type": "string",
            "example": "remote_url"
          },
          "contactsUrl": {
            "type": "string",
            "example": "https://storage.googleapis.com/crm-exports/customers.csv"
          }
        }
      },
      "GetCampaignResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": true
          },
          "campaign": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "stats": {
                "type": "object",
                "properties": {
                  "sent": { "type": "integer" },
                  "delivered": { "type": "integer" },
                  "read": { "type": "integer" },
                  "failed": { "type": "integer" }
                }
              }
            }
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "example": false
          },
          "error": {
            "type": "string",
            "example": "Invalid or missing parameter: recipient is required."
          }
        }
      },
      "MessageStatusUpdatedEvent": {
        "type": "object",
        "required": [
          "eventId",
          "event",
          "timestamp",
          "data"
        ],
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Unique event identifier.",
            "example": "evt_0a1b2c3d4e5f6g7h8i9j"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.status_updated"
            ],
            "example": "message.status_updated"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The ISO 8601 timestamp when the event was generated.",
            "example": "2026-06-10T14:21:04Z"
          },
          "data": {
            "type": "object",
            "required": [
              "messageId",
              "recipient",
              "status"
            ],
            "properties": {
              "messageId": {
                "type": "string",
                "description": "Unique message tracking identifier.",
                "example": "msg_9a8b7c6d5e4f3g2h1i"
              },
              "recipient": {
                "type": "string",
                "description": "Handset phone number in E.164 format.",
                "example": "+15555551234"
              },
              "status": {
                "type": "string",
                "enum": [
                  "Delivered",
                  "Read",
                  "Failed"
                ],
                "example": "Delivered"
              },
              "deliveredAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "example": "2026-06-10T14:21:03Z"
              },
              "readAt": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "example": null
              },
              "error": {
                "type": "string",
                "nullable": true,
                "example": null
              }
            }
          }
        }
      },
      "MessageReceivedEvent": {
        "type": "object",
        "required": [
          "eventId",
          "event",
          "timestamp",
          "data"
        ],
        "properties": {
          "eventId": {
            "type": "string",
            "description": "Unique event identifier.",
            "example": "evt_0f9g8h7i6j5k4l3m2n1o"
          },
          "event": {
            "type": "string",
            "enum": [
              "message.received"
            ],
            "example": "message.received"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "The ISO 8601 timestamp when the event was generated.",
            "example": "2026-06-11T07:26:00Z"
          },
          "data": {
            "type": "object",
            "required": [
              "messageId",
              "sender",
              "content",
              "timestamp"
            ],
            "properties": {
              "messageId": {
                "type": "string",
                "description": "Unique received message identifier.",
                "example": "rcm_0a1b2c3d4e5f6g7h8i9j"
              },
              "sender": {
                "type": "string",
                "description": "Sender handset phone number in E.164 format.",
                "example": "+15555551234"
              },
              "content": {
                "type": "string",
                "nullable": true,
                "description": "Text content of the message.",
                "example": "Hello World"
              },
              "timestamp": {
                "type": "string",
                "format": "date-time",
                "description": "The ISO 8601 timestamp when the message was received by the system.",
                "example": "2026-06-11T07:26:00Z"
              },
              "suggestionResponse": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Button label text."
                  },
                  "postbackData": {
                    "type": "string",
                    "description": "Postback data payload associated with the button action."
                  }
                },
                "example": null
              },
              "mediaUrl": {
                "type": "string",
                "nullable": true,
                "description": "URL of the media attachment shared by the contact.",
                "example": null
              },
              "location": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "latitude": {
                    "type": "number",
                    "example": 48.8584
                  },
                  "longitude": {
                    "type": "number",
                    "example": 2.2945
                  },
                  "label": {
                    "type": "string",
                    "nullable": true,
                    "example": "Eiffel Tower"
                  }
                },
                "example": null
              }
            }
          }
        }
      }
    }
  }
}