create_agent
Create a new agent
Create an AI agent like step 1 of the app's builder. Choose its direction: purpose "sales" (default), "support" or "info". The agent starts in DRAFT and contacts nobody. Needs at least 1 credit on the balance (checked, not charged). Fails with a plan-limit error when all agent slots are used (see get_agent_plan_limits). Next: set_agent_company → generate_agent_script → channels.
输入参数name必填genderpurposedescriptionavatar_preset
update_agent
Update agent basics
Change an agent's name, description, direction (purpose), voice gender or preset face. Only the fields you pass change. Company name/website/description → set_agent_company; contacts → set_agent_contact_channels. Free.
输入参数id必填namegenderpurposedescriptionavatar_preset
set_agent_avatar_from_url
Set the agent's own photo
Upload a custom avatar photo (JPG, PNG or GIF, ≤5 MB) from a public image URL or base64. Replaces the preset face. Free.
输入参数id必填image_urlimage_base64
set_agent_contact_channels
Set the contacts the agent hands out
Set the meeting link, presentation link, email, phone, WhatsApp, Telegram and up to 10 custom links that the agent gives to visitors (also shown as screen cards). MERGE: only the channels you pass change; pass "" (or null for custom_links) to clear one. Write, free.
输入参数id必填emailphonetelegramwhatsappmeeting_urlcustom_linkspresentation_url
list_voice_catalog
List voices (Voice v2 catalogue)
All voices for the website widget, Slide Presenter and Telegram voice: engine, gender, accent, expressive support, Ukrainian support, recommended flag, preview audio. Read-only. Use a voice_id from here in set_agent_voice / set_presentation_voice / set_telegram_voice_settings.
无需输入参数。
set_agent_voice
Turn on / configure the website-widget voice
Configure the voice of the agent's website widget exactly like the app's widget settings page and create/update the voice agent at the voice provider, so voice calls in the widget really work. Only the settings you pass change (the rest keep their saved values or the app defaults). voice_id is required the first time (list_voice_catalog). Takes up to ~1 min. Free to configure; widget voice calls cost 14 credits/min.
输入参数id必填llmrulesspeedvolumeambientemotionhandbookvoice_idlanguagesend_call_sbackchannel另有 10 个
test_agent_reply
Ask the agent a test question (text)
Send a message to the agent and get its reply using its current script — a text test, nobody is contacted. Needs a generated script. Use history for a multi-turn test.
输入参数id必填historymessage必填
update_agent_script
Edit the agent's script stages
Replace the script stages (rename, reorder, edit, add or remove stages) and optionally the tone, like the builder's script editor. Send the FULL list of stages you want; the full text is rebuilt from them. Get the current stages from get_agent (script_sections). Free.
输入参数id必填sections必填email_scriptscript_style
add_agent_document
Attach a knowledge file to the agent
Upload a material the agent learns from (PDF, DOC, DOCX, TXT, XLS, XLSX, CSV, PPT, PPTX, KEY; ≤10 MB) from a public URL or base64. Used the next time the script is generated (generate_agent_script). Free.
输入参数id必填file_urlfilename必填file_base64
remove_agent_document
Remove a knowledge file from the agent
Remove an uploaded material from the agent (see get_agent → documents[].url). Free.
输入参数id必填urlfilename
generate_knowledge_from_url
Turn a web page into a knowledge block
Read a public web page and return a knowledge text block about it. Costs 1 credit. NOT saved — append the result to company_description with set_agent_company if you want the agent to know it.
输入参数id必填url必填
scan_agent_website
Scan the agent's website structure
List the pages of a website (path, title, description, keywords) for this agent — used by the page-navigation feature. Costs 2 credits. Read-only for the agent (nothing saved).
输入参数id必填website_url必填
generate_agent_page_descriptions
Describe website pages with AI
Write AI descriptions + keywords for website pages (output of scan_agent_website). Costs 1 credit per 5 pages. Not saved.
输入参数id必填pages必填
generate_support_script
Generate a support knowledge script (legacy)
Legacy support-script generator of the old text-widget creators. Prefer generate_agent_script with purpose "support". Needs company name + description. Costs 1 credit.
输入参数id必填
generate_transition_phrases
Generate slide transition phrases
Generate the phrases the Slide Presenter uses to move between slides, in the presentation's language, and save them on the agent. Needs saved slides (set_presentation_slides).
输入参数id必填
set_agent_integrations
Set legacy integration flags
Legacy flags on the agent (zoom_enabled, google_meet_enabled, website_embed_enabled). Channels are managed with the connection tools; this does not connect anything. Free.
输入参数id必填zoom_enabledgoogle_meet_enabledwebsite_embed_enabled
preview_deep_scan
Preview a deep website scan
Show what deep_scan_agent would do: cost (15 credits), duration (60-180 s) and what gets saved. Nothing runs. ALWAYS call first and get the user's approval.
输入参数id必填persistcompany_namecompany_website
deep_scan_agent
Deep-scan the company website (15 credits)
Read the company website + LinkedIn and extract description, team, employee count, contacts, social links and pricing. Costs 15 credits, takes 60-180 s. With persist=true (default) the result is SAVED like in the app: company_description replaced, team/contacts/social/pricing stored (creates company + people records, fills blank contact channels). Waits up to ~200 s; if still running it returns a job_id — then call get_agent_job. Only call after preview_deep_scan and the user's approval.
输入参数id必填persistauto_updatecompany_namecompany_website
get_agent_job
Get a long job (deep scan / script) result
Status and result of a deep scan or script generation job started by deep_scan_agent / generate_agent_script (kept 1 hour). Poll every 10-20 s while status is "running". Read-only.
输入参数id必填job_id必填
list_agent_jobs
List recent long jobs of an agent
Deep scans and script generations of this agent in the last hour (status only) — use when a job_id was lost. Read-only.
输入参数id必填
save_scan_data
Save scan facts onto the agent
Save company facts (team, contacts, social links, pricing, employee count, auto re-scan) onto the agent — what the app does after a scan. Side effects: stores them in the agent, creates/updates the company and people records, fills BLANK contact channels (never overwrites manual ones). Not needed after deep_scan_agent with persist=true. Free.
输入参数id必填pricingcontactsdirectorsauto_updatecompany_name必填social_linksemployee_countcompany_website必填
generate_agent_description
Draft the company description from the website
AI-write "what the agent knows" about the company from its website (no full scan). Costs 1 credit. NOT saved — pass the text to set_agent_company (company_description).
输入参数id必填company_namecompany_websitetarget_language
generate_agent_script
Generate the agent's script
Generate the agent's script (stages + full text + email/LinkedIn script) in the chosen tone for its direction (sales / support / info), using the company description and uploaded files. Saves it on the agent (overwrites). Costs 1 credit, takes 60-90 s. Needs company_name and company_description (set_agent_company). If it is still running after ~200 s you get a job_id → get_agent_job.
输入参数id必填purposescript_style必填
get_agents_dashboard
Legacy agents dashboard numbers
Older overview numbers of all agents (superseded by get_analytics_agents). Read-only.
无需输入参数。
get_agent_connection
Get one channel of an agent
Full settings of one channel (website widget, button, presentation, Google Meet, phone, Telegram). Read-only.
输入参数id必填connection_id必填
create_agent_connection
Add a channel to an agent
Add a channel. WEBSITE_WIDGET needs website_url; new widgets get the app defaults (Modern design) plus your widget_config — then get_widget_embed_code. WEBSITE_BUTTON: just creates the channel (style it in get_widget_embed_code). PRESENTATION_WIDGET = publish the Slide Presenter (optional website_url). GOOGLE_MEET: prefer connect_google_meet. PHONE_CALL: prefer setup_phone_agent. Telegram → connect_telegram_bot; WhatsApp → connect_whatsapp_account. A second widget for the same URL updates the existing one. Free. Interactive cards in chat need design "modern"; in voice they need set_agent_voice screen_cards=true.
输入参数id必填nametype必填website_urlwidget_configphone_call_configgoogle_meet_config
update_agent_connection
Change a channel's settings
Change a channel: website widget look and behaviour (design, colours, button picture, invitation/auto-open, sounds, contact form and its wording, greetings, page navigation, voice view), name, website_url, Google Meet settings or phone texts. Only what you pass changes; widget texts and theme are merged. Free.
输入参数id必填namewebsite_urlconnection_id必填widget_configphone_call_configgoogle_meet_config
preview_delete_agent_connection
Preview removing a channel
Show what removing a channel would do. Nothing is removed. ALWAYS call first and show the user before delete_agent_connection.
输入参数id必填connection_id必填
delete_agent_connection
Remove a channel (irreversible)
Remove a channel from the agent (the embed code stops working). No undo. Only after preview_delete_agent_connection and explicit user approval.
输入参数id必填connection_id必填
get_agent_connection_stats
Channel counters
Conversations, messages, unique visitors, last activity of one channel. For widgets prefer get_connection_analytics (fresher). Read-only.
输入参数id必填connection_id必填
get_connection_analytics
Widget/button channel analytics
For a website widget/button/presentation channel: widget loaded, activated, chats started, voice calls started, plus estimated credits (text messages, voice minutes) for a date range. Read-only.
输入参数id必填date_todate_fromconnection_id必填
get_widget_embed_code
Get the embed code of a channel
HTML to paste on a site for a channel: website widget (settings load from the server), website button (style it here: text, colours, radius, size — not stored server-side) or Slide Presenter (also the direct link). Read-only.
输入参数id必填sizetexttext_colorborder_radiusconnection_id必填background_colormodal_primary_color
create_widget_test_page
Create a test page for a widget
Create (or return the existing) private, unlisted test page with this website widget installed, to try it before adding it to a real site. Only the agent's creator can do this. Free.
输入参数id必填connection_id必填
list_connection_conversations
List conversations of a channel
Conversations of a widget/presentation channel with messages, mode (chat/voice), visitor name/email/phone and page. Paged (limit ≤500). Read-only.
输入参数id必填pagelimitconnection_id必填
get_conversation_recordings
Get voice recordings of a conversation
Recording URLs (WAV), duration and start time of the voice calls in one widget conversation (up to 10 calls). Read-only.
输入参数id必填connection_id必填conversation_id必填
get_presentation
Get the agent's Slide Presenter
The agent's presentation: PDF name, slides (text + presenter script; images with include_images), look, call-to-action, presenter voice, published channels and direct link. Read-only. (list_agent_presentations shows only the legacy creator.)
输入参数id必填include_images
set_presentation_slides
Save the presentation slides
Save the slide deck — REPLACES all slides (add, remove, reorder, edit). Each slide: image (public URL or base64; JPG/PNG/WebP/GIF ≤5 MB; omit to keep the stored image of an existing slide id), extracted text and presenter script. PDF upload is not supported by the API: render the PDF pages to images first. Then write scripts with generate_slide_script and set_presentation_voice. Free.
输入参数id必填slides必填pdf_name
generate_slide_script
Write the presenter script for a slide
AI-write what the presenter says on one slide, in the presentation's language. 1 credit (2 with image_url — the AI looks at the slide). NOT saved — put it into narrator_script with set_presentation_slides.
输入参数id必填image_urlslide_number必填total_slides必填extracted_textnext_slide_textprevious_script
set_presentation_voice
Set the presenter's voice
The Slide Presenter's own voice and model (the website widget voice is not touched). Same settings as the app; only what you pass changes. Needs saved slides. Takes up to ~1 min. Free to configure; presentation voice costs 17 credits/min.
输入参数id必填llmrulesspeedvolumeambientemotionhandbookvoice_idlanguagesend_call_sbackchannel另有 10 个
set_presentation_look
Set the presentation look & behaviour
Theme, colours, corner radius, controls, autoplay, voice on/off, chat on/off, Modern look (background, glass, font, panel side, presenter bubble, voice visual), slide transition and button texts. Only what you pass changes. Free.
输入参数id必填textsthemedesignmodernautoplaytextColortransitionbuttonColorchatEnabledborderRadiusshowControls另有 4 个
set_presentation_cta
Set the presentation call-to-action
The button viewers see: a lead form (fields) or a link. Only what you pass changes (fields replaces the whole field list). Leads land in list_narrator_leads. Free.
输入参数id必填typefieldsenabledlinkUrlbuttonTextsuccessMessagelinkOpenInNewTab
get_presentation_embed_code
Get the presentation embed code & link
Direct link (narrator page) and the HTML snippet with the saved look. Publish it as a channel first (create_agent_connection type PRESENTATION_WIDGET). Read-only.
输入参数id必填
list_agent_presentations
List legacy presentations
Presentations made with the OLD presentation creator (deprecated). The current Slide Presenter is in get_presentation. Read-only.
输入参数id必填
get_narrator_analytics
Presentation analytics
Slide Presenter analytics. view "summary" (default): views, presentations started, watch time, unique viewers, average duration, completion rate, recent sessions, per channel. view "period" with date_from/date_to: widget loads, starts, watch minutes, unique viewers, credits used. Read-only. (No per-slide drop-off.)
输入参数id必填viewdate_todate_from
list_narrator_leads
List presentation leads
Leads from the presentation call-to-action form (form data, page, status, notes). Filter by status, page with limit/offset. Read-only.
输入参数id必填limitoffsetstatus
update_narrator_lead
Update a presentation lead
Set a presentation lead's status (new / contacted / converted / spam) and notes. Free.
输入参数id必填notesstatuslead_id必填
preview_delete_narrator_lead
Preview deleting a presentation lead
Show the lead that would be deleted. Nothing is deleted. Call first and show the user before delete_narrator_lead.
输入参数id必填lead_id必填
delete_narrator_lead
Delete a presentation lead (irreversible)
Permanently delete a presentation lead. Only after preview_delete_narrator_lead and explicit user approval.
输入参数id必填lead_id必填
connect_google_meet
Connect Google Meet (invite address)
Turn on the Google Meet channel the way the app does: returns the agent's own invite address ([email protected]). Invite that address to any Google Calendar event with a Meet link and the agent joins automatically. No Google login needed. Also saves the meeting settings. Free to connect; meeting minutes are billed.
输入参数id必填languageauto_joinmeeting_modegreeting_messagejoin_before_minutes
get_google_meet_settings
Get Google Meet status & settings
Whether Google Meet is connected for this agent, its invite address, settings and totals. Read-only.
输入参数id必填
update_google_meet_settings
Change Google Meet settings
Auto-join, minutes before start, greeting, language, meeting mode (voice only / presentation — needs slides). Only what you pass changes. Free.
输入参数id必填languageauto_joinmeeting_modegreeting_messagejoin_before_minutes
preview_disconnect_google_meet
Preview disconnecting Google Meet
Show what disconnecting Google Meet would do. Nothing changes. Call first and show the user.
输入参数id必填
disconnect_google_meet
Disconnect Google Meet
Remove the Google Meet channel from the agent and turn auto-join off. Already scheduled meetings are not cancelled (use cancel_meeting). Only after preview_disconnect_google_meet and user approval.
输入参数id必填
list_google_meet_history
Meeting history of an agent
All meetings of this agent (newest first) with status, times, duration, whether a transcript exists. Paged. Read-only.
输入参数id必填pagelimit
get_google_meet_analytics
Google Meet analytics of an agent
Meetings, minutes, completed, missed and credits used for a date range. Read-only.
输入参数id必填date_todate_from
list_meetings
Meetings calendar (all agents)
Google Meet meetings of all your agents in a date range (default: next 7 days, max 62 days) — title, time, link, organizer, attendees, status, agent, has transcript. Read-only.
输入参数endstartagent_id
list_meeting_agents
Agents with Google Meet
Agents that have Google Meet connected (the calendar's agent filter). Read-only.
无需输入参数。
One meeting with transcript, summary, action items, join/leave time and duration. Read-only.
输入参数meeting_id必填
get_meeting_transcript
Get a meeting transcript
Transcript messages, summary and action items of a meeting (from the database or the recording service). Read-only.
输入参数meeting_id必填
preview_cancel_meeting
Preview cancelling a meeting for the agent
Show which meeting the agent would skip. Nothing changes. Call first and show the user.
输入参数meeting_id必填
cancel_meeting
Cancel a meeting for the agent
The agent will NOT join this scheduled meeting (the calendar event itself stays). Only scheduled, not yet started meetings. No undo. Only after preview_cancel_meeting and user approval.
输入参数meeting_id必填
preview_remove_agent_from_meeting
Preview removing the agent from a live call
Show whether the agent is in this live meeting and what removing it does. Nothing changes.
输入参数meeting_id必填
remove_agent_from_meeting
Remove the agent from a live call
The agent leaves the live Google Meet call right now. Only works while the meeting is in progress. Only after preview_remove_agent_from_meeting and user approval.
输入参数meeting_id必填
set_telegram_voice_calls
Turn Telegram voice calls on/off
Show or hide the VOICE button of the agent's Telegram bot (voice calls in the mini app). Needs a connected bot. Free.
输入参数id必填enabled必填
set_telegram_voice_settings
Set the Telegram voice
Voice and behaviour of the Telegram bot's voice calls (separate from the website widget): the same settings as set_agent_voice plus the mini app look (visual). Only what you pass changes. Needs a connected bot. Takes up to ~1 min. Free to configure; calls are billed per minute.
输入参数id必填llmrulesspeedvisualvolumeambientemotionhandbookvoice_idlanguagesend_call_s另有 11 个
reconfigure_telegram_bot
Re-apply Telegram bot commands
Re-apply the bot's commands and menu button (for private and group chats) — use when the bot menu looks wrong. Free.
输入参数id必填
list_telegram_chats
List Telegram chats
People/groups talking to the agent's Telegram bot: name, username, type, message count, last message time. Paged. Read-only.
输入参数id必填pagelimit
get_telegram_chat
Read a Telegram chat
All messages of one Telegram chat, incl. voice-call turns with recording URL and duration. Read-only.
输入参数id必填chat_id必填
preview_send_telegram_message
Preview an operator Telegram message
Show the recipient and exact text of an operator message. Nothing is sent. ALWAYS call first and show the user the text.
输入参数id必填chat_id必填message必填
send_telegram_message
Send a Telegram message as the operator
Sends a REAL Telegram message from the bot to this person (human takeover). Only after preview_send_telegram_message and the user approved the exact text.
输入参数id必填chat_id必填message必填
get_telegram_analytics
Telegram analytics
Chats, messages, voice calls, text messages, unique users and credits (text/voice) of the agent's Telegram bot for a date range. Read-only.
输入参数id必填date_todate_from
list_phone_numbers
List my phone numbers
Phone numbers already on your account (number, country, type, monthly cost, per-minute rate). Buying numbers is done in the app. Read-only.
无需输入参数。
generate_phone_script
Draft a phone call script
Draft a call script and greeting from the agent's sales script for a call objective, in the agent's language. Free. Not saved — pass it to setup_phone_agent (or let setup_phone_agent generate it).
输入参数id必填voice_gendercall_objective
setup_phone_agent
Set up the Voice Call channel
Create/update the agent's Voice Call channel like the app: attach one of YOUR numbers (list_phone_numbers), objective, script (generated if omitted), greeting, voice, pace, emotion, language, rules, inbound calls on/off, background sound, silence/reminder timings. Creates the phone voice agent at the provider and links the number. Takes up to ~1 min. Free to set up; calls cost 25 credits/min.
输入参数id必填speedemotionlanguagevoice_idcall_scriptvoice_genderambient_soundconnection_idcall_objectiveaccept_incomingphone_number_id另有 6 个
preview_phone_test_call
Preview a test call
Show which number would be called from which, and the cost (25 credits/min, max 2 min). Nothing is dialled. ALWAYS call first.
输入参数id必填to_number必填connection_id
phone_test_call
Make a test call (real phone)
DIALS A REAL PHONE: the agent calls to_number from the channel's number (max 2 min, 25 credits/min). Only call the user's own number, only after preview_phone_test_call and explicit approval.
输入参数id必填to_number必填connection_id
list_phone_calls
List the agent's phone calls
Phone calls of this agent (incl. test and inbound) with transcript, recording URL, summary, outcome, sentiment, duration and credits, plus totals by outcome/sentiment. Read-only.
输入参数id必填limit
get_phone_channel_stats
Voice Call channel counters
Calls attempted/completed/successful, minutes and credits of one Voice Call channel. Read-only.
输入参数id必填connection_id必填
list_whatsapp_accounts
List WhatsApp accounts
WhatsApp accounts connected to your user (phone, name, status: connecting / ok / error / credentials / stopped). Account-level: auto-replies use your latest campaign's agent. Read-only.
无需输入参数。
connect_whatsapp_account
Get a WhatsApp connect link
Returns a hosted link; the user opens it and scans the QR code with WhatsApp (Linked devices). Poll list_whatsapp_accounts until status is "ok". Free.
无需输入参数。
preview_disconnect_whatsapp_account
Preview disconnecting WhatsApp
Show the WhatsApp account that would be disconnected. Nothing changes. Call first.
输入参数account_id必填
disconnect_whatsapp_account
Disconnect WhatsApp (irreversible)
Disconnect and delete the WhatsApp account; auto-replies stop and reconnecting needs a new QR scan. Only after preview_disconnect_whatsapp_account and user approval.
输入参数account_id必填
list_campaigns
List campaigns
List classic Sales Process campaigns with status and live stats. Archived campaigns are hidden unless include_archived=true. Read-only.
输入参数include_archived
get_campaign
Get a campaign
Full campaign: status, settings (all wizard fields), sequence, channel paused flags, channelStatuses, today's sends, stats.totalContacts. Read-only.
输入参数id必填
create_campaign
Create a campaign (DRAFT, not launched)
Create a classic campaign in DRAFT — nobody is contacted until launch_campaign. Needs an audience (audienceId from save_audience/list_audiences, OR customAudienceId of a READY uploaded/CRM list) and should get an agentId (a campaign cannot be launched without an agent: AGENT_REQUIRED). branchId = CRM branch for replies (crm_list_branches; null = General). Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. Ids are checked against the workspace. Free, no sending.
输入参数name必填agentIdbranchIdsettingsaudienceIddescriptioncustomAudienceId
update_campaign
Update campaign (wizard settings)
Change a campaign's name, description or any wizard setting (partial: send only what changes; settings are merged). agentId and branchId can be changed only while the campaign is a draft. Settings (all optional): channels, dailyLimit, dailyEmailLimit, dailyLinkedinLimit, timezone, workingHours, excludeWeekends, campaignDurationDays, customInstructions (Communication Rules incl. form of address), emailSignature, notifyEmails, ccEmail, autoResponseEnabled, autoResponseDelayMinutes, followUpInterval, maxFollowUps, trackOpens, emailSenderMode (managed needs a paid plan), senderEmailIds, emailContent {mode, prompt, tone, variants, htmlSteps, followUps[{delayDays, prompt|subject+body}]}, linkedinContent {mode, invite_prompt, invite_tone, invite_exact_text, followup_delay_minutes, followup_exact_text}, selectedLinkedinAccountIds, linkedinAutoReplyDisabled. On a running campaign, changed email steps/delays are not applied once anything was sent (settings.smartleadSequencePending). No sending, no credits.
输入参数id必填nameagentIdbranchIdsettingsdescription
preview_launch_campaign
Preview launching a campaign
Readiness report for launch/resume — NOTHING IS SENT: ready flag, blockers (AGENT_REQUIRED, AUDIENCE_REQUIRED, CLIENT_MAILBOX_NOT_CONNECTED, PAID_PLAN_REQUIRED for Vendo managed senders, INVALID_STATUS), warnings, real recipient count, channels, daily email/LinkedIn limits, sender mode, email steps, schedule and the LinkedIn accounts that will be activated. ALWAYS call this first and show the result to the user before launch_campaign.
输入参数id必填linkedin_account_ids
launch_campaign
Launch / resume a campaign (sends real outreach)
Start (or resume a paused) campaign exactly like the app: starts email sending and queues LinkedIn on the selected (or all connected) accounts. Contacts receive REAL outreach in the working hours; credits are spent as messages go out. Only call AFTER the user reviewed preview_launch_campaign and approved it. Returns the campaign plus linkedin_activation.
输入参数id必填linkedin_account_ids
duplicate_campaign
Duplicate a campaign
Copy a campaign (settings + audience) into a new DRAFT named '<name> (Copy)'. Nothing is sent. Note: the copy re-uses company-based audiences only and has no CRM branch; check get_campaign of the copy before launching.
输入参数id必填
sync_campaign_stats
Refresh campaign email counters
Pull the latest sent/opened/clicked/replied/bounced counters from the sending provider and store them. Max once per minute per campaign. No credits.
输入参数id必填
get_campaign_pulse
Campaign pulse (live status)
What the campaign is doing now (sending / idle / outside_hours / paused / queue_empty / done), today vs daily limits, 7–28-day email + LinkedIn series and the latest events. Read-only.
输入参数id必填dayslimit
get_campaign_live_status
Campaign email progress
Email channel progress: audience size, processed, % complete, event counts, queue depth and provider status / sent today. Read-only.
输入参数id必填
get_campaign_analytics
Campaign analytics (all campaigns)
Sales Process KPIs for the workspace: totals (campaigns, emails sent, opens, clicks, replies, contacts, rates) and per-campaign performance, optionally for a date range. Read-only. For SDR + campaigns combined use the SDR analytics tool.
输入参数tofrom
preview_campaign_email
Preview a campaign email (first or follow-up #k)
Render the exact email a campaign would send — first email or follow-up #k — with the writing rules, tone, Communication Rules or fixed text. Pass campaign_id to use its saved settings (any field you pass overrides them), or agent_id + rules for an unsaved draft. No sending, no credits.
输入参数modetonepromptsamplevariantagent_idfollow_upcampaign_idcustom_instructions
preview_campaign_linkedin_invite
Preview a campaign LinkedIn invite
Render the LinkedIn connection note a campaign would send (AI from rules/tone, or fixed text with placeholders), with its length vs the 200-char limit. Pass campaign_id to use saved settings. No sending, no credits.
输入参数modetonepromptsampleagent_idexact_textcampaign_id
preview_campaign_linkedin_followup
Preview the LinkedIn message after connect
Render the first LinkedIn message sent after an invite is accepted (AI from the agent, or the fixed text with placeholders filled). Pass campaign_id to use saved settings. No sending, no credits.
输入参数modesampleagent_idexact_textcampaign_id
preview_agent_email
Preview an email the agent would write
Render a sample outreach email from an agent — no sending, no credits. Optional mode/prompt/tone/customInstructions/variant/followUp{index,delayDays,previous}/sample make it render exactly like a campaign would (same as preview_campaign_email).
输入参数id必填
get_campaign_email_stats
Campaign email funnel incl. delivery
Email funnel: sent, delivered, opened, clicked, replied (real / auto-reply / bounce), bounced; delivery block (delivered vs not delivered: bounced, rejected as spam, unsubscribed; sender inbox-placement test — real inbox vs spam folder is not reported by providers) and unique opened/clicked/replied. Read-only.
输入参数id必填
list_campaign_emails
List sent / queued / prepared emails
state=sent: emails already sent (filter by status, search by address); state=queued: scheduled/queued emails waiting to go out; state=prepared: pre-generated emails pipeline with status counts and preparation progress. Read-only.
输入参数id必填limitstate必填offsetsearchstatus
prepare_campaign_emails
Pre-generate campaign emails (legacy)
Generate emails for every contact ahead of sending (legacy company-based audiences only; people/custom-audience campaigns prepare automatically after launch). Can take minutes. Nothing is sent. No credits.
输入参数id必填
retry_campaign_email_preparation
Retry failed email preparation
Put prepared emails that failed validation/generation back in the queue (max 3 attempts each). Nothing is sent.
输入参数id必填
preview_schedule_campaign_delivery
Preview scheduling prepared emails
Dry-run: how many ready prepared emails would be scheduled into the campaign working hours. Nothing changes. Call before schedule_campaign_delivery.
输入参数id必填
schedule_campaign_delivery
Schedule prepared emails for delivery
Spread all ready prepared emails over the campaign's working-hour slots; they are then SENT for real automatically. Only after the user approved preview_schedule_campaign_delivery.
输入参数id必填
preview_send_campaign_emails_now
Preview sending prepared emails now
Dry-run: how many prepared emails would be sent immediately (outside the schedule). Nothing is sent.
输入参数id必填limit
send_campaign_emails_now
Send prepared emails now (REAL emails)
Send up to `limit` prepared emails immediately, ignoring the schedule. REAL emails to real people. Only after the user approved preview_send_campaign_emails_now.
输入参数id必填limit
list_campaign_replies
Campaign replies inbox
Email replies received by a campaign with body and classification: real (a person answered), auto_reply (out of office), bounce. Read-only.
输入参数id必填type
list_campaign_email_leads
Engaged email leads
Recipients with their open/click/reply counts, read live from the sending provider (throttled: once per 15 s per campaign). Read-only.
输入参数id必填filter
get_campaign_email
Open one campaign email
One sent email by email id (from list_campaign_emails / list_campaign_replies): content, recipient, related open/click/reply events, the reply and the conversation. Read-only.
输入参数email_id必填
refresh_campaign_email_reply
Reload a reply from the provider
Fetch the latest reply text for an email from the sending provider (when a reply shows as empty). No credits, nothing sent.
输入参数email_id必填
preview_reply_to_campaign_email
Preview a manual reply to a lead
Dry-run of replying to a lead's email reply: shows recipient, subject and the exact text. Nothing is sent. Call before reply_to_campaign_email and show the text to the user.
输入参数body必填email_id必填
reply_to_campaign_email
Send a manual reply to a lead (REAL email)
Send the reply immediately in the lead's thread (bypasses daily limits). REAL email. Only after the user approved the exact text from preview_reply_to_campaign_email.
输入参数body必填email_id必填
list_campaign_threads
AI email conversations of a campaign
Conversations the AI is handling for a campaign (filter by status ai_handling|human_takeover|closed and sentiment positive|objection|referral|unsubscribe|neutral), plus counters by status and sentiment. Only threads of the API key's user. Read-only.
输入参数id必填limitoffsetstatussentiment
get_campaign_thread
Open an AI email conversation
One conversation with all messages (AI, human and contact). Read-only.
输入参数thread_id必填
takeover_campaign_thread
Take over an AI email conversation
Stop the AI from replying in this conversation; a human continues (reply_in_campaign_thread). Nothing is sent.
输入参数thread_id必填
close_campaign_thread
Close an AI email conversation
Mark the conversation closed (no more AI replies). Nothing is sent.
输入参数thread_id必填
preview_reply_in_campaign_thread
Preview a human reply in a conversation
Dry-run: recipient, subject (defaults to Re: last subject) and the exact text. Nothing is sent. Call before reply_in_campaign_thread and show the text to the user.
输入参数body必填subjectbody_htmlthread_id必填
reply_in_campaign_thread
Send a human reply in a conversation (REAL email)
Send the email to the contact now. REAL email. Only after the user approved preview_reply_in_campaign_thread. Consider takeover_campaign_thread first so the AI stops answering.
输入参数body必填subjectbody_htmlthread_id必填
get_campaign_monitor
Campaign monitor
Monitor page data: AI lead discovery config + stats, audience growth by day, the last 100 activity events, event counts and credits (balance, spent today/total, daily budget). Read-only.
输入参数id必填
get_campaign_discovery
Get AI lead discovery config
AI lead discovery settings of a campaign (null when never configured). Read-only.
输入参数id必填
preview_update_campaign_discovery
Preview AI lead discovery settings
Dry-run of enabling/changing automatic lead discovery: source, daily credit budget, leads/day. Nothing changes. Call before update_campaign_discovery whenever discovery is (or stays) enabled.
输入参数id必填enabledrequire_emailsearch_sourcemax_leads_per_dayapollo_search_configmax_total_discoveredsignal_search_configsearch_interval_minutesdaily_discovery_budget_credits
update_campaign_discovery
Enable / change AI lead discovery (SPENDS CREDITS)
Turn on or adjust automatic lead discovery: it runs daily, SPENDS CREDITS up to daily_discovery_budget_credits and adds new leads to the campaign audience. Same args as preview_update_campaign_discovery; only after the user approved that preview. Disabling (enabled=false) needs no preview.
输入参数id必填enabledrequire_emailsearch_sourcemax_leads_per_dayapollo_search_configmax_total_discoveredsignal_search_configsearch_interval_minutesdaily_discovery_budget_credits
list_campaign_discovered_leads
Leads found by AI discovery
Leads found by AI lead discovery for a campaign, filterable by status (discovered, enriching, enriched, added_to_audience, rejected, duplicate, enrichment_failed). Read-only.
输入参数id必填limitoffsetstatus
get_campaign_activity
Campaign activity feed
Paged activity events of a campaign (discovery, outreach, engagement, system, billing). Poll it instead of a live stream. Read-only.
输入参数id必填limitoffsetcategory
list_sender_emails
Email senders + capacity
Sending addresses available to this workspace (Vendo managed pool + own mailboxes) with warm-up level, daily limit and status; summary.emails_per_day_ready = capacity in managed mode. Managed senders require a paid plan to launch (summary.paid_plan). Use ids in settings.senderEmailIds. Read-only.
无需输入参数。
list_client_mailboxes
Own sending mailboxes
The workspace's own connected mailboxes (status connecting|warming|ready|error|disconnected, warm-up reputation, last error). Capacity ≈ 50 emails/day per READY box. Used when settings.emailSenderMode=client_owned (classic campaigns and SDR). Read-only.
无需输入参数。
connect_client_mailbox
Connect an own mailbox (SMTP/IMAP app password)
Connect the user's OWN mailbox for sending. Requires SMTP/IMAP hosts+ports and an APP PASSWORD, which passes through this conversation: prefer asking the user to connect it in the app (Settings → Email Sending) unless they explicitly give you the password. WARM-UP STARTS IMMEDIATELY: the real mailbox sends and receives warm-up mail. The password is never returned. Gmail: smtp.gmail.com:465 / imap.gmail.com:993; Outlook: smtp.office365.com:587 / outlook.office365.com:993.
输入参数email必填password必填providerfrom_nameimap_host必填imap_port必填smtp_host必填smtp_port必填
reconnect_client_mailbox
Reconnect an own mailbox
Retry the SMTP/IMAP connection of a mailbox in status error and refresh its status. No credits.
输入参数mailbox_id必填
preview_disconnect_client_mailbox
Preview disconnecting an own mailbox
Dry-run: which client_owned campaigns are affected and how many usable mailboxes remain. Nothing changes.
输入参数mailbox_id必填
disconnect_client_mailbox
Disconnect an own mailbox
Stop using the mailbox as a sender. If none remain, client_owned campaigns cannot send or launch. Only after the user approved preview_disconnect_client_mailbox.
输入参数mailbox_id必填
list_linkedin_accounts
List connected LinkedIn accounts
LinkedIn accounts of the workspace and their status (ok = can send; ~70–80 invites/day each). detailed=true adds owner/role, campaigns and SDR searches using each account, 7-day activity, prospecting caps, warm-up stage, premium tier and proxy country. Read-only.
输入参数detailed
get_linkedin_account_settings
LinkedIn account settings
Per-account LinkedIn settings shared by every campaign and SDR process using the account: AI auto-replies (on/off, tone, instructions, pitch, booking link, reply delays, daily limit, working hours, agent, contact info), invites (on/off, tone, pitch, instructions, CTA), follow-ups (on/off, pitch, instructions, CTA) and signature (text, first_message|every_message). The first read creates defaults (pre-filled from campaign_id's agent).
输入参数account_id必填campaign_id
update_linkedin_account_settings
Update LinkedIn account settings
Change AI auto-replies, invite / follow-up pitch, CTA, signature, reply delays/limits for ONE LinkedIn account (applies to all campaigns and SDR processes using it). Send only changed fields. To switch AI replies off for a single campaign use update_campaign settings.linkedinAutoReplyDisabled. No credits.
输入参数toneenabledagent_idtimezoneaccount_id必填invite_ctainvite_tonecalendly_urlcontact_infofollowup_ctainvite_pitchproduct_pitch另有 13 个
preview_linkedin_account_messages
Sample LinkedIn messages for an account
Sample invite, follow-up and auto-reply plus suggested pitch/signature for an account in a campaign (built from the campaign's agent). No sending, no credits.
输入参数account_id必填campaign_id必填
list_campaign_linkedin_accounts
LinkedIn accounts working a campaign
Accounts working this campaign with per-account counters (pending, invites sent, connected, messaged, replied). Read-only.
输入参数id必填
add_campaign_linkedin_account
Add a LinkedIn account to a campaign
Add a connected account to a running campaign; pending contacts are rebalanced across accounts and backfilled. It starts sending invites in the next cycles. No credits.
输入参数id必填account_id必填
remove_campaign_linkedin_account
Remove a LinkedIn account from a campaign
Stop using an account for this campaign; its pending contacts move to the remaining accounts. Already-sent invites stay.
输入参数id必填account_id必填
preview_activate_campaign_linkedin
Preview activating LinkedIn on a campaign
Dry-run: which accounts would get the campaign audience queued, how many contacts and what is already queued. Nothing changes. Call before activate_campaign_linkedin.
输入参数id必填account_ids
activate_campaign_linkedin
Activate LinkedIn on a campaign
Queue the campaign audience for LinkedIn on the given (or selected/all connected) accounts and add linkedin to the channels. On an active campaign REAL connection invites start within the next cycles. Only after the user approved preview_activate_campaign_linkedin.
输入参数id必填account_ids
list_campaign_linkedin_outreach
LinkedIn outreach of a campaign
Contacts in the campaign's LinkedIn queue with their status (pending, invite_sent, connected, message_sent, replied, failed, skipped), optionally for one account. Read-only.
输入参数id必填limitoffsetstatusaccount_id
get_campaign_linkedin_stats
LinkedIn stats of a campaign
LinkedIn counters (total, pending, invites sent, connected, messaged, replied, failed), invites sent today, effective daily limit and active accounts; optionally for one account. Read-only.
输入参数id必填account_id
takeover_linkedin_contact
Take over a LinkedIn contact
Stop the AI from messaging this LinkedIn contact (outreach id from list_campaign_linkedin_outreach or list_linkedin_conversations); pending auto-replies are cancelled. Nothing is sent.
输入参数outreach_id必填
list_linkedin_conversations
LinkedIn conversations
LinkedIn chats of the workspace (optionally of one campaign and/or account): contact, last message, pending AI reply, human takeover flag, outreach status. Read-only.
输入参数limitoffsetaccount_idcampaign_id
get_linkedin_conversation
Open a LinkedIn conversation
All messages of one LinkedIn chat (chat_id from list_linkedin_conversations). Read-only.
输入参数chat_id必填
preview_send_linkedin_message
Preview a manual LinkedIn message
Dry-run: recipient, exact text, cost (5 credits) and whether the balance suffices. Nothing is sent. Call before send_linkedin_message and show the text to the user.
输入参数text必填chat_id必填
send_linkedin_message
Send a LinkedIn message (REAL, 5 credits)
Send a REAL LinkedIn message in the chat; costs 5 credits, the AI stops messaging this contact (human takeover) and the CRM lead moves to Manager Dialog. Only after the user approved preview_send_linkedin_message.
输入参数text必填chat_id必填
preview_activate_campaign_phone
Preview AI phone calls for a campaign
Dry-run of activating the phone channel with numbers the account already owns: numbers, objective, calls/day, window and estimated credits per call/day. Nothing is scheduled. Numbers cannot be bought through the API.
输入参数id必填timezonecall_objectivetalking_pointsexclude_weekendsphone_number_ids必填max_calls_per_dayworking_hours_endworking_hours_startmax_call_duration_seconds
activate_campaign_phone
Activate AI phone calls (REAL calls, credits per minute)
Schedule REAL outbound AI calls to every audience contact with a phone number; credits are charged per call minute. Same args as preview_activate_campaign_phone; only after the user approved that preview. Pause with pause_channel channel=phone_call.
输入参数id必填timezonecall_objectivetalking_pointsexclude_weekendsphone_number_ids必填max_calls_per_dayworking_hours_endworking_hours_startmax_call_duration_seconds
get_campaign_phone_stats
Phone stats of a campaign
Call counters: total, completed, active, pending, no answer, voicemail, failed, interested, meetings booked, not interested, average/total duration. Read-only.
输入参数id必填
list_campaign_phone_calls
Calls of a campaign
Calls with contact, status, outcome, duration, sentiment, summary and recording URL. Read-only.
输入参数id必填limitoffsetstatus
list_content_accounts
Social publishing accounts
LinkedIn / Instagram accounts connected for publishing posts (Settings → Social), with status. Read-only.
无需输入参数。
connect_content_account
Get a link to connect a social publishing account
Returns a hosted URL a HUMAN must open in a browser to authorise a LinkedIn or Instagram publishing account. Give the link to the user; nothing is connected until they finish.
输入参数provider必填redirect_path
preview_disconnect_content_account
Preview disconnecting a social publishing account
Dry-run of removing a publishing account. Nothing changes.
输入参数account_id必填
disconnect_content_account
Disconnect a social publishing account
Remove the publishing account; it can no longer publish posts. Only after the user approved preview_disconnect_content_account.
输入参数account_id必填
list_custom_audiences
List My Audiences (custom lists)
List the workspace's custom audiences — uploaded CSV/XLSX lists, purchased audience sets, CRM selections — with status (processing|ready|enriching|error), contact counts and enrichment progress. These are different from campaign audiences (`list_audiences`). Read-only, free.
输入参数pagelimit
get_custom_audience
Get one custom audience
One custom audience: status, counts (with email/phone/LinkedIn), enrichment progress, column mapping and the first 20 contacts. Page through all contacts with `get_custom_audience_contacts`. Read-only, free.
输入参数id必填
get_custom_audience_contacts
Page through custom audience contacts
Paged contacts of a custom audience (max 100 per page). Contacts added by Vendo SDR carry signal_context (why they were picked: reasoning, relevance score, ICP group). Read-only, free.
输入参数id必填pagelimit
create_custom_audience
Create an empty custom audience
Create an empty, named custom audience (status ready) — then fill it with `add_custom_audience_contacts`. To create one from a file use `upload_custom_audience`. No credits.
输入参数name必填
rename_custom_audience
Rename a custom audience
Rename a custom audience. Reversible, no credits.
输入参数id必填name必填
add_custom_audience_contacts
Add contacts to a custom audience
Append up to 5000 contacts to a custom audience. Deduplicated inside the audience by email, LinkedIn URL or phone (duplicates and contacts with no email/LinkedIn/phone are skipped). Returns added / skipped / total_contacts. No credits.
输入参数id必填contacts必填
update_custom_audience_contact
Edit a contact in a custom audience
Edit one contact of a custom audience (only the fields you pass change). No credits.
输入参数id必填cityemailphonecountrywebsitepositiontelegramwhatsappfull_namelast_namecontact_id必填另有 5 个
preview_delete_custom_audience_contact
Preview removing a contact (dry-run)
Dry-run of removing one contact from a custom audience. Changes nothing. Show the result to the human before `delete_custom_audience_contact`.
输入参数id必填reasoncontact_id必填
delete_custom_audience_contact
Remove a contact from a custom audience
Permanently remove one contact from a custom audience (not reversible). Optional reason (UI choices: Not relevant, Wrong contact, Already a customer, Bad data, Other) is logged to improve automatic selection. Only call after the user approved `preview_delete_custom_audience_contact`.
输入参数id必填reasoncontact_id必填
preview_delete_custom_audience
Preview deleting a custom audience (dry-run)
Dry-run: shows the audience name and how many contacts would be deleted. Changes nothing. ALWAYS call before `delete_custom_audience` and show the result.
输入参数id必填
delete_custom_audience
Delete a custom audience
Permanently delete a custom audience with all its contacts and source file. NOT reversible. Only call after the user approved `preview_delete_custom_audience`.
输入参数id必填
preview_custom_audience_file
Detect columns of a contacts file
Step 1 of an upload: send a CSV/XLSX/XLS/TSV/TXT file (base64 or https URL) and get the detected headers, a suggested column mapping, sample rows, total rows and the list of target fields. Creates nothing, no credits. Then call `upload_custom_audience` (optionally with a corrected column_mapping).
输入参数file_urlfilenamecontent_base64
upload_custom_audience
Create a custom audience from a file
Create a custom audience from a CSV/XLSX/XLS/TSV/TXT file given as base64 or an https URL. Parsing runs in the background: poll `get_custom_audience` until status is "ready". No credits (enrichment is a separate, paid step).
输入参数namefile_urlfilenamecolumn_mappingcontent_base64
export_custom_audience_csv
Export a custom audience as CSV
Download every contact of a custom audience as CSV text (filename, total_rows, csv). Can be large. Read-only, free.
输入参数id必填
preview_enrich_custom_audience
Preview enriching a custom audience (cost)
Dry-run of enrichment: how many contacts still need enrichment, the maximum credits (1 per contact), estimated minutes, the current balance and whether it can start. Spends nothing. ALWAYS call first and show the cost to the human.
输入参数id必填
enrich_custom_audience
Enrich a custom audience (SPENDS CREDITS)
SPENDS CREDITS: starts background enrichment (email, phone, LinkedIn, WhatsApp lookups) of the not-yet-enriched contacts — 1 credit per contact actually enriched, charged as it runs. Only call after the user approved `preview_enrich_custom_audience`. Then poll `get_custom_audience_enrichment`; stop with `stop_custom_audience_enrichment`.
输入参数id必填
get_custom_audience_enrichment
Enrichment progress of a custom audience
Status and progress of a running (or finished) enrichment: status, enrichment_total, enrichment_done, enrichment_progress (%), done flag. Poll every 10–30 s. Read-only.
输入参数id必填
stop_custom_audience_enrichment
Stop a running enrichment
Stop an in-progress enrichment after the current contact (stops further spending). Already-enriched contacts stay enriched and charged.
输入参数id必填
prepare_campaign_audience_from_custom
Use a custom audience in a campaign
Turn a READY custom audience into a campaign audience and return its id ({ id, name, stats }) — pass it as audienceId to `create_campaign`. Sends nothing, no credits. The "Launch campaign" button of My Audiences.
输入参数id必填name
get_audience_set_contact
One contact card of an audience set
Full card of one contact in a marketplace set: person, company, buying signal, channels. Contact details stay masked until the set is bought. Contact ids come from `get_audience_set_contacts`. Read-only, free.
输入参数slug必填contact_id必填
crm_reorder_stages
Reorder pipeline stages
Set the full left-to-right order of one pipeline's stages (every stage id exactly once — get them from crm_list_stages with the same branch). Applies to the whole workspace. Reversible.
输入参数branchstage_ids必填
crm_list_all_branches
List every CRM pipeline (for moves)
Every pipeline of the workspace (id, name, is_default) — wider than crm_list_branches for members; use it to pick a destination for crm_add_lead_to_branch / crm_move_lead_to_branch. Read-only.
无需输入参数。
crm_get_branch
Get one CRM pipeline
One pipeline by id (id, name, is_default). Read-only.
输入参数id必填
crm_create_branch
Create a CRM pipeline (branch)
Create an isolated pipeline (team / direction / client) with its own default stages. member_user_ids = who can see it (General stays open to all). Workspace admins/owner only. No credits.
输入参数name必填member_user_ids
crm_update_branch
Rename a pipeline / change its members
Rename a pipeline and/or replace its member list. The General pipeline cannot be changed. Admins/owner only.
输入参数id必填namemember_user_ids
preview_delete_crm_branch
Preview deleting a pipeline (dry-run)
Dry-run: shows the pipeline and how many leads would fall back to General. Changes nothing. ALWAYS call before delete_crm_branch.
输入参数id必填
delete_crm_branch
Delete a pipeline
Delete a non-default pipeline; its leads are not deleted but return to General. NOT reversible. Admins/owner only. Only call after the user approved preview_delete_crm_branch.
输入参数id必填
crm_get_lead_branches
Pipelines a lead is in
Every pipeline a lead currently sits in, with its stage and owner per pipeline. Read-only.
输入参数id必填
crm_add_lead_to_branch
Add a lead to another pipeline
Place the lead in another pipeline too (entry stage); it stays in its current ones. Reversible via crm_move_lead_to_branch.
输入参数id必填branch_id必填assignee_user_id
crm_move_lead_to_branch
Move a lead between pipelines
Move the lead out of one pipeline into another (entry stage, or to_stage_id of the destination). Reversible.
输入参数id必填to_stage_idto_branch_id必填from_branch_id必填assignee_user_id
crm_preview_email_to_lead
Preview an email to a lead (dry-run)
Dry-run of crm_send_email_to_lead: shows recipient, subject and body exactly as they would be sent. Sends nothing. ALWAYS call first and show the draft to the human.
输入参数id必填tobody必填subject必填
crm_send_email_to_lead
Send a REAL email to a lead
Sends a REAL email from the CRM card ("<your name> via Vendo AI", replies go to your own address) and logs it on the card. Members need the crm-contact-details permission. Only call after the user approved the exact draft from crm_preview_email_to_lead.
输入参数id必填tobody必填subject必填
crm_import_leads
Import leads into the CRM
Import up to 1000 parsed rows as leads into the chosen pipelines (entry stage). Dedup by email/phone: an existing lead only gets its blank fields filled (never overwritten) and is added to the pipelines. Returns created / updated / skipped (+ reasons). No credits.
输入参数rows必填branch_ids
crm_promote_contact_to_lead
Promote a contacted person to a CRM lead
Turn a person from the Communications stream (crm_communication_history row) into a CRM lead in the New stage. Deduplicated: returns { lead_id, already_existed }. Needs at least one of email / linkedin_url / phone. No credits.
输入参数emailphonetitleavatar_urlcompany_namecontact_namelinkedin_urlassigned_user_id
crm_list_lead_documents
List documents on a lead
Files attached to a lead card (id, name, type, size, uploader, date). Read-only.
输入参数id必填
crm_upload_lead_document
Attach a document to a lead
Attach one file to a lead card (base64 or https URL). Allowed: pdf, doc(x), xls(x), csv, txt, rtf, odt, ods, ppt(x), png, jpg, gif, webp, heic, zip. Stored privately; adds an activity entry. No credits.
输入参数id必填file_urlfilenamecontent_base64
crm_get_lead_document
Download a lead document
Returns the file as base64 with its name and mime type (files up to 5 MB; larger ones only via REST). Read-only.
输入参数id必填document_id必填
preview_delete_crm_lead_document
Preview deleting a lead document (dry-run)
Dry-run: shows which file would be deleted. Changes nothing.
输入参数id必填document_id必填
delete_crm_lead_document
Delete a lead document
Permanently delete a file from a lead card. NOT reversible. Only call after the user approved preview_delete_crm_lead_document.
输入参数id必填document_id必填
list_app_notifications
List app notifications (bell)
The caller's in-app notifications, newest first (type, subject, preview, isRead, createdAt), with unreadCount and paging. Types include MEETING_TRANSCRIPT, MEETING_NOTIFICATION, SUBSCRIPTION_*, PAYMENT_RECEIPT, LOW_CREDITS, CREDITS_ADDED, INVITATION, CUSTOM. CRM lead notifications are separate (crm_list_notifications). Read-only.
输入参数pagelimit
get_app_notifications_unread_count
Unread app notifications count
Number of unread in-app notifications (the bell badge). Read-only.
无需输入参数。
mark_app_notification_read
Mark an app notification read
Mark one in-app notification as read.
输入参数id必填
mark_all_app_notifications_read
Mark all app notifications read
Mark every in-app notification of the caller as read (clears the badge).
无需输入参数。
delete_app_notification
Delete an app notification
Remove one in-app notification from the caller's list.
输入参数id必填
list_crm_integrations
List CRM integrations
External CRM connections of the workspace (Kommo, HubSpot): status, account, sync settings and counters. Tokens are never returned. Read-only.
无需输入参数。
get_crm_integration
Get one CRM integration
Status and settings of the Kommo or HubSpot connection ({connected:false} if none). Use it to poll after connect_crm_integration. Read-only.
输入参数provider必填
get_crm_integration_logs
CRM integration sync log
Recent sync events (contact/lead created, errors) of the caller's own Kommo/HubSpot connection. Read-only.
输入参数limitprovider必填