Pick your region up front — a bot belongs to Lark or Feishu, not both.
- Lark (international):
open.larksuite.com - Feishu (China):
open.feishu.cn
Create the app
The Open Platform offers a quick path that pre-configures everything, and a manual path if you’d rather set it up yourself.- Quick create (recommended)
- Manual setup
On the app-creation page, look for the “Built for agents. Ready to connect” banner. It pre-configures the required permissions and event settings so you can skip the manual toggles below and go straight to pasting credentials into Synti.
Required scopes
Enable all three, or events and sends will silently fail:Events
- Delivery mode: Long connection (WebSocket) — not webhooks.
- Event subscription:
im.message.receive_v1. - Encryption key: leave blank. Long-connection mode doesn’t encrypt payloads.
- Publishing: the app version must be published, or the tenant in dev mode, before messages arrive.
Connect it in Synti
1
Open the Lark / Feishu tile
Go to Settings → Messaging and open the Lark / Feishu tile.
2
Select your region
Choose Lark or Feishu to match where you created the app.
3
Paste credentials
Enter the App ID and App Secret.
4
Test and save
Click Test — Synti exchanges the credentials for a tenant access token — then Save. The credentials go into the workspace keychain and the WebSocket connection starts.
Pair your first chat
1
DM the bot
Open a direct message with the bot in Lark or Feishu.
2
Request a code
Send
/pair in the chat.3
Copy the code from Synti
In Synti, open the session menu → Pair with Messaging → Lark, and copy the six-digit code.
4
Redeem it
Send the pairing command with that code back in Lark, then send any message to begin.
Group chats
In groups, the bot only receives messages where it’s @mentioned — a consequence of theim:message.group_at_msg scope. Without the mention, the server never delivers the event. This scope can’t be widened without enterprise approvals.
Rich text and cards
Lark/Feishu renders more formatting natively than the other platforms, though a few Markdown constructs fall back to plain text.
When the agent needs mid-flow approval, it posts an interactive card with native action buttons. A few limits apply:
- Up to 10 buttons per card.
- Button labels are truncated at 30 characters.
- The card clears itself after you act on it.
- Draft apps display cards but their button callbacks won’t fire — publish the app to make buttons work.
Attachments
- Inbound (DMs and group @mentions): images and files download server-side into the session’s working directory.
- Outbound: the agent can send images and documents; any caption follows as a separate text message.
- Limits: 20 MB per attachment. Audio, video, and stickers aren’t supported and are logged as dropped.
Other limits
- One region per bot. A bot lives in Lark or Feishu, never both.
- Edit window. Editing a message older than 24 hours silently fails — a Lark API limit.
Troubleshooting
Messaging logs are written to
~/.synti/logs/messaging-gateway.log. Filter for the lark-adapter component to isolate Lark/Feishu activity.