API Reference

Developer Docs

One API. Every Channel.

Connect every messaging route through one unified API, with standard Webhook events for inbound traffic.

Getting Started

Introduction

UnifyPort is one REST API plus one standard webhook event stream for Telegram, WhatsApp, LINE, X (formerly Twitter), Zalo, and TikTok. Send with POST /v1/messages and receive normalized events without provider-specific SDKs; official UnifyPort SDKs are available for Node.js, PHP, Go, and Python.

Overview

Workspace

A workspace groups your messaging accounts, API keys and webhooks. Use its X-Api-Key when calling the API; no workspace ID is needed in the request body.

Account

A messaging account is a Telegram, WhatsApp or other channel account connected to UnifyPort. Create it, complete channel authorization, then use it to send and receive messages.

Connection state (Runtime)

The connection between a messaging account and its channel. Check runtime_status separately from authorization; use running to confirm the connection is ready.

Webhook

Your durable record of inbound traffic. UnifyPort has no REST message-history read API or guaranteed replay, so register a webhook endpoint first and store what you need on arrival. WhatsApp can emit limited best-effort HistorySync events after bootstrap or reconnect, but they are not a complete archive.

Verify your API key

Shell

curl "https://api.unifyport.ai/v1/workspace" \
  -H "X-Api-Key: <YOUR_API_KEY>"

Notes

  • Base URL: https://api.unifyport.ai. Every /v1 endpoint authenticates with the X-Api-Key request header.
  • Prepare a workspace API key, a WhatsApp account and a public HTTPS webhook receiver. Keep API keys and signing secrets on your server. Check the key with the request below.
  • JSON success and error responses carry a top-level request_id; requests with no response body, such as successful 204 deletes, expose it only through the X-Request-Id response header. Quote that value when reporting issues. Send your own X-Request-Id request header and it is echoed as client_request_id in JSON responses for client-side reconciliation.

Next steps