1. Overview
Feishu (international product name: Lark) is an enterprise collaboration suite that combines chat, video meetings, calendar, cloud documents, and automation-friendly open APIs. Teams use it for messaging, org directory management, and file-centric workflows in a single workspace.
With the GoInsight Feishu node, you can embed these capabilities into automated workflows. Typical tasks include:
- Messaging: Send chat messages and urgent notifications to users or groups.
- Calendars and events: Create and manage calendars, events, and attendee lists.
- Organization: Work with departments and users (lookup, search, and directory reads).
- Drive and Docs: Create folders and documents, list Drive contents, and read document text.
- Spreadsheets: Read and write cell ranges, list sheets, and copy workbooks.
2. Prerequisites
Before using this node, you need access to a Feishu tenant and permission to create or use a custom app. Create an app in the Feishu developer console, configure the required API scopes for the actions you plan to call, and obtain app credentials that GoInsight can use securely.
Some operations require administrator approval, directory visibility, or feature packs (for example urgent calls or SMS). Grant only the scopes your workflow needs.
3. Credentials
For a detailed guide on how to obtain and configure credentials, please refer to our official documentation: Credentials Configuration Guide.
4. Supported Operations
The Feishu node exposes operations across calendars, events, chats, departments, users, Drive, documents, spreadsheets, and messaging. The summary table groups actions by resource; full parameter and output details follow.
Summary
| Resource | Operation | Description |
|---|---|---|
| Calendar | Create Calendar | Creates a new calendar with the specified name and optional description. |
| Calendar | Delete Calendar | Deletes a specified calendar by its calendar ID. This action cannot be undone. |
| Calendar | Get Calendar | Retrieves detailed information about a specific calendar by its calendar ID. |
| Calendar | List Calendars | Retrieves a list of calendars accessible to the authenticated user with pagination support. |
| Calendar | Search Calendars | Searches for calendars based on a query string, supporting fuzzy matching of calendar names. |
| Calendar | Update Calendar | Updates the properties of an existing calendar, such as its name and description. |
| Calendar event | Add Attendees to Event | Add one or more attendees to a specified event in a calendar. |
| Calendar event | Create Event | Create a new calendar event in Feishu. |
| Calendar event | Delete Event | Deletes a calendar event in Feishu. WARNING: This operation is PERMANENT and CANNOT BE UNDONE. The event is removed for all attendees. |
| Calendar event | Get Event | Get details of a calendar event in Feishu. |
| Calendar event | List Events | List calendar events in Feishu. |
| Calendar event | Remove Attendees from Event | Batch-remove calendar event attendees via Feishu calendar v4; pass Attendees as an object array mapped to delete_ids. |
| Calendar event | Search Events | Search calendar events by keyword with optional time filters and pagination (calendar v4 events search). |
| Calendar event | Update Event | PATCH-update a Feishu calendar event: only non-empty inputs are sent; omitted fields keep their current values on the server. timezone/reminder/visibility live under AdditionalFields. |
| Chat | Add Members to Chat | Add users or bots to a Feishu chat group. |
| Chat | Create Chat | Create a new chat group in Feishu. |
| Chat | Delete Chat | Delete (dissolve) a chat group in Feishu. |
| Chat | Get Chat | Get chat information in Feishu. |
| Chat | Get Chat List | Get the list of chats that the user or bot is a member of in Feishu. |
| Chat | Get Chat Members | Get the list of members in a Feishu chat group. |
| Chat | Search Chats | Search for chats visible to the user or bot in Feishu. |
| Chat | Is in Chat | Check if a user or bot is in a Feishu chat group. |
| Chat | Join Chat | Allow current user or bot to join a Feishu chat group. |
| Chat | Update Chat | Update chat information in Feishu. |
| Department | Create Department | Creates a new department in Feishu organization structure. |
| Department | Delete Department | Deletes a department from Feishu organization structure. Ensure the department has no members or child departments before deletion. |
| Department | Get Child Departments | Retrieves the child departments of a specified department in Feishu. |
| Department | Get Departments | Batch retrieves department information from Feishu by department IDs. |
| Department | Get Parent Department | Retrieves the parent departments of a specified department in Feishu. |
| Department | Search Departments | Searches for Feishu departments by name using the official search API, returning a list of departments that match the search query. |
| Department | Update Department | Updates department information in Feishu organization structure. Only non-empty fields will be updated. |
| User | Find Users by Department | Retrieves the list of users directly under a specific department in Feishu. |
| User | Get One User ID by Contact | Retrieves a single user ID from Feishu by email address or mobile phone number. Phone takes priority when both are provided. |
| User | Get User ID by Contact | Retrieves user IDs from Feishu by email addresses or mobile phone numbers. |
| User | Get Users | Batch retrieves user information from Feishu by user IDs. |
| User | Search Users | Lists Feishu directory users with optional client-side keyword filtering (not a dedicated Feishu search API). See Query parameter for limitations. Use department filter to reduce scanned pages when possible. Result scope depends on the app's Feishu contact permissions; if a colleague is missing, verify contact read scopes and department visibility. |
| Drive / document | Create Folder | Create a new folder in Feishu Drive. |
| Drive / document | List Folder Files | List all files and folders in a specified Feishu Drive folder with pagination support. |
| Drive / document | Create Markdown Document | Create a Feishu cloud document from Markdown content with complete workflow integration. |
| Drive / document | Get Document Content | Retrieves the content of a Feishu cloud document in Markdown format. |
| Spreadsheet | Batch Get Spreadsheet Values | Read multiple ranges in one request (comma-separated ranges query param). sheetId in each range comes from sheet metadata or the spreadsheet URL, not necessarily the workbook SpreadsheetToken. Example ranges: sheetId1!A1:B2,sheetId2!C1:C10. |
| Spreadsheet | Copy Spreadsheet | Copy a Feishu spreadsheet via Drive file copy (async/rate-limited). Requires docs:document:copy or drive scope and edit permission on destination folder. Related: Create_Spreadsheet, List_Folder_Files. |
| Spreadsheet | Create Spreadsheet | Create an empty Feishu spreadsheet in Drive. Prerequisites: app with sheets or drive scopes; optional folder_token for parent. Related: Copy_Spreadsheet, Get_Spreadsheet_Sheets, Update_Spreadsheet_Values. |
| Spreadsheet | Get Spreadsheet Sheets | List all sheets in a spreadsheet (sheet_id, title, index). Use sheet_id to build ranges like sheetId!A1:B2 for read/write tools. |
| Spreadsheet | Get Spreadsheet Values | Read a single A1 range from a spreadsheet (sheets v2 GET). Range format: sheetId!A1:B2. Optional valueRenderOption / dateTimeRenderOption. |
| Spreadsheet | Batch Update Spreadsheet Values | Batch-write multiple cell ranges in one request (values_batch_update). ValueRanges = list of ranges and their row/column data matrices. Feishu enforces limits on batch size and cells per request—see official Sheets API documentation; split large jobs into multiple calls. |
| Spreadsheet | Update Spreadsheet Values | Write one range (overwrites cells). values_json must be a JSON string of a 2D array. Max 5000 rows x 100 columns per request. |
| Message | Send Message | Sends a message to a user or group in Feishu (Im API). Common issues: Invalid receive_id — verify ID and that the user/chat exists; No permission — check im:message (and related) scopes; Message too large — plain text length limits apply, use post/interactive for long or rich content. |
| Message | Send Urgent Notification | Sends an urgent in-app notification to specified users for a specific message in Feishu. |
| Message | Send Urgent Phone Call | Sends an urgent phone call notification to specified users for a specific message in Feishu. |
| Message | Send Urgent SMS | Sends an urgent SMS notification to specified users for a specific message in Feishu. |
Operation Details
Create Calendar
Creates a new calendar with the specified name and optional description.
Input Parameters:
- Summary: Name/title of the calendar to be created (required).
Options:
- Description: Description of the calendar.
Output:
- Data (object): Response data containing created calendar information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Delete Calendar
Deletes a specified calendar by its calendar ID. This action cannot be undone.
Input Parameters:
- CalendarId: ID of the calendar to be deleted (required).
Output:
- Data (object): Response data containing deletion confirmation.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Calendar
Retrieves detailed information about a specific calendar by its calendar ID.
Options:
- CalendarId: Calendar ID to retrieve information for (default: "primary").
Output:
- Data (object): Response data containing calendar information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
List Calendars
Retrieves a list of calendars accessible to the authenticated user with pagination support.
Options:
- PageToken: Pagination token for retrieving the next page of results.
- PageSize: Maximum number of calendars to return per page (1-500, default: 50).
Output:
- Data (object): Response data containing calendar list information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Search Calendars
Searches for calendars based on a query string, supporting fuzzy matching of calendar names.
Input Parameters:
- Query: Search query string for fuzzy matching calendar names (required).
Options:
- PageToken: Pagination token for retrieving the next page of results.
- PageSize: Maximum number of calendars to return per page (1-100, default: 20).
Output:
- Data (object): Response data containing search results.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Update Calendar
Updates the properties of an existing calendar, such as its name and description.
Input Parameters:
- CalendarId: ID of the calendar to be updated (required).
Options:
- Summary: New name/title for the calendar.
- Description: New description for the calendar.
Output:
- Data (object): Response data containing updated calendar information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Add Attendees to Event
Add one or more attendees to a specified event in a calendar.
Input Parameters:
- CalendarId: Calendar ID where the event is located (required).
- EventId: Event ID to add attendees to (required).
Options:
- Attendees: Attendee objects (type user|chat|resource|third_party plus ids). object-array in workflow; empty means omit. Code also accepts JSON array string.
- UserIdType: User ID type (open_id, union_id, user_id). Default: open_id.
- NeedNotification: Whether to send bot notifications to attendees.
- InstanceStartTimeAdmin: Instance start time for admin modification of recurring events (optional).
- IsEnableAdmin: Whether to enable meeting room admin privileges.
- AddOperatorToAttendee: Whether to add meeting room contact to event attendees.
Output:
- Data (object): Data returned upon successful attendee addition.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Create Event
Create a new calendar event in Feishu.
Input Parameters:
- CalendarId: Calendar ID (required).
- Summary: Event title (required).
- StartTime: Start time in YYYY-MM-DD HH:MM:SS format (required).
- EndTime: End time in YYYY-MM-DD HH:MM:SS format (required).
Options:
- Description: Event description (optional).
- Timezone: Timezone (default: Asia/Shanghai).
- Location: Event location (optional).
- ReminderMinutes: Reminder minutes before event (default: 15).
- Visibility: Event visibility (default, public, private).
- AttendeeAbility: Attendee ability (none, can_see_others, can_invite_others, can_modify_event).
- NeedNotification: Whether to send bot notifications to participants when updating the event.
Output:
- Data (object): Data returned upon successful event creation.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Delete Event
Deletes a calendar event in Feishu. WARNING: This operation is PERMANENT and CANNOT BE UNDONE. The event is removed for all attendees.
Input Parameters:
- CalendarId: Calendar ID (required). Obtain from List Calendars, Get Calendar, or calendar metadata in Feishu. Example format: feishu.cn_xxxxxxxxxx@group.calendar.feishu.cn
- EventId: Event ID to delete (required). Obtain from Search Events, list events APIs, or calendar UI integrations. Example prefix: ev_...
- Confirm: Must be true to permanently delete the event. This cannot be undone; the event is removed for all attendees.
Options:
- NeedNotification: Whether to send deletion notification email/messages to attendees. Default: true (notify). Set false for silent deletion.
Output:
- Data (object): Payload on successful deletion: event_id (string) — deleted event id; deleted (bool) — true on success.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Event
Get details of a calendar event in Feishu.
Input Parameters:
- CalendarId: Calendar ID (required).
- EventId: Event ID to retrieve (required).
Output:
- Data (object): Data returned upon successful event retrieval.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
List Events
List calendar events in Feishu.
Input Parameters:
- CalendarId: Calendar ID (required).
Options:
- StartTime: Query start time in YYYY-MM-DD HH:MM:SS format (optional).
- EndTime: Query end time in YYYY-MM-DD HH:MM:SS format (optional).
- PageToken: Page token for pagination (optional).
- PageSize: Number of events per page, max 1000 (default: 500).
- SyncToken: Sync token for incremental sync (optional).
Output:
- Data (object): Data returned upon successful events list retrieval.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Remove Attendees from Event
Batch-remove calendar event attendees via Feishu calendar v4; pass Attendees as an object array mapped to delete_ids.
Input Parameters:
- CalendarId: Calendar ID where the event is located (required).
- EventId: Event ID to remove attendees from (required).
- Attendees: Non-empty object-array for batch_delete (type plus user_id/chat_id/room_id/third_party_email). Code also accepts JSON array string.
Options:
- UserIdType: User ID type (open_id, union_id, user_id). Default: open_id.
- NeedNotification: Whether to send bot notifications to attendees.
- AdvancedOptions: Optional object: instance_start_time_admin, is_enable_admin. Empty omits. Code also accepts JSON object string.
Output:
- Data (object): Data returned upon successful attendee removal.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Search Events
Search calendar events by keyword with optional time filters and pagination (calendar v4 events search).
Input Parameters:
- CalendarId: Calendar ID for the calendar to search (required). Obtain from calendar list or primary calendar; same as other calendar v4 actions — not a user_id.
- Query: Keyword for fuzzy matching event titles/summaries (required).
Options:
- StartTime: Filter: range start, local wall-clock YYYY-MM-DD HH:MM:SS (optional). Converted to Unix seconds for the API.
- EndTime: Filter: range end, local wall-clock YYYY-MM-DD HH:MM:SS (optional).
- PageToken: Opaque token from previous response Data.page_token for the next page (optional).
- PageSize: Page size (integer, clamped to 10–100; default 20).
Output:
- Data (object): Upstream data: items (event list), page_token, has_more, and related fields per Feishu calendar v4 events search.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Update Event
PATCH-update a Feishu calendar event: only non-empty inputs are sent; omitted fields keep their current values on the server. timezone/reminder/visibility live under AdditionalFields.
Input Parameters:
- CalendarId: Calendar ID (required). Use the same calendar_id as Create/List calendar events — not app user_id.
- EventId: Event ID to update (required). Use event_id returned by create or search APIs.
Options:
- Summary: Event title (optional).
- Description: Event description (optional).
- StartTime: Start time YYYY-MM-DD HH:MM:SS (optional). PATCH: only sent when non-empty; pairs with AdditionalFields.timezone when changing times.
- EndTime: End time YYYY-MM-DD HH:MM:SS (optional). PATCH semantics: omitted fields are not cleared on the server.
- Location: Event location (optional).
- Attendees: Third-party attendee emails, comma-separated (optional).
- AdditionalFields: Optional object: timezone, reminder_minutes, visibility (default|public|private). Empty omits. Code also accepts JSON object string.
Output:
- Data (object): event_id, summary, start_time/end_time timestamps, location, description (subset of updated event).
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Add Members to Chat
Add users or bots to a Feishu chat group.
Input Parameters:
- ChatId: The ID of the chat group.
- MemberIds: List of member IDs to add, separated by commas.
Options:
- MemberIdType: Type of member ID (user_id, open_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned with added member information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Create Chat
Create a new chat group in Feishu.
Options:
- Name: Chat name (optional).
- Description: Chat description (optional).
- UserIds: List of user IDs to add, separated by commas (optional).
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
- ChatType: The type of chat group (private, public). Default is "private".
Output:
- Data (object): Data returned upon successful chat creation.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Delete Chat
Delete (dissolve) a chat group in Feishu.
Input Parameters:
- ChatId: Chat ID to delete.
- Confirm: Must be true to delete the chat.
Output:
- Data (object): Data returned upon successful chat deletion.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Chat
Get chat information in Feishu.
Input Parameters:
- ChatId: Chat ID to retrieve information for.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful chat information retrieval.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Chat List
Get the list of chats that the user or bot is a member of in Feishu.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
- PageSize: Page size, maximum 20. Default is 20.
- PageToken: Page token for pagination, empty for first page.
Output:
- Data (object): Data returned upon successful chat list retrieval.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Chat Members
Get the list of members in a Feishu chat group.
Input Parameters:
- ChatId: The ID of the chat group.
Options:
- MemberIdType: Type of member ID (user_id, open_id, union_id). Default is 'open_id'.
- PageToken: Page token for pagination (optional).
- PageSize: Page size for pagination, max 100. Default is 20.
Output:
- Data (object): Data returned with member list information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Search Chats
Search for chats visible to the user or bot in Feishu.
Options:
- Query: Search keyword, returns all visible chats when empty.
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
- PageSize: Page size, maximum 20. Default is 20.
- PageToken: Page token for pagination, empty for first page.
Output:
- Data (object): Data returned upon successful chat search.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Is in Chat
Check if a user or bot is in a Feishu chat group.
Input Parameters:
- ChatId: The ID of the chat group.
Output:
- Data (object): Data returned with membership status.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Join Chat
Allow current user or bot to join a Feishu chat group.
Input Parameters:
- ChatId: The ID of the chat group to join.
Output:
- Data (object): Data returned with join status information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Update Chat
Update chat information in Feishu.
Input Parameters:
- ChatId: Chat ID to update.
Options:
- Name: New chat name (optional).
- Description: New chat description (optional).
- OwnerId: New owner user ID (optional).
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful chat update.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Create Department
Creates a new department in Feishu organization structure.
Input Parameters:
- Name: The name of the department to create.
Options:
- ParentDepartmentId: The ID of the parent department. Optional field, default "0" means creating a root department.
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
- I18nName: Internationalized department name (locale keys e.g. zh_cn, en_us). Omit when unset. Type object in workflow; code also accepts JSON object string.
- LeaderUserId: The user ID of the department leader.
- Order: The order of the department among its siblings. Smaller values appear first.
- UnitIds: Unit ID strings to bind; use string-array in workflow. Empty means omit. Code also accepts comma-separated string or JSON array string.
- CreateGroupChat: Whether to create a group chat for the department.
Output:
- Data (object): A object containing the created department information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Delete Department
Deletes a department from Feishu organization structure. Ensure the department has no members or child departments before deletion.
Input Parameters:
- DepartmentId: The ID of the department to delete.
Options:
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
Output:
- Data (object): A object containing the operation result, typically empty on successful deletion.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Child Departments
Retrieves the child departments of a specified department in Feishu.
Options:
- DepartmentId: The ID of the parent department to query its child departments. Default is "0" for root department.
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
- PageSize: Page size for pagination, maximum 100, default 50.
- PageToken: Page token for pagination, empty means start from beginning.
Output:
- Data (object): A object containing the list of child departments and pagination info.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Departments
Batch retrieves department information from Feishu by department IDs.
Input Parameters:
- DepartmentIds: List of department IDs separated by commas, maximum 50 IDs allowed.
Options:
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
Output:
- Data (object): A object containing detailed department information list.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Parent Department
Retrieves the parent departments of a specified department in Feishu.
Input Parameters:
- DepartmentId: The ID of the department to query its parent departments.
Options:
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
Output:
- Data (object): A object containing the list of parent departments from direct parent to root.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Search Departments
Searches for Feishu departments by name using the official search API, returning a list of departments that match the search query.
Input Parameters:
- Query: Search keyword for department names.
Options:
- PageSize: Number of departments to return per page, default 20, maximum 50.
- DepartmentIdType: Department ID type, supports open_department_id or department_id.
Output:
- Results (object-array): A list containing the departments matching the search query.
- TotalCount (number): Total number of departments found matching the search criteria.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Update Department
Updates department information in Feishu organization structure. Only non-empty fields will be updated.
Input Parameters:
- DepartmentId: The ID of the department to update.
Options:
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
- Name: New name of the department. Empty means no change.
- I18nName: Internationalized name object; empty means no change. Type object in workflow; code also accepts JSON object string.
- LeaderUserId: New user ID of the department leader. Empty means no change.
- UnitIds: Unit IDs as string-array; empty means no change. Code also accepts comma-separated string or JSON array string.
Output:
- Data (object): A object containing the updated department information.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Find Users by Department
Retrieves the list of users directly under a specific department in Feishu.
Input Parameters:
- DepartmentId: The ID of the department to query.
Options:
- UserIdType: Type of user ID to return, supports open_id, union_id, user_id. Default is open_id.
- DepartmentIdType: Type of department ID, supports open_department_id, department_id. Default is open_department_id.
- PageSize: Page size, maximum 50, default 10.
- PageToken: Pagination token for getting the next page.
Output:
- Data (object): A object containing the list of users directly under the department.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get One User ID by Contact
Retrieves a single user ID from Feishu by email address or mobile phone number. Phone takes priority when both are provided.
Options:
- Email: Email address to look up. Optional if Phone is provided.
- Phone: Mobile phone number to look up. Optional if Email is provided. Takes priority over Email when both are provided.
- UserIdType: The type of user ID to return (open_id, user_id, union_id). Default is 'open_id'.
Output:
- UserId (string): Feishu user ID. Empty string if operation fails.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get User ID by Contact
Retrieves user IDs from Feishu by email addresses or mobile phone numbers.
Options:
- Emails: Comma-separated list of email addresses to look up.
- Mobiles: Comma-separated list of mobile phone numbers to look up.
- UserIdType: The type of user ID to return (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Response data containing user information when successful.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Get Users
Batch retrieves user information from Feishu by user IDs.
Input Parameters:
- UserIds: List of user IDs separated by commas, maximum 50 IDs allowed.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful user retrieval.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Search Users
Lists Feishu directory users with optional client-side keyword filtering (not a dedicated Feishu search API). See Query parameter for limitations. Use department filter to reduce scanned pages when possible. Result scope depends on the app's Feishu contact permissions; if a colleague is missing, verify contact read scopes and department visibility.
Input Parameters:
- Query: ⚠️ IMPORTANT: This is NOT Feishu's native search API. The tool lists users via GET /contact/v3/users (paginated) and filters matches in memory by keyword. Risks: may miss matches in large directories; stops after PageSize matches or when list pages end. Best for small teams or fuzzy lookup; for exact ID lookup use email/mobile or dedicated user APIs when available.
Keyword: case-insensitive substring match with OR logic across ANY of: name, email, nickname, en_name, mobile, employee_no, employee_id, open_id (a hit in one field is enough). Example: "Jim" matches name "Jim Li", email "jim@company.com", or mobile containing "jim".
Options:
- PageSize: Maximum number of user records to return in this call; values outside 1–100 are clamped to a sensible default (50).
- DepartmentId: Optional department open_department_id from Get_Departments, Get_Child_Departments, or Search_Departments to scope the user list. Format: od_xxxxxx (example: "od_f1e2d3c4b5a6"). Leave empty to use the API default scope (standalone users in app visibility). Do not pass the department display name.
- UserIdType: Which user identifier format is returned in each user object (API parameter user_id_type). Options: open_id (default) — app-scoped user ID in this Feishu app; union_id — stable across apps in the same tenant for cross-app correlation; user_id — tenant-scoped legacy ID (discouraged unless required). Most integrations should keep open_id; choose union_id only when correlating the same person across multiple Feishu apps in one tenant. Example: "open_id".
- Status: Optional filter on each user's employment/status (applied client-side on API results; list users has no status query parameter). Leave empty for no filter. is_active: activated and not resigned/frozen; is_frozen: paused accounts; is_resigned: departed users. Example: "is_active"
Output:
- Results (object-array): Users matching the keyword (and Status filter if set). Each item follows Feishu contact user fields; commonly used: open_id / union_id / user_id (per UserIdType), name, en_name, email, mobile, department_ids, status { is_frozen, is_resigned, is_activated }, employee_no, etc. Full schema: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/contact-v3/user/list
- TotalCount (number): Total number of users found matching the search criteria.
- MoreListPagesExist (bool): True if the contact directory list API still had more pages after this scan.
- StoppedAtMatchLimit (bool): True if results hit PageSize before scanning all directory pages.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Create Folder
Create a new folder in Feishu Drive.
Options:
- Name: Name of the new folder to be created.
- FolderToken: Token of the parent folder where the new folder will be created. If empty, the folder will be created in the root directory.
Output:
- Data (object): Data returned upon successful folder creation.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
List Folder Files
List all files and folders in a specified Feishu Drive folder with pagination support.
Options:
- FolderToken: Token of the folder to list files from.
- PageSize: Number of items per page, range 10-200, default is '50'.
- PageToken: Pagination token for retrieving next page, empty for first page.
- OrderBy: Sort field, options are 'EditedTime' or 'CreatedTime', default is 'EditedTime'.
- Direction: Sort direction, options are 'ASC' or 'DESC', default is 'DESC'.
Output:
- Data (object): Data returned upon successful operation.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Create Markdown Document
Create a Feishu cloud document from Markdown content with complete workflow integration.
Input Parameters:
- Title: Title of the new document.
- MarkdownContent: Markdown content to be converted. Supports common Markdown syntax including headers, text formatting, lists, code blocks, quotes, tables, etc.
Options:
- FolderToken: Token of the parent folder. If not provided, the document will be created in the root directory.
Output:
- Data (object): Data returned upon success, containing document_id, document_url, title, blocks_created, and nested_blocks_result.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description, empty string on success.
Get Document Content
Retrieves the content of a Feishu cloud document in Markdown format.
Input Parameters:
- DocToken: The unique identifier of the cloud document, length range: 22-27 characters.
Options:
- DocType: Cloud document type. Must be 'docx' (new version documents).
- ContentType: Content type. Must be 'markdown' (Markdown format).
- Lang: Language for @user element names. Options: 'zh' (Chinese), 'en' (English), 'ja' (Japanese).
Output:
- Content (string): The document content in Markdown format.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Batch Get Spreadsheet Values
Read multiple ranges in one request (comma-separated ranges query param). sheetId in each range comes from sheet metadata or the spreadsheet URL, not necessarily the workbook SpreadsheetToken. Example ranges: sheetId1!A1:B2,sheetId2!C1:C10.
Input Parameters:
- SpreadsheetToken: Spreadsheet token (e.g. shtcnbKKtlvWicyQWYG). In the Feishu spreadsheet URL it is the segment after /sheets/ (https://xxx.feishu.cn/sheets/
). You can also obtain it from the Sheets API. - Ranges: Comma-separated A1 notation ranges (sheetId!A1:B2,sheetId2!C1:C5, no spaces around commas). sheetId is numeric (e.g. 123456) or a string from sheet metadata or the URL—not always the same as SpreadsheetToken. Use standard cell references (A1:B10, C:C, 1:5); named ranges are not supported. Multiple ranges are allowed; keep batch size reasonable under platform limits. Example: "abc123!A1:B2,def456!C1:C5".
Options:
- ValueRenderOption: How to render cell values (optional; API default is often FormattedValue if omitted). Allowed values: ToString (raw stored value), Formula (formula text such as =SUM(A1:A10) where applicable), FormattedValue (display text as in the sheet; recommended for most reads), UnformattedValue (raw unformatted values). Example: "FormattedValue".
- DateTimeRenderOption: How to render date/time cells (optional; common default FormattedString). Example: "FormattedString" for a human-readable datetime string as in the sheet (e.g. "2024-01-15 10:30:00").
- UserIdType: When cells contain @mentions, which user id form is used in resolved values (optional; default follows API, often open_id). Values: open_id (app-scoped), union_id (stable across apps in the tenant), user_id (tenant user id). Example: "open_id".
Output:
- Data (object): Batch read result: value_ranges (array of objects, each with range (string A1 range), majorDimension (ROWS or COLUMNS), values (2D array of cell values)), total_cells (number), revision (number), spreadsheet_token (string). Example: {"value_ranges": [{"range": "abc123!A1:B2", "majorDimension": "ROWS", "values": [["A1", "B1"], ["A2", "B2"]]}], "total_cells": 4}
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Copy Spreadsheet
Copy a Feishu spreadsheet via Drive file copy (async/rate-limited). Requires docs:document:copy or drive scope and edit permission on destination folder. Related: Create_Spreadsheet, List_Folder_Files.
Input Parameters:
- SourceFileToken: Source spreadsheet token (same as spreadsheet_token in the URL).
- Name: Name for the new spreadsheet file (max 256 bytes).
- FolderToken: Destination folder token where the copy is created.
Output:
- Data (object): Normalized payload for this action; see tool doc for fields.
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Create Spreadsheet
Create an empty Feishu spreadsheet in Drive. Prerequisites: app with sheets or drive scopes; optional folder_token for parent. Related: Copy_Spreadsheet, Get_Spreadsheet_Sheets, Update_Spreadsheet_Values.
Options:
- Title: Optional spreadsheet title (0–255 chars).
- FolderToken: Optional parent folder token; empty creates under cloud space root.
Output:
- Data (object): Normalized payload for this action; see tool doc for fields.
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Get Spreadsheet Sheets
List all sheets in a spreadsheet (sheet_id, title, index). Use sheet_id to build ranges like sheetId!A1:B2 for read/write tools.
Input Parameters:
- SpreadsheetToken: Spreadsheet token from URL or Create_Spreadsheet.
Output:
- Data (object): Normalized payload for this action; see tool doc for fields.
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Get Spreadsheet Values
Read a single A1 range from a spreadsheet (sheets v2 GET). Range format: sheetId!A1:B2. Optional valueRenderOption / dateTimeRenderOption.
Input Parameters:
- SpreadsheetToken: Spreadsheet token.
- CellRange: Range such as sheetId!A1:B2 (sheetId from Get_Spreadsheet_Sheets).
Options:
- ValueRenderOption: Optional: ToString, Formula, FormattedValue, UnformattedValue.
- DateTimeRenderOption: Optional: FormattedString for date/time cells.
- UserIdType: Optional: open_id, union_id, or user_id when cells mention users.
Output:
- Data (object): Normalized payload for this action; see tool doc for fields.
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Batch Update Spreadsheet Values
Batch-write multiple cell ranges in one request (values_batch_update). ValueRanges = list of ranges and their row/column data matrices. Feishu enforces limits on batch size and cells per request—see official Sheets API documentation; split large jobs into multiple calls.
Input Parameters:
- SpreadsheetToken: Spreadsheet token (unique id). Obtain from the spreadsheet URL (e.g. https://xxx.feishu.cn/sheets/shtcnxxxx — the shtcn... segment) or from Create Spreadsheet / spreadsheet metadata APIs.
- ValueRanges: Non-empty array of {range, values} objects for values_batch_update (or a JSON array string). Each object uses range (string, A1 notation with sheet id, e.g. Sheet1!A1:B2) and values (2D array: outer dimension = rows, inner = columns; e.g. [["Name","Age"],["Alice",25]]). Cell values may be string, number, or boolean; if the matrix size does not match the range, the platform may pad or truncate per Feishu rules.
- Confirm: Must be true to perform batch write (safety).
Output:
- Data (object): Batch write result: spreadsheet_token (string); revision (number) — spreadsheet version after update; responses (array) — one entry per written range, typically including spreadsheetToken, updatedRange, updatedRows, updatedColumns, updatedCells (field names per Feishu API).
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Update Spreadsheet Values
Write one range (overwrites cells). values_json must be a JSON string of a 2D array. Max 5000 rows x 100 columns per request.
Input Parameters:
- SpreadsheetToken: Spreadsheet token.
- CellRange: Target range sheetId!A1:B2; must cover the written values.
- ValuesJson: JSON string 2D array, e.g. [["Hello",1],["World",2]].
Output:
- Data (object): Normalized payload for this action; see tool doc for fields.
- Summary (string): One-sentence outcome for the agent (success path).
- Hint (string): Actionable next step when the call failed.
- Retryable (bool): Whether retrying may succeed.
- OriginalStatusCode (number): Upstream HTTP status; 0 if no response.
- StatusCode (number): App status: 200 ok, -1 validation, 500 transport.
- ErrorMessage (string): Error text from API or validation; empty on success.
Send Message
Sends a message to a user or group in Feishu (Im API). Common issues: Invalid receive_id — verify ID and that the user/chat exists; No permission — check im:message (and related) scopes; Message too large — plain text length limits apply, use post/interactive for long or rich content.
Input Parameters:
- ReceiveId: Recipient user Open ID or group chat ID (Feishu "Open ID" style identifier).
How to obtain:
- User Open ID: Get User Info, Search Users, or directory APIs
- Chat ID: Get Chat List or chat_id from webhook events
- Bots: open_id is present in message events
Examples: user ou_...; group chat oc_....
Options:
- MsgType: Im API msg_type. Supported values include: text (plain text, use with Text), post (rich text), image, file, audio, media, sticker, interactive (cards), share_chat, share_user. Default: text. When sending Text only, keep MsgType=text.
- Text: Plain text body for msg_type=text. Mutually exclusive with StructuredContent.
- StructuredContent: Im API content payload as a JSON object (mutually exclusive with Text). Code also accepts a JSON object string.
Examples (msg_type must match content shape):
- post (rich text): {"zh_cn":{"title":"...","content":[[{"tag":"text","text":"..."}]]}}
- interactive (card): {"elements":[{"tag":"div","text":{"tag":"lark_md","content":"Title"}}, ...}]}
- image: {"image_key":"img_v2_..."}
See Feishu IM message create docs: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/im-v1/message/create
- ReceiveIdType: Literal value for the API query parameter receive_id_type (not free text). Options: open_id (default) — user/chat Open ID in this app; user_id — tenant user_id where applicable; union_id — cross-tenant user ID for enterprise scenarios. Default: open_id.
Output:
- Data (object): Upstream data object for the created message. Typical fields: message_id (string) — use for replies/reactions; create_time, update_time (strings, Unix seconds); chat_id (string). Exact fields follow Feishu API response.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Send Urgent Notification
Sends an urgent in-app notification to specified users for a specific message in Feishu.
Input Parameters:
- MessageId: The ID of the message to make urgent.
- UserIdList: Comma-separated string of user IDs to notify urgently.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful urgent app notification.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Send Urgent Phone Call
Sends an urgent phone call notification to specified users for a specific message in Feishu.
Input Parameters:
- MessageId: The ID of the message to make urgent.
- UserIdList: Comma-separated string of user IDs to notify urgently via phone call.
- Confirm: Must be true to send urgent phone calls.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful urgent phone notification.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
Send Urgent SMS
Sends an urgent SMS notification to specified users for a specific message in Feishu.
Input Parameters:
- MessageId: The ID of the message to make urgent.
- UserIdList: Comma-separated string of user IDs to notify urgently via SMS.
Options:
- UserIdType: Type of user ID (open_id, user_id, union_id). Default is 'open_id'.
Output:
- Data (object): Data returned upon successful urgent SMS notification.
- Summary (string): One-sentence outcome for the agent (success path); empty string when StatusCode is not 200 or ErrorMessage is set.
- Hint (string): Actionable next step when the call failed; empty string on success. Use with Retryable to decide whether to retry.
- Retryable (bool): Whether retrying the same request may succeed (true for transient network/timeouts; false for validation or permission errors).
- OriginalStatusCode (number): Original HTTP status code returned by the upstream API. Default 0 = request did not reach upstream (e.g., timeout). Use for debugging.
- StatusCode (number): Application status: 200 when the tool finished; -1 parameter validation error; 500 network or unexpected error. When the HTTP response was received, see OriginalStatusCode.
- ErrorMessage (string): Error description if the operation fails, empty string on success.
5. Example Usage
This example walks through sending a plain text message to a chat, which is one of the most common Feishu automations.
Scenario: Post a short status update to a group chat when another system triggers a workflow.
At a high level, the flow is: Start → Feishu (Send Message) → Answer.
- Add the tool node
- On the workflow canvas, click + to add a node.
- Open the Tools tab and select Feishu.
- Choose Send Message so the node is placed on the canvas.
- Configure the node
- Select the node to open the configuration panel.
- Credentials: Pick your saved Feishu credential from the dropdown.
- Parameters: Set receive_id_type to match your ID (for example chat_id for a group). Paste the target receive_id from Feishu (ensure the bot or app is a member of the chat if required). Enter msg_type (often text) and the content payload expected by that message type.
- Run and verify
- Resolve any validation errors shown on the canvas.
- Click Test run (or your workspace’s equivalent) to execute the workflow.
- Open execution logs to confirm HTTP success and that the message appears in Feishu.
After a successful run, the same pattern extends to other actions: pick the operation, map IDs from earlier steps, and iterate using logs when debugging permission or scope issues.
6. FAQs
Q: Why do I get 401 or 403 errors?
A: The app may be missing API scopes or tenant admin approval. Open the Feishu developer console, verify scopes for the APIs you call, republish the app if needed, and reinstall or reauthorize where your tenant requires it.
Q: receive_id is reported as invalid when sending messages.
A: Check that receive_id_type matches the ID format you pass, that the chat or user exists, and that the bot has been added to the chat when sending to a group.
Q: Why is a required spreadsheet range failing validation?
A: Confirm sheet_id comes from sheet metadata (or the spreadsheet URL), build ranges as sheetId!A1:B2, and keep batch sizes within Feishu Sheets API limits—split very large writes across multiple calls.
Q: Search Users returns fewer results than expected.
A: Directory listing depends on contact permissions and filters. Narrow results with department filters when possible, and remember this action applies client-side keyword filtering over directory pages rather than a dedicated search endpoint.
7. Official Documentation
For deeper API references and platform updates, see the Feishu Open Platform documentation.
Leave a Reply.