The Reply.io connector lets your AI agent act in each user's Reply.io account. Each user connects their own Reply.io access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 112 tools.
- Tools
- 112
- What they doRead · write · destructive
- 54 · 46 · 1254 read46 write12 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Reply.io connection
In AgentKit > Connections, create a Reply.io connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'reply'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Reply.io:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'reply_whoami',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "reply"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Reply.io:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="reply_whoami",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Reply.io credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolreply_filter_contact_accountsGet a narrower set of accounts than plain listing.Read-onlyFilter accounts
Get a narrower set of accounts than plain listing. Search by name or domain, scope to one list, and add up to 20 conditions. Returns a page of contact account records (items, hasMore); each has id, ownerUserId, name, description, domainName, domainSecondary. Use reply_filter_contact_accounts for filtered company queries. Use reply_get_contact_accounts to browse.
Inputs
filtersarray- Advanced filter conditions. Optional.
listIdinteger- Filter by contact list ID. Optional.
searchstring- Search term to filter accounts by name. Optional.
skipinteger- Number of items to skip. Optional.
sortBystring- Field name to sort by. Optional.
sortDirectionstring- Sort direction. Optional.one of
ascdesc topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_filter_contactsUse this endpoint when you need a filtered, sorted page of contacts that a plain email or LinkedIn lookup cannot express.Read-onlyFilter contacts
Use this endpoint when you need a filtered, sorted page of contacts that a plain email or LinkedIn lookup cannot express. Combine field rules (property, condition, value) with optional scoping by list, sequence, or sequence step, a free-text search term, and a sort order. Returns a page of contact records (items, hasMore); each has id, email, domain, firstName, lastName, phone. Use reply_filter_contacts for property-based queries. Use reply_get_contacts for plain browsing or an exact email lookup.
Inputs
listIdinteger- Filter by contact list ID. Optional.
rulesarray- rules value. Optional.
searchTermstring- Free-text search term. Optional.
sequenceIdinteger- Filter by sequence ID. Optional.
sequenceStepIdinteger- Filter by sequence step ID. Optional.
skipinteger- Number of contacts to skip. Optional.
sortBystring- Field to sort by. Optional.
sortDirectionstring- Sort direction (asc or desc). Optional.
topinteger- Maximum number of contacts to return (default 25, max 1000). Optional.
reply_filter_inbox_threadsUse this endpoint when you need the inbox threads matching specific criteria — a search term, channel, owner, sequence, email or LinkedIn account, contact, category, date range, source, or only those flagged with meeting intent.Read-onlyFilter inbox threads
Use this endpoint when you need the inbox threads matching specific criteria — a search term, channel, owner, sequence, email or LinkedIn account, contact, category, date range, source, or only those flagged with meeting intent. Every filter field is optional, and an empty body matches the same set as the plain thread listing. Returns a page of inbox thread list item records (items, hasMore); each has id, channel, isRead, subject, bodyPreview, lastActivityDate. Use reply_filter_inbox_threads for filtered inbox queries. Use reply_list_inbox_threads to browse.
Inputs
categoryIdsarray- category Ids value. Optional.
channelsarray- Restrict to threads on the given channels. unknown is rejected by validation. Optional.
contactIdsarray- contact Ids value. Optional.
emailAccountIdsarray- email Account Ids value. Optional.
fromstring- from value. Optional.
linkedInAccountIdsarray- linked In Account Ids value. Optional.
onlyWithMeetingIntentboolean- only With Meeting Intent value. Optional.
ownerUserIdinteger- Restrict to threads owned by the given user. The target must be a member of the caller's team; otherwise the request fails with 400 inboxThread.invalidInput. Optional.
searchstring- Free-text search across subject, body preview, and contact identifiers. Optional.
sequenceIdsarray- sequence Ids value. Optional.
skipinteger- skip value. Optional.
sourcestring- Predefined source bucket: - inbox — all threads with at least one inbound message. - sent — threads where the latest activity is outbound. - unread — only unread threads. - aiDraft — threads with a pending AI-drafted reply. Optional.one of
inboxsentunreadaiDraft tostring- Upper bound on lastActivityDate. Must be strictly after from when both are supplied. Optional.
topinteger- top value. Optional.
reply_filter_tasksNarrow the task list by due date, type, status, or overdue.Read-onlyFilter tasks
Narrow the task list by due date, type, status, or overdue. Every field is optional, so an empty object returns them all. Returns a page of tasklistitemresponse records (items, hasMore); each has id, taskType, status, linkedInTaskType, assignedUserId, contact. Use reply_filter_tasks for filtered task queries. Use reply_get_tasks to browse.
Inputs
assignedUserIdinteger- Filter tasks assigned to a specific user. Only returns results if the caller has permission to view that user's tasks. Optional.
contactIdinteger- Filter tasks for a specific contact. Optional.
fromstring- Filter tasks with StartAt >= this value. Defaults to 2000-01-01 if omitted. Optional.
overdueboolean- Filter by overdue status. true = overdue only, false = not overdue only, null = all. Optional.
sequenceIdsarray- Filter tasks belonging to these sequences. Optional.
sequenceStepIdsarray- Filter tasks belonging to these sequence steps. Optional.
skipinteger- Number of items to skip. Optional.
statusstring- Filter by task status. Must be a valid enum value. Possible values: new, finished, cancelled, archived, sequenceDetached. Optional.one of
newfinishedcancelledarchivedsequenceDetached taskTypestring- Filter by task type. Must be a valid enum value. Possible values: toDo, call, meeting, linkedIn, manualEmail, sms, whatsApp. Optional.one of
toDocallmeetinglinkedInmanualEmailsmswhatsApp timeZoneIdsarray- Filter by prospect timezone (e.g. "America/New_York"). Optional.
tostring- Filter tasks with StartAt <= this value. Must be after from when both are provided. Defaults to now + 1 year if omitted. Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_background_job_by_idCheck how far a background job has got.Read-onlyGet a background job
Check how far a background job has got. Poll until status settles on Done, Failed, Cancelled, or Expired, and read progress. Returns background job with jobId, status, category, startedAt, finishedAt, progress, jsonData, jsonDataResult.
Inputs
jobIdstringrequired- Background job identifier (must be a non-empty GUID) (UUID).
reply_get_background_jobsSee the asynchronous work you've started and where each job stands, running and finished alike.Read-onlyList background jobs
See the asynchronous work you've started and where each job stands, running and finished alike. Paged with top and skip. Returns a page of background job list item records (items, hasMore); each has jobId, status, category, startedAt, finishedAt, progress.
Inputs
categorystring- Category suffix to filter by — prefix-matched against r2/bg-jobs/{suffix}. For example, pass email-validation to list only email-validation jobs. Omit to list all of the user's background jobs. Optional.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 100, max 200). Optional.
reply_get_billing_detailsSee the plan you are on and how many active contacts the current billing month has consumed, day by day.Read-onlyGet billing details
See the plan you are on and how many active contacts the current billing month has consumed, day by day. A contact counts once per pool per month, on the day it is first touched. Returns billing details with generatedAt, timeZone, billingScope, subscription, activeContacts.
Inputs
This tool takes no inputs.
reply_get_channel_efficiency_overviewCompare channels for a period: contacts touched, touches across email, SMS, calls, tasks, and LinkedIn, replies, and meetings.Read-onlyGet channel efficiency overview
Compare channels for a period: contacts touched, touches across email, SMS, calls, tasks, and LinkedIn, replies, and meetings. Returns channel efficiency overview response with totalPeopleContacted, totalTouches, replies, repliesPercentage, meetingsBooked, meetingsBookedPercentage.
Inputs
filtersobjectrequired- Base filters shared across all reporting endpoints.
reply_get_contact_account_by_idGet one account by id: company details, owner, stage, linked contact count, and the mail provider behind its domain.Read-onlyGet an account
Get one account by id: company details, owner, stage, linked contact count, and the mail provider behind its domain. Returns contact account details with id, ownerUserId, name, description, domainName, domainSecondary, industry, companySize.
Inputs
idintegerrequired- Account ID.
reply_get_contact_account_contactsGet the contacts currently linked to an account, paged with top and skip.Read-onlyList contacts for an account
Get the contacts currently linked to an account, paged with top and skip. Each entry carries the email, name, and job title. Returns a page of contact account contact records (items, hasMore); each has id, email, firstName, lastName, title, company.
Inputs
idintegerrequired- Account ID.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_contact_account_listsBrowse your team's account lists, yours first.Read-onlyList account lists
Browse your team's account lists, yours first. Lists are shared team-wide. Returns a page of contact account list records (items, hasMore); each has id, name.
Inputs
searchstring- Filter account lists by name (case-insensitive substring match). Optional.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 100, max 1000). Optional.
reply_get_contact_accountsBrowse the accounts you can see — the companies your contacts belong to.Read-onlyList accounts
Browse the accounts you can see — the companies your contacts belong to. Paged with top and skip, with an optional search. Returns a page of contact account records (items, hasMore); each has id, ownerUserId, name, description, domainName, domainSecondary. Use reply_get_contact_accounts to browse company accounts. Use reply_filter_contact_accounts for filtered queries.
Inputs
searchstring- Filter accounts by name. Optional.
skipinteger- Number of items to skip. Optional.
sort_bystring- Field name to sort by. Optional.
sort_directionstring- Sort direction (asc or desc). Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_contact_activitiesGet a contact's activity history — emails, calls, status changes, and other tracked events.Read-onlyGet activities for a contact
Get a contact's activity history — emails, calls, status changes, and other tracked events. Paged with top and skip. Returns a page of item records (items, hasMore); each has id, date, activityType, sourceType, userName, userId.
Inputs
idintegerrequired- Contact ID.
skipinteger- Number of activities to skip. Optional.
topinteger- Maximum number of activities to return. Optional.
reply_get_contact_by_idGet the full record for one contact by id: profile fields, owner, opt-out, call and meeting status, and custom fields.Read-onlyGet a contact
Get the full record for one contact by id: profile fields, owner, opt-out, call and meeting status, and custom fields. Returns contact with id, email, domain, firstName, lastName, phone, title, company. Use reply_get_contact_by_id when the contact id is known.
Inputs
idintegerrequired- Contact ID.
reply_get_contact_inbox_threadsGet the email conversation threads exchanged with a contact, grouped as they appear in your inbox.Read-onlyGet inbox threads for a contact
Get the email conversation threads exchanged with a contact, grouped as they appear in your inbox. Paged with top and skip. Returns a page of contact inbox thread records (items, hasMore); each has id, channel, isRead, subject, lastActivityDate, sequence.
Inputs
idintegerrequired- Contact ID.
skipinteger- Number of threads to skip. Optional.
topinteger- Maximum number of threads to return (default 25, max 1000). Optional.
reply_get_contact_list_by_idGet one contact list by id, including its name and whether it is shared with your team.Read-onlyGet a contact list
Get one contact list by id, including its name and whether it is shared with your team. Returns contact list with id, name, isShared.
Inputs
idintegerrequired- Contact list ID.
reply_get_contact_listsBrowse the contact lists you own plus any shared with your team.Read-onlyList contact lists
Browse the contact lists you own plus any shared with your team. Paged with top and skip, with an optional name search. Returns a page of contact list records (items, hasMore); each has id, name, isShared.
Inputs
searchstring- Filter contact lists by name. Optional.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_contact_lists_for_contactSee which contact lists a contact belongs to, including each list's name and whether it's shared with your team.Read-onlyGet contact's lists
See which contact lists a contact belongs to, including each list's name and whether it's shared with your team. Returns the result as JSON.
Inputs
idintegerrequired- Contact ID.
reply_get_contact_sequencesSee which sequences a contact is in, with each sequence's name, their status, the current step, and when they were added.Read-onlyGet sequences for a contact
See which sequences a contact is in, with each sequence's name, their status, the current step, and when they were added. Returns the result as JSON. Use reply_get_contact_sequences for the sequences one contact is in. Use reply_get_sequence_contacts for the contacts in one sequence.
Inputs
idintegerrequired- Contact ID.
reply_get_contactsBrowse your contacts or look one up by exact email or LinkedIn URL.Read-onlyList all contacts
Browse your contacts or look one up by exact email or LinkedIn URL. Paged with the top and skip query parameters. Returns a page of contact records (items, hasMore); each has id, email, domain, firstName, lastName, phone. Use reply_get_contacts for plain paged browsing or an exact email/LinkedIn lookup. Use reply_filter_contacts for property-based segments.
Inputs
emailstring- Filter contacts by email address. Optional.
linkedInstring- Filter contacts by LinkedIn profile URL. Optional.
skipinteger- Number of contacts to skip. Optional.
topinteger- Maximum number of contacts to return (default 25, max 1000). Optional.
reply_get_custom_fieldsGet every custom field of one entity, for your team and your organization.Read-onlyList all custom fields
Get every custom field of one entity, for your team and your organization. One flat array, no paging. Returns the result as JSON.
Inputs
entityTypestring- Which entity's fields to list. Defaults to contact. Optional.one of
contactaccount
reply_get_email_accountGet one email account in full: connection, safety, signature, opt-out and ramp-up settings, tags, and connection status.Read-onlyGet an email account
Get one email account in full: connection, safety, signature, opt-out and ramp-up settings, tags, and connection status. Returns emailaccountdetail with id, ownerUserId, emailAccountType, isDefault, isInUse, connectionStatus, sendingConnectivityError, receivingConnectivityError.
Inputs
idintegerrequired- Email Account ID.
reply_get_email_account_statsSee how much sending capacity one email account has left: sent today, the daily limit, and the all-time total.Read-onlyGet email account stats
See how much sending capacity one email account has left: sent today, the daily limit, and the all-time total. Returns the result with id, emailsSentToday, totalEmailsSent, dailySendingLimit.
Inputs
idintegerrequired- Email Account ID.
reply_get_email_templateGet one email template in full: name, subject, body, folder, attachments, and its created and updated timestamps.Read-onlyGet an email template
Get one email template in full: name, subject, body, folder, attachments, and its created and updated timestamps. Returns emailtemplate with id, name, subject, body, folderId, folderType, attachments, createdAt.
Inputs
idintegerrequired- Email template ID.
reply_get_emails_listUse this endpoint when you need the individual emails behind the email report rather than its totals — one row per email sent, carrying the contact, the email account it was sent from, the sequence and step it belongs to, the A/B variant it was sent from (variantId), its delivery date, and whether it was delivered, opened, clicked, replied to, marked interested, bounced or opted out.Read-onlyList email activity
Use this endpoint when you need the individual emails behind the email report rather than its totals — one row per email sent, carrying the contact, the email account it was sent from, the sequence and step it belongs to, the A/B variant it was sent from (variantId), its delivery date, and whether it was delivered, opened, clicked, replied to, marked interested, bounced or opted out. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page. Returns a page of email list item records (items, hasMore); each has contactId, firstName, lastName, email, company, emailAccountId.
Inputs
filtersstringrequired- filters value.
skipinteger- Number of records to skip. Optional.
topinteger- Number of records to return (page size). Optional.
reply_get_emails_overviewUse this endpoint when you need the headline email numbers for a period as one team-wide total with no per-member or per-sequence split — how many contacts were reached, and how many of them were delivered to, opened, replied, showed interest, bounced, auto-replied, were out of office, opted out or booked a meeting, each counted in distinct contacts and paired with its rate.Read-onlyGet email reporting overview
Use this endpoint when you need the headline email numbers for a period as one team-wide total with no per-member or per-sequence split — how many contacts were reached, and how many of them were delivered to, opened, replied, showed interest, bounced, auto-replied, were out of office, opted out or booked a meeting, each counted in distinct contacts and paired with its rate. Use the emails endpoint instead when you need the individual sent emails behind these totals. Returns emails overview response with contacted, delivered, opened, replied, interested, notReached, optedOut, outOfOffice.
Inputs
filtersstringrequired- filters value.
compareToobject- Optional comparison period to calculate trends against. Optional.
reply_get_folder_sequencesSee which sequences are filed in a folder.Read-onlyList sequences in a folder
See which sequences are filed in a folder. Paged with top and skip, sortable by title, created, or people. Returns a page of item records (items, hasMore); each has id, ownerUserId, name, created, status, isArchived.
Inputs
idstringrequired- Sequence folder Id (UUID).
skipinteger- Number of items to skip. Optional.
sort_bystring- Field to sort by. Optional.
sort_directionstring- Sort direction (asc or desc). Optional.one of
ascdesc topinteger- Maximum number of items to return. Optional.
reply_get_inbox_threadGet one conversation in full, with its message history in order.Read-onlyGet inbox thread
Get one conversation in full, with its message history in order. Use the messages endpoint to page a long exchange. Returns inbox thread with id, channel, isRead, contact, emailAccountId, linkedInAccountId, sequence, messages.
Inputs
idintegerrequired- id value.
reply_get_linkedin_overviewUse this endpoint when you need LinkedIn activity for a period as one team-wide total — connection requests sent and accepted, connection notes, regular messages and InMails with the replies each drew, and profile views, likes, follows, endorsements and comments, with acceptance and reply rates alongside the raw counts.Read-onlyGet LinkedIn reporting overview
Use this endpoint when you need LinkedIn activity for a period as one team-wide total — connection requests sent and accepted, connection notes, regular messages and InMails with the replies each drew, and profile views, likes, follows, endorsements and comments, with acceptance and reply rates alongside the raw counts. There is no per-account or per-member split here; use the linkedin endpoint instead when you need the individual actions behind these totals. Returns linkedin overview response with connectionsSent, connectionsAccepted, connectionsAcceptedPercentage, messagesSent, replied, repliedPercentage, inMailsSent, inMailsReplied.
Inputs
filtersstringrequired- filters value.
reply_get_meetings_listUse this endpoint when you need the individual meetings behind the team performance report rather than its totals — one row per meeting, oldest first, carrying the team member credited with it, the channel it was booked through, the contact and the sequence it came from, with the booking time in your account time zone.Read-onlyList meetings
Use this endpoint when you need the individual meetings behind the team performance report rather than its totals — one row per meeting, oldest first, carrying the team member credited with it, the channel it was booked through, the contact and the sequence it came from, with the booking time in your account time zone. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page. Returns a page of meeting list item records (items, hasMore); each has userId, source, contactFullName, sequenceName, bookedAt.
Inputs
filtersstringrequired- filters value.
skipinteger- Number of records to skip. Optional.
topinteger- Number of records to return (page size). Optional.
reply_get_scheduleGet one schedule in full: its time zone, main and follow-up windows, and the flags controlling how they apply.Read-onlyGet a schedule
Get one schedule in full: its time zone, main and follow-up windows, and the flags controlling how they apply. Returns schedule with id, name, timezoneId, excludeHolidays, useProspectTimezone, useFollowUpSchedule, mainTimings, followUpTimings.
Inputs
idintegerrequired- Schedule ID.
reply_get_sequence_by_idGet one sequence in full: name, status, owner, schedule, settings, connected accounts, and its complete list of steps.Read-onlyGet a sequence
Get one sequence in full: name, status, owner, schedule, settings, connected accounts, and its complete list of steps. Returns the result as JSON.
Inputs
idintegerrequired- Sequence Id.
reply_get_sequence_contact_by_idGet one contact's state inside a sequence: status, the step they're waiting on, when they were added, and opt-out.Read-onlyGet a contact in a sequence
Get one contact's state inside a sequence: status, the step they're waiting on, when they were added, and opt-out. Returns sequence contact with contactId, sequenceId, email, firstName, lastName, company, title, statusInSequence.
Inputs
contact_idintegerrequired- Contact ID.
idintegerrequired- Sequence ID.
reply_get_sequence_contactsSee who's enrolled in a sequence and where each stands: status, current step, added date, opt-out, and call status.Read-onlyList contacts in sequence
See who's enrolled in a sequence and where each stands: status, current step, added date, opt-out, and call status. Returns a page of sequence contact records (items, hasMore); each has contactId, sequenceId, email, firstName, lastName, company. Use reply_get_sequence_contacts for enrollment in one sequence. Use reply_get_contact_sequences for the sequences one contact is in.
Inputs
idintegerrequired- Sequence ID.
skipinteger- Number of items to skip. Optional.
sort_bystring- Field name to sort results by. Each value matches the corresponding response field. When omitted, results are ordered most-recently-added first. Optional.one of
addingDateemailfirstNamelastNamecompanystatusInSequence sort_directionstring- Sort direction (asc or desc). Defaults to desc when sort_by is provided. Optional.one of
ascdesc topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_sequence_email_accountsSee which email accounts a sequence sends from, each with its address, sender name, daily limit, and connection status.Read-onlyList email accounts in sequence
See which email accounts a sequence sends from, each with its address, sender name, daily limit, and connection status. Returns the result as JSON.
Inputs
idintegerrequired- Sequence ID.
reply_get_sequence_email_statsCompare A/B variants: get one sequence's email stats per step and per variant, as on its Stats → Email tab.Read-onlyGet sequence email stats
Compare A/B variants: get one sequence's email stats per step and per variant, as on its Stats → Email tab. Set the window with a preset or from and to, not both; if omitted give you the last week. Returns sequence email stats response with overview, steps. Use reply_get_sequence_email_stats for email-only stats. Use reply_get_sequence_stats for combined stats.
Inputs
idintegerrequired- Sequence ID.
filtersobject- Date range filters for sequence stats. Optional.
reply_get_sequence_foldersGet the folders you have for organizing sequences, sorted by name, in one array.Read-onlyList all sequence folders
Get the folders you have for organizing sequences, sorted by name, in one array. Folders are personal to you. Returns the result as JSON.
Inputs
This tool takes no inputs.
reply_get_sequence_statsGet engagement figures for one sequence.Read-onlyGet sequence stats
Get engagement figures for one sequence. Set the window with a date range preset or an explicit from and to, not both. Returns sequence stats response with emailOverview, linkedInOverview. Use reply_get_sequence_stats for combined stats. Use reply_get_sequence_email_stats for email-only stats.
Inputs
idintegerrequired- Sequence ID.
filtersobject- Date range filters for sequence stats. Optional.
reply_get_sequence_stepsGet every step in a sequence.Read-onlyList all sequence steps
Get every step in a sequence. Read type first to know the shape, and parentId to see how the steps chain together. Returns the result as JSON.
Inputs
idintegerrequired- Sequence Id.
reply_get_sequence_templatesSee which sequence templates you can start a new sequence from.Read-onlyList all sequence templates
See which sequence templates you can start a new sequence from. A blueprint for a whole sequence, not an email template. Returns sequence templates list with globalTemplates, organizationTemplates, teamTemplates.
Inputs
This tool takes no inputs.
reply_get_sequencesBrowse the sequences you can work with.Read-onlyList all sequences
Browse the sequences you can work with. Paged with top and skip, and filterable by status, owner, folder, and name. Returns a page of item records (items, hasMore); each has id, ownerUserId, name, created, status, isArchived. Use reply_get_sequences to browse sequences. Use reply_get_sequence_by_id for one sequence.
Inputs
createdAfterstring- Return only sequences created after this timestamp (ISO-8601). Optional.
folderIdstring- Filter sequences by folder ID (UUID). Optional.
isArchivedboolean- Filter sequences by archive status. When true, returns only archived sequences. When false, returns only non-archived sequences. When omitted, returns all sequences regardless of archive status. Optional.
namestring- Search sequences by name (case-insensitive, partial match). Optional.
ownerUserIdinteger- Filter sequences by owner user ID. Optional.
skipinteger- Number of items to skip. Optional.
sortBystring- Field to sort results by. When omitted, results are ordered by creation date. Optional.one of
creatednamestatus sortDirectionstring- Sort direction. Requires sortBy to be set; supplying sortDirection alone is rejected with 400. When omitted, created sorts descending (newest first) while name and status sort ascending. Optional.one of
ascdesc statusstring- Filter sequences by status. Optional.one of
activepausednew topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_task_by_idGet everything about one task: type, status, the contact, the sequence step it came from, its dates, and its assignee.Read-onlyGet a task
Get everything about one task: type, status, the contact, the sequence step it came from, its dates, and its assignee. Returns task with id, contactId, taskType, status, linkedInTaskType, sequenceId, sequenceStepId, sequenceStepDisplayName.
Inputs
idintegerrequired- Task ID.
includeContentboolean- When true, the response includes a content field with rendered template (handlebars variables resolved with contact data). Optional.
reply_get_tasksWork through your to-do list — your own tasks, plus teammates' when your role allows.Read-onlyList all tasks
Work through your to-do list — your own tasks, plus teammates' when your role allows. Each carries type, status, and dates. Returns a page of tasklistitemresponse records (items, hasMore); each has id, taskType, status, linkedInTaskType, assignedUserId, contact. Use reply_get_tasks to browse tasks. Use reply_filter_tasks for filtered queries.
Inputs
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_get_tasks_overviewUse this endpoint when you need task volume for a period rolled up two ways at once — a total task count with a count and share of the total for each task type (calls, emails, LinkedIn, SMS, to-dos and WhatsApp), and the same counts repeated per team member under memberStatistics, keyed by userId.Read-onlyGet tasks reporting overview
Use this endpoint when you need task volume for a period rolled up two ways at once — a total task count with a count and share of the total for each task type (calls, emails, LinkedIn, SMS, to-dos and WhatsApp), and the same counts repeated per team member under memberStatistics, keyed by userId. Use the tasks endpoint instead when you need the individual tasks behind these counts. Returns tasks overview response with totalTasks, callTasks, emailTasks, linkedInTasks, meetingsBooked, smsTasks, toDoTasks, whatsAppTasks.
Inputs
filtersstringrequired- filters value.
reply_get_team_performance_overviewUse this endpoint when you need to compare the people on your team over a period — meetings booked, contacts in sequences, meeting conversion rate, average touches per contact split into automated and manual, and average response time, returned both as a team total and per member under memberStatistics, keyed by userId.Read-onlyGet team performance overview
Use this endpoint when you need to compare the people on your team over a period — meetings booked, contacts in sequences, meeting conversion rate, average touches per contact split into automated and manual, and average response time, returned both as a team total and per member under memberStatistics, keyed by userId. Members with a recorded response time also carry a responseRate of fast, average or slow, which ranks them against the other members in the same response rather than against a fixed threshold. Returns team performance overview response with meetings, contacted, meetingConversionPercentage, touchesPerContact, autoTouchesPerContact, manualTouchesPerContact, averageResponseTimePerContact, memberStatistics.
Inputs
filtersstringrequired- filters value.
reply_list_email_accountsBrowse the email accounts you can send from.Read-onlyList email accounts
Browse the email accounts you can send from. Pass my=true to see only your own. Returns a page of emailaccountlistitem records (items, hasMore); each has id, ownerUserId, email, senderName, emailAccountType, isDefault.
Inputs
myboolean- When false (default), returns all email accounts visible to the authenticated user: - In Public or Organization mode: all team members' accounts. - In Private mode: only the team owner sees all accounts; regular members see only their own. When true, returns only the authenticated user's own email accounts regardless of team mode. Optional.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return (default 25, max 1000). Optional.
reply_list_email_templatesBrowse the email templates you can use: your own, your team's, and any shared with you.Read-onlyList email templates
Browse the email templates you can use: your own, your team's, and any shared with you. Paged with top and skip. Returns a page of emailtemplatebase records (items, hasMore); each has id, name, subject, body, folderId, folderType.
Inputs
folder_idinteger- Filter templates by folder ID. Optional.
folder_typestring- Filter templates by folder type (e.g., "personal", "shared"). Optional.
is_defaultboolean- Filter templates by default status. Optional.
namestring- Filter templates by name (partial match). Optional.
skipinteger- Number of items to skip. Optional.
topinteger- Maximum number of items to return. Optional.
reply_list_inbox_categoriesGet the categories you can file conversations under, including Reply's reserved ones, each with its unread count.Read-onlyList inbox categories
Get the categories you can file conversations under, including Reply's reserved ones, each with its unread count. Returns the result as JSON.
Inputs
ownerUserIdinteger- Restrict to categories visible to the given user. The target must be a member of the caller's team; otherwise the request fails with 400 inboxCategory.invalidInput. Optional.
reply_list_inbox_thread_messagesPage through one conversation's messages, oldest first.Read-onlyList messages in an inbox thread
Page through one conversation's messages, oldest first. Email messages carry recipient and subject; LinkedIn ones don't. Returns a page of inbox thread message records.
Inputs
idintegerrequired- id value.
skipinteger- Items to skip from the start of the result set. Optional.
topinteger- Maximum items to return. Defaults to the server-side default page size when omitted. Optional.
reply_list_inbox_threadsBrowse your inbox — email and LinkedIn conversations with contacts, most recently active first.Read-onlyList inbox threads
Browse your inbox — email and LinkedIn conversations with contacts, most recently active first. Paged with top and skip. Returns a page of inbox thread list item records (items, hasMore); each has id, channel, isRead, subject, bodyPreview, lastActivityDate. Use reply_list_inbox_threads to browse the inbox. Use reply_filter_inbox_threads for filtered queries.
Inputs
skipinteger- Items to skip from the start of the result set. Optional.
topinteger- Maximum items to return. Defaults to the server-side default page size when omitted. Optional.
reply_list_schedulesGet every schedule your team can use.Read-onlyList schedules
Get every schedule your team can use. A schedule sets the weekday windows a sequence may send in. Returns the result as JSON.
Inputs
This tool takes no inputs.
reply_render_email_templateSee how a template reads for a particular contact, with their field values filled in.Read-onlyRender an email template
See how a template reads for a particular contact, with their field values filled in. contactId is required. Returns rendertemplateresult with subject, body, isSuccess, errors.
Inputs
contactIdintegerrequired- ID of the contact whose data is used for variable substitution.
idintegerrequired- Email template ID to render.
emailAccountIdinteger- Optional email account ID for sender-specific variables. Optional.
sequenceIdinteger- Optional sequence ID for sequence-specific variables. Optional.
reply_whoamiSee which user an API key acts as — its userId, username, and teamId.Read-onlyGet current user
See which user an API key acts as — its userId, username, and teamId. The quickest way to confirm a key is valid. Returns the result with userId, username, teamId.
Inputs
This tool takes no inputs.
reply_whoami_team_usersList the users you work with, pairing each with their team.Read-onlyList team users
List the users you work with, pairing each with their team. Handy for turning a userId into a name and email address. Returns the result as JSON.
Inputs
This tool takes no inputs.
reply_add_accounts_to_contact_account_listAdd accounts to a list while keeping their other list memberships.WriteAdd accounts to an account list
Add accounts to a list while keeping their other list memberships. Up to 1000 ids per call. Returns the result as JSON.
Inputs
accountIdsarrayrequired- Account IDs to add or move (1 to 1000 items).
idintegerrequired- Account list ID.
reply_add_contact_noteRecord context, call summaries, or reminders on a contact's timeline, so your whole team works from the same history.WriteAdd a note to a contact
Record context, call summaries, or reminders on a contact's timeline, so your whole team works from the same history. Returns the result as JSON.
Inputs
idintegerrequired- Contact ID.
notesstringrequired- Note content.
reply_add_contacts_to_contact_listAdd contacts to a list while keeping their other list memberships.WriteAdd contacts to a contact list
Add contacts to a list while keeping their other list memberships. Contacts are processed one by one, so partial success sticks. Returns the result as JSON.
Inputs
contactIdsarrayrequired- Array of contact IDs to add.
idintegerrequired- Contact list ID.
reply_archive_sequencePut a sequence aside without deleting it.WriteArchive a sequence
Put a sequence aside without deleting it. Pause it first, and note that archiving removes every contact currently in it. Returns the result as JSON.
Inputs
idintegerrequired- Sequence Id.
reply_assign_email_account_to_sequenceAdd one more mailbox for a sequence to send from.WriteAssign email account to sequence
Add one more mailbox for a sequence to send from. A sequence can hold up to 100 linked accounts, and the call is idempotent. Returns an empty success response (HTTP 200).
Inputs
emailAccountIdintegerrequired- ID of the email account to link to the sequence.
idintegerrequired- Sequence ID.
reply_assign_taskHand one task to a colleague by user id.WriteReassign a task
Hand one task to a colleague by user id. They must be on your team, and your role must allow the reassignment. Returns task with id, contactId, taskType, status, linkedInTaskType, sequenceId, sequenceStepId, sequenceStepDisplayName.
- Idempotent
Inputs
idintegerrequired- Task ID.
userIdintegerrequired- User ID to assign the task to. Must be a member of the caller's team.
reply_bulk_add_contacts_to_contact_accountLink up to 1000 contacts to an account in one call.WriteBulk add contacts to an account
Link up to 1000 contacts to an account in one call. A contact belongs to one account, so any already linked elsewhere is moved. Returns the result as JSON.
Inputs
contactIdsarrayrequired- List of contact IDs.
idintegerrequired- Account ID.
reply_bulk_add_contacts_to_sequenceEnroll contacts in a sequence — up to 10,000 ids per call.WriteBulk add contacts to sequence
Enroll contacts in a sequence — up to 10,000 ids per call. Set removeFromExisting to pull them out of their current ones. Returns the result with added, notProcessed. Use reply_bulk_add_contacts_to_sequence to enroll contacts in a sequence. Prerequisite: contact ids from reply_get_contacts or reply_create_contact.
Inputs
contactIdsarrayrequired- Array of contact IDs to add.
idintegerrequired- Sequence ID.
ignoreStepDelayboolean- If true, skip the configured delay before the first step and start processing immediately. Optional.
removeFromExistingboolean- If true, contacts will be removed from their current sequences before being added to this one. Optional.
startFromstring- Optional date when contact processing should begin. If not provided, processing starts immediately. Optional.
startStepIdinteger- Optional step ID to start from. Optional.
reply_complete_taskMark a task done without carrying it out.WriteComplete a task
Mark a task done without carrying it out. On a call task, pass callResolution to record how the call went. Returns task with id, contactId, taskType, status, linkedInTaskType, sequenceId, sequenceStepId, sequenceStepDisplayName.
Inputs
idintegerrequired- Task ID.
callResolutioninteger- Call resolution outcome. Only meaningful for Call tasks. Affects sequence branching. 0 = Positive, 1 = ToCall, 2 = Negative. Optional.
finishProspectInSequenceboolean- If true, also removes the prospect from the sequence. The finish reason is derived automatically from the task type (Call → Called, others → Manual). Optional.
reply_create_contactAdd a single contact to your account with any profile and custom fields you have.WriteCreate a contact
Add a single contact to your account with any profile and custom fields you have. Returns the contact with its new id. Returns contact with id, email, domain, firstName, lastName, phone, title, company.
Inputs
accountIdinteger- ID of the contact account to link this contact to. Optional.
citystring- City of residence. Optional.
companystring- Organization name. Optional.
companySizestring- Organization employee count range. Optional.one of
EmptySelfEmployedTenFiftyTwoHundredFiveHundredOneThousandFiveThousandTenThousandOverTenThousand countrystring- Country. Optional.
customFieldsarray- User-defined fields. Optional.
emailstring- Primary email address. Optional.
firstNamestring- First name. Optional.
industrystring- Business sector. Optional.
lastNamestring- Last name. Optional.
linkedInRecruiterUrlstring- Recruiter URL. Optional.
linkedInSalesNavigatorUrlstring- Sales Navigator URL. Optional.
linkedInUrlstring- LinkedIn profile URL. Optional.
notesstring- Additional information. Optional.
phonestring- Phone number. Optional.
phone2string- Secondary phone number. Optional.
statestring- State/province. Optional.
timeZoneIdstring- Timezone identifier. Optional.
titlestring- Job title. Optional.
reply_create_contact_accountRegister a company as an account that contacts can link to.WriteCreate an account
Register a company as an account that contacts can link to. Only name is required; every other company field is optional. Returns contact account details with id, ownerUserId, name, description, domainName, domainSecondary, industry, companySize.
Inputs
namestringrequired- Contact account name.
citystring- City. Optional.
companySizestring- Company size range. Optional.one of
EmptySelfEmployed2-1011-5051-200201-500501-10001001-50005001-1000010001+ countrystring- Country of the company. Optional.
customFieldsarray- Account custom field values to write. Identify each field by id or by name; id wins when both are present. A value for a number field must parse as a number, and every field must exist for your team: otherwise the request is rejected with 400 and nothing is written. Requires the account custom fields feature; without it the request is rejected with 403. Optional.
descriptionstring- Optional description. Optional.
domainNamestring- Primary domain name. Optional.
domainSecondarystring- Secondary domain name. Optional.
emailstring- Contact email address. Optional.
industrystring- Industry of the company. Optional.
linkedInUrlstring- LinkedIn profile URL. Optional.
logoUrlstring- Company logo URL. Optional.
phonestring- Phone number. Optional.
statestring- State or province. Optional.
timeZoneIdstring- Time zone identifier. Optional.
twitterUrlstring- Twitter profile URL. Optional.
reply_create_contact_account_listCreate an account list to group companies under.WriteCreate an account list
Create an account list to group companies under. The name must be 3 to 128 characters and unique within your team. Returns contact account list with id, name.
Inputs
namestringrequired- Account list name (3 to 128 characters, unique per team).
reply_create_contact_listCreate a contact list to group contacts under.WriteCreate a contact list
Create a contact list to group contacts under. Set isShared to make it visible to your team, or leave it false to keep it private. Returns contact list with id, name, isShared.
Inputs
namestringrequired- Contact list name.
isSharedboolean- Whether the contact list should be shared. Optional.
reply_create_custom_fieldTrack something on contacts or accounts that Reply doesn't capture by default.WriteCreate a custom field
Track something on contacts or accounts that Reply doesn't capture by default. Provide a title and a text or number field type; set entityType to account for a field that lives on accounts. Returns custom field with id, title, fieldType, entityType, metadata, orgWide, fieldSource, aiDefinition.
Inputs
fieldTypestringrequired- Custom field type.one of
textnumber titlestringrequired- Custom field name.
aiDefinitionobject- Makes the field an AI custom field, filled by running this prompt against a contact. Omit it for a field you fill yourself. Optional.
entityTypestring- The entity the field belongs to. Omit it for a contact field. An account field cannot carry an aiDefinition. Optional.one of
contactaccount metadatastring- Optional metadata for the field (e.g., dropdown options). Optional.
orgWideboolean- Whether the field should be shared across the organization. Optional.
reply_create_email_templateStore a reusable email as a template.WriteCreate an email template
Store a reusable email as a template. Name, body, and folderType are required; folderType is personal or team. Returns emailtemplate with id, name, subject, body, folderId, folderType, attachments, createdAt.
Inputs
bodystringrequired- HTML body of the email template. Variable names are case-sensitive, for example {{FirstName}}. See GET /v3/email-templates/variables for the full list. Unknown variables can be rejected with 400.
folderTypestringrequired- Type of the folder.one of
personalteam namestringrequired- Name of the email template.
attachmentIdsarray- List of previously uploaded attachment IDs to associate with the template. Optional.
folderIdinteger- ID of the folder to place the template in. Optional.
subjectstring- Email subject line. Variable names are case-sensitive, for example {{FirstName}}. See GET /v3/email-templates/variables for the full list. Unknown variables can be rejected with 400. Optional.
reply_create_inbox_categoryUse this endpoint when you need a category of your own to sort inbox conversations under.WriteCreate inbox category
Use this endpoint when you need a category of your own to sort inbox conversations under. Provide a name — unique within your team, ignoring case — and optionally a color; the created category is returned with its assigned id. Returns inbox category with id, name, color, isReserved, unreadThreadsCount.
Inputs
colorstringrequired- color value.one of
graygreenblueredyellowpurpleorangelightBlueolive namestringrequired- name value.
reply_create_sequenceCreate a sequence to send from.WriteCreate a sequence
Create a sequence to send from. Name and at least one step are required — a sequence with no steps has nothing to send and cannot be started. Returns the result as JSON.
Inputs
namestringrequired- Name of the sequence.
stepsarrayrequired- Array of sequence steps; at least one step is required. Select a step type to see its configuration.
emailAccountsarray- Array of email account IDs. Optional.
linkedInAccountsarray- Array of LinkedIn account IDs. Optional.
scheduleIdinteger- ID of the schedule to use. Optional.
settingsobject- Settings configuration for a sequence. Optional.
reply_create_sequence_folderCreate a folder to group sequences under.WriteCreate a sequence folder
Create a folder to group sequences under. The name is capped at 128 characters and must be unique among yours. Returns sequence folder with id, name.
Inputs
namestringrequired- Name of the folder.
reply_create_sequence_from_templateBuild a new sequence from one of your saved templates.WriteCreate a sequence from a template
Build a new sequence from one of your saved templates. Pass templateId, and optionally a folder to file it into. Returns the result as JSON.
Inputs
templateIdstringrequired- Template Id to create the sequence from (UUID).
sequenceFolderIdstring- Optional folder Id to place the new sequence in (UUID). Optional.
reply_create_sequence_stepAdd a step to a sequence.WriteCreate a sequence step
Add a step to a sequence. type picks what it does — email, linkedIn, call, sms, condition, and more; linkedIn adds actionType. Returns the resulting object as JSON.
Inputs
idintegerrequired- Sequence Id.
actionstring- Zapier action type. Optional.one of
immediatelywait actionTypestring- Type of task action to perform. Optional.one of
toDomeeting body_idinteger- Unique identifier for the step. Optional.
conditionsarray- Array of condition templates to evaluate. Optional.
delayInMinutesinteger- Delay in minutes before executing this step. Optional.
descriptionstring- Task description or instructions. Optional.
executionModestring- Execution mode for the email step. Optional.one of
automaticmanual ifConditionPositiveboolean- Whether this step is on the positive branch of a condition. Optional.
messagestring- Notes or script for the call. Optional.
namestring- Name of the Zapier step. Optional.
parentIdinteger- ID of the parent step (for branching). Optional.
typestring- Step type discriminator. Optional.one of
emailcallsmswhatsAppzapiertaskcondition variantsarray- Array of email variants (A/B test versions). Optional.
waitInMinutesinteger- Wait time in minutes for condition evaluation. Optional.
reply_create_taskCreate a task of your own.WriteCreate a task
Create a task of your own. taskType, startAt, dueTo, and a template body are required; contactId for every type but toDo. Returns task with id, contactId, taskType, status, linkedInTaskType, sequenceId, sequenceStepId, sequenceStepDisplayName.
Inputs
dueTostringrequired- Task due time. Must be after startAt.
startAtstringrequired- Task start time. Must be on or after 2015-01-01.
taskTypestringrequired- Task type. Must be a valid enum value. Possible values: toDo, call, meeting, linkedIn, manualEmail, sms, whatsApp.one of
toDocallmeetinglinkedInmanualEmailsmswhatsApp templateobjectrequired- Task content template. Body is required.
contactIdinteger- Contact (prospect) ID to associate with the task. Required for template variable rendering. Optional.
linkedInTaskTypestring- LinkedIn action subtype. Only applicable for LinkedIn tasks (taskType=linkedIn). Must be a valid enum value when provided. Possible values: message, connect, inMail, viewProfile. Optional.one of
messageconnectinMailviewProfile
reply_import_contactsUse this endpoint when you need to add or update many contacts in one call — for example when syncing contacts from another system.WriteImport contacts
Use this endpoint when you need to add or update many contacts in one call — for example when syncing contacts from another system. Each item requires firstName; the remaining fields are optional and use the same fields as the contact update model. Returns a page of item records (items, added, updated, skipped, failed); each has id, status, error.
Inputs
itemsarrayrequired- Array of contact objects to import. Uses the same fields as the contact patch model, except that firstName is required for every item. An item with no firstName is not imported — it is returned with status: failed and error: "Invalid data". Supplying only lastName does not satisfy the requirement. stage sets a stage here but cannot clear one — an omitted or null stage leaves the contact's current stage alone. An item naming a stage that does not exist — including an empty or blank name — is returned with status: failed and an error listing the available names; the rest of the batch still imports.
optionsobject- Import settings. Optional.
reply_mark_inbox_threads_as_readUse this endpoint when you need to clear the unread state on one or more conversations — for example after your own app has shown them to the user.WriteMark threads as read
Use this endpoint when you need to clear the unread state on one or more conversations — for example after your own app has shown them to the user. Threads that are already read are unaffected. Returns the result as JSON.
Inputs
threadIdsarrayrequired- thread Ids value.
reply_mark_inbox_threads_as_unreadUse this endpoint when you need to flag one or more conversations as needing attention again by restoring their unread state.WriteMark threads as unread
Use this endpoint when you need to flag one or more conversations as needing attention again by restoring their unread state. Threads are processed one by one; the response returns only the thread ids that were not updated, each with its error details, so an empty object means everything succeeded. Returns the result as JSON.
Inputs
threadIdsarrayrequired- thread Ids value.
reply_move_contact_to_sequenceEnroll a contact into a different sequence.WriteMove a contact to a sequence
Enroll a contact into a different sequence. Set removeFromExisting to true to take them out of their current one. Returns the result as JSON. Use reply_move_contact_to_sequence to move one contact between sequences. Use reply_bulk_add_contacts_to_sequence to enroll contacts without moving them.
Inputs
idintegerrequired- Contact ID.
sequenceIdintegerrequired- Target sequence ID to move the contact to.
ignoreStepDelayboolean- If true, skip the configured delay before the first step and start processing immediately. Optional.
removeFromExistingboolean- Whether to remove the contact from their current sequence. Optional.
startFromstring- Optional date when contact processing should begin. If not provided, processing starts immediately. Optional.
startStepIdinteger- Optional step ID to start from in the target sequence. Optional.
reply_move_contacts_to_contact_listMove contacts into a list and out of every other list.WriteMove contacts to a contact list
Move contacts into a list and out of every other list. Use add-contacts instead to keep their existing memberships. Returns the result as JSON.
Inputs
contactIdsarrayrequired- Array of contact IDs to move.
idintegerrequired- Contact list ID.
reply_pause_sequenceStop a running sequence sending further steps while keeping it and its contacts in place.WritePause a sequence
Stop a running sequence sending further steps while keeping it and its contacts in place. It must have started once. Returns the result as JSON. Use reply_pause_sequence to stop sending. Use reply_start_sequence to resume.
Inputs
idintegerrequired- Sequence Id.
reply_send_direct_emailSend a one-off email to a contact outside any sequence, from a connected account.WriteSend a direct email to a contact
Send a one-off email to a contact outside any sequence, from a connected account. The reply is still tracked on the contact. Returns the result with status, messageId. Use reply_send_direct_email for a new one-off email to a contact. Use reply_send_inbox_thread_message to reply inside an existing thread.
Inputs
bodystringrequired- Email body (HTML).
idintegerrequired- Contact ID.
subjectstringrequired- Email subject line.
emailAccountIdinteger- Email account ID to send from. If not provided, uses the default account. Optional.
reply_send_inbox_thread_messageReply to a contact inside an existing conversation.WriteSend a reply within a thread
Reply to a contact inside an existing conversation. The channel in your body must match the thread's, or it's rejected. Returns the resulting object as JSON. Use reply_send_inbox_thread_message to reply inside an existing inbox thread. Use reply_send_direct_email for a new one-off email to a contact.
Inputs
channelstringrequired- channel value.one of
emaillinkedIn idintegerrequired- id value.
messagestringrequired- Message body. May contain HTML.
applySignatureboolean- When true, the sender's email-account signature is appended to the message body. Optional.
attachmentIdsarray- attachment Ids value. Optional.
bccarray- bcc value. Optional.
ccarray- cc value. Optional.
replyToMessageIdstring- MessageId of a specific message in the thread to reply to. When omitted, the reply targets the last message in the thread. Optional.
toobject- Recipient email address and optional display name. When omitted, the reply is delivered to the contact's stored address. When set to a different address, link and open tracking are disabled automatically. Optional.
reply_set_contacts_opted_outOpt contacts out of all outreach, or clear the flag.WriteOpt contacts out or clear their opt-out
Opt contacts out of all outreach, or clear the flag. Opting out finishes them in every sequence they're in. Returns the result as JSON.
Inputs
contactIdsarrayrequired- Contact IDs to update. At least one, at most 100, no duplicates. Each ID must be positive.
isOptedOutbooleanrequired- true opts the contacts out; false clears the opted-out flag.
reply_set_contacts_repliedRecord replies captured outside Reply, in another inbox or CRM, across every sequence a contact is in.WriteMark or unmark contacts as replied
Record replies captured outside Reply, in another inbox or CRM, across every sequence a contact is in. Stops further steps. Returns the result as JSON.
Inputs
contactIdsarrayrequired- Contact IDs to update. At least one, at most 100. Each ID must be positive.
isRepliedbooleanrequired- true marks the contacts as replied; false clears the replied flag.
reply_set_inbox_thread_categoryFile one conversation under an inbox category, or send categoryId as null to clear it.WriteAssign or clear a thread's category
File one conversation under an inbox category, or send categoryId as null to clear it. A thread sits in at most one. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- id value.
categoryIdinteger- Target category id, or null to clear the assignment. Optional.
reply_set_inbox_thread_meeting_intentMark a conversation as one where the contact wants to book a meeting, or clear it.WriteToggle thread meeting-intent
Mark a conversation as one where the contact wants to book a meeting, or clear it. The thread filter can use this flag. Returns the result as JSON.
- Idempotent
Inputs
hasMeetingIntentbooleanrequired- True to flag the thread as carrying meeting intent; false to clear it.
idintegerrequired- id value.
reply_set_sequence_contacts_status_in_sequenceSet contacts to active, paused, finished, or outOfOffice in this sequence alone.WriteSet contacts' status in this sequence
Set contacts to active, paused, finished, or outOfOffice in this sequence alone. Up to 100 ids, with no duplicates. Returns the result as JSON.
Inputs
contactIdsarrayrequired- Contact IDs to update. At least one, at most 100. Each ID must be positive.
idintegerrequired- Sequence ID.
statusInSequencestringrequired- Target in-sequence status to set.one of
activepausedfinishedoutOfOffice
reply_start_sequenceStart a sequence or resume a paused one.WriteStart a sequence
Start a sequence or resume a paused one. It needs contacts, a connected email account, and a schedule with sending hours. Returns the result as JSON. Use reply_start_sequence to begin sending. Use reply_pause_sequence to stop.
Inputs
idintegerrequired- Sequence Id.
reply_unarchive_sequenceBring an archived sequence back to its old status.WriteUnarchive a sequence
Bring an archived sequence back to its old status. Its contacts aren't put back, so add them again before starting. Returns the result as JSON.
Inputs
idintegerrequired- Sequence Id.
reply_update_contactChange specific fields on a contact without resending the whole record.WriteUpdate a contact
Change specific fields on a contact without resending the whole record. Omitted fields stay as they are; null clears one. Returns contact with id, email, domain, firstName, lastName, phone, title, company.
Inputs
idintegerrequired- Contact ID.
accountIdinteger- ID of the contact account to link this contact to. Optional.
callStatusstring- Contact-level call status. Pass none to clear. Optional.one of
nonetoCallcalled citystring- City of residence. Optional.
companystring- Organization name. Optional.
companySizestring- Organization employee count range. Optional.one of
EmptySelfEmployedTenFiftyTwoHundredFiveHundredOneThousandFiveThousandTenThousandOverTenThousand countrystring- Country. Optional.
customFieldsarray- Custom fields to update. Fields can be identified by id or name. Unlike the response model which uses key/value, the patch model accepts id, name, and value. Optional.
emailstring- Primary email address. Optional.
firstNamestring- First name. Optional.
industrystring- Business sector. Optional.
isOptedOutboolean- Set or clear the contact's opted-out flag (suppresses all communications when true). Optional.
lastNamestring- Last name. Optional.
linkedInRecruiterUrlstring- Recruiter URL. Optional.
linkedInSalesNavigatorUrlstring- Sales Navigator URL. Optional.
linkedInUrlstring- LinkedIn profile URL. Optional.
meetingStatusstring- Contact-level meeting status. Pass none to clear. Optional.one of
nonemeetingBooked notesstring- Additional information. Optional.
ownerUserIdinteger- Change the owner of this contact. The new owner must be a member of the caller's team; otherwise the request fails with 404. Optional.
phonestring- Phone number. Optional.
phone2string- Secondary phone number. Optional.
stagestring- Move the contact to this stage, named as the team has it configured. Matching ignores case and separators, so Not interested, notInterested and not-interested all select the same stage. Pass null to clear the stage; null is the only value that clears it. A name matching no stage — including an empty or blank one — fails the request with 400 and lists the names that are available. Optional.
statestring- State/province. Optional.
timeZoneIdstring- Timezone identifier. Optional.
titlestring- Job title. Optional.
reply_update_contact_accountReplace an account's details in full.WriteUpdate an account
Replace an account's details in full. Name and ownerUserId are required, and any optional field you leave out is cleared. Returns contact account details with id, ownerUserId, name, description, domainName, domainSecondary, industry, companySize.
- Idempotent
Inputs
idintegerrequired- Account ID.
namestringrequired- Contact account name.
citystring- City. Optional.
companySizestring- Company size range. Optional.one of
EmptySelfEmployed2-1011-5051-200201-500501-10001001-50005001-1000010001+ countrystring- Country of the company. Optional.
customFieldsarray- Account custom field values to write. Identify each field by id or by name; id wins when both are present. A value for a number field must parse as a number, and every field must exist for your team: otherwise the request is rejected with 400 and nothing is written. Requires the account custom fields feature; without it the request is rejected with 403. Optional.
descriptionstring- Optional description. Optional.
domainNamestring- Primary domain name. Optional.
domainSecondarystring- Secondary domain name. Optional.
emailstring- Contact email address. Optional.
industrystring- Industry of the company. Optional.
linkedInUrlstring- LinkedIn profile URL. Optional.
logoUrlstring- Company logo URL. Optional.
ownerUserIdinteger- ID of the user who owns this contact account. Optional.
phonestring- Phone number. Optional.
statestring- State or province. Optional.
timeZoneIdstring- Time zone identifier. Optional.
twitterUrlstring- Twitter profile URL. Optional.
reply_update_contact_account_listRename an account list.WriteUpdate an account list
Rename an account list. The name is all you can change here, and it must be 3 to 128 characters and unique in your team. Returns contact account list with id, name.
- Idempotent
Inputs
idintegerrequired- Account list ID.
namestringrequired- New account list name (3 to 128 characters, unique per team).
reply_update_contact_listRename a contact list.WriteUpdate a contact list
Rename a contact list. Only the name changes here — use share and unshare to change visibility. Returns contact list with id, name, isShared.
- Idempotent
Inputs
idintegerrequired- Contact list ID.
namestringrequired- New contact list name.
reply_update_custom_fieldRename a custom field or change the kind of value it holds.WriteUpdate a custom field
Rename a custom field or change the kind of value it holds. Send the complete definition — metadata is replaced, not merged. Returns custom field with id, title, fieldType, entityType, metadata, orgWide, fieldSource, aiDefinition.
- Idempotent
Inputs
fieldTypestringrequired- Custom field type.one of
textnumber idintegerrequired- Custom field ID.
titlestringrequired- Custom field name.
aiDefinitionobject- Required when the field is an AI custom field, and rejected when it is not — a field cannot change kind after it is created. Optional.
entityTypestring- Optional. When present it must match the entity the field was created for - a field cannot move between contacts and accounts. Optional.one of
contactaccount metadatastring- Optional metadata for the field (e.g., dropdown options). Optional.
reply_update_email_templateChange a template's content.WriteUpdate an email template
Change a template's content. Name and body are required every time, so send it in full — anything left out is overwritten. Returns emailtemplate with id, name, subject, body, folderId, folderType, attachments, createdAt.
- Idempotent
Inputs
bodystringrequired- HTML body of the email template. Variable names are case-sensitive, for example {{FirstName}}. See GET /v3/email-templates/variables for the full list. Unknown variables can be rejected with 400.
idintegerrequired- Email template ID.
namestringrequired- Name of the email template.
attachmentIdsarray- List of attachment IDs to associate with the template (replaces existing attachments). Optional.
subjectstring- Email subject line. Variable names are case-sensitive, for example {{FirstName}}. See GET /v3/email-templates/variables for the full list. Unknown variables can be rejected with 400. Optional.
reply_update_inbox_categoryUse this endpoint when you need to rename a category or change its color.WriteUpdate inbox category
Use this endpoint when you need to rename a category or change its color. Both name and color are replaced by what you send, so include the values you want to keep. Returns inbox category with id, name, color, isReserved, unreadThreadsCount.
- Idempotent
Inputs
colorstringrequired- color value.one of
graygreenblueredyellowpurpleorangelightBlueolive idintegerrequired- id value.
namestringrequired- name value.
reply_update_sequenceChange part of a sequence and leave the rest.WriteUpdate a sequence
Change part of a sequence and leave the rest. settings merges key by key; account lists replace what's there. Returns the result as JSON.
Inputs
idintegerrequired- Sequence Id.
emailAccountsarray- Array of email account IDs. Optional.
linkedInAccountsarray- Array of LinkedIn account IDs. Optional.
namestring- Name of the sequence. Optional.
scheduleIdinteger- ID of the schedule to use. Optional.
settingsobject- Settings configuration for a sequence. Optional.
reply_update_sequence_stepChange what a step does.WriteUpdate a sequence step
Change what a step does. Send the whole step; give each variant an id, or it's added as new, and omitted ones are dropped. Returns the resulting object as JSON.
- Idempotent
Inputs
idintegerrequired- Sequence Id.
step_idintegerrequired- Step Id.
actionstring- Zapier action type. Optional.one of
immediatelywait actionTypestring- Type of task action to perform. Optional.one of
toDomeeting body_idinteger- Unique identifier for the step. Optional.
conditionsarray- Array of condition templates to evaluate. Optional.
delayInMinutesinteger- Delay in minutes before executing this step. Optional.
descriptionstring- Task description or instructions. Optional.
executionModestring- Execution mode for the email step. Optional.one of
automaticmanual ifConditionPositiveboolean- Whether this step is on the positive branch of a condition. Optional.
messagestring- Notes or script for the call. Optional.
namestring- Name of the Zapier step. Optional.
parentIdinteger- ID of the parent step (for branching). Optional.
typestring- Step type discriminator. Optional.one of
emailcallsmswhatsAppzapiertaskcondition variantsarray- Array of email variants (A/B test versions). Each variant must include its id for update operations. Optional.
waitInMinutesinteger- Wait time in minutes for condition evaluation. Optional.
reply_update_taskReplace an open task in full.WriteUpdate a task
Replace an open task in full. Send taskType, startAt, dueTo, and a template body every time; only open tasks can change. Returns task with id, contactId, taskType, status, linkedInTaskType, sequenceId, sequenceStepId, sequenceStepDisplayName.
- Idempotent
Inputs
dueTostringrequired- Task due time. Must be after startAt.
idintegerrequired- Task ID.
startAtstringrequired- Task start time. Must be on or after 2015-01-01.
taskTypestringrequired- Task type. Possible values: toDo, call, meeting, linkedIn, manualEmail, sms, whatsApp.one of
toDocallmeetinglinkedInmanualEmailsmswhatsApp templateobjectrequired- Updated task content template. Body is required.
contactIdinteger- Contact (prospect) ID. Cannot be changed for sequence-created tasks. Optional.
linkedInTaskTypestring- LinkedIn action subtype. Only for LinkedIn tasks. Possible values: message, connect, inMail, viewProfile. Optional.one of
messageconnectinMailviewProfile
reply_bulk_delete_contactsDelete several contacts in one call.DestructiveBulk delete contacts
Delete several contacts in one call. Each is handled on its own, and the response maps any skipped contact to its reason. Returns the result as JSON. Use reply_bulk_delete_contacts to permanently remove many contacts. Use reply_delete_contact for one.
Inputs
idsarrayrequired- List of contact IDs to delete.
reply_bulk_remove_contacts_from_sequenceUse this endpoint when you need to take several contacts out of a sequence in one call: list them in contactIds, at least one and with no duplicates.DestructiveBulk remove contacts from sequence
Use this endpoint when you need to take several contacts out of a sequence in one call: list them in contactIds, at least one and with no duplicates. Each of them stops progressing through the steps and anything still scheduled for it in this sequence is cancelled, while the contacts themselves stay in your account and their memberships in other sequences are left alone. Returns the result with requested, removed, notFound, notInSequence, removedIds.
Inputs
contactIdsarrayrequired- contact Ids value.
idintegerrequired- Sequence ID.
reply_delete_contactDelete one contact by its Reply id.DestructiveDelete a contact
Delete one contact by its Reply id. To remove several at once, use the bulk-delete endpoint instead. Returns the result as JSON. Use reply_delete_contact to permanently remove one contact. Use reply_bulk_delete_contacts for many.
- Idempotent
Inputs
idintegerrequired- Contact ID.
reply_delete_contact_accountDelete one account by id.DestructiveDelete an account
Delete one account by id. Its linked contacts are kept and simply left without an account. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Account ID.
reply_delete_contact_account_listDelete an account list by id.DestructiveDelete an account list
Delete an account list by id. The accounts stay in Reply and keep their other lists — only membership in this list goes away. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Account list ID.
reply_delete_contact_listDelete a contact list by id.DestructiveDelete a contact list
Delete a contact list by id. A shared list can only be deleted by the person who created it. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Contact list ID.
reply_delete_custom_fieldRetire a custom field your team no longer collects.DestructiveDelete a custom field
Retire a custom field your team no longer collects. It disappears for everyone, even where contacts already hold values. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Custom field ID.
reply_delete_email_templatePermanently delete an email template by id.DestructiveDelete an email template
Permanently delete an email template by id. There is no undo, and a successful call returns no content. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Email template ID.
reply_delete_sequenceDelete a sequence by id.DestructiveDelete a sequence
Delete a sequence by id. Its contacts stay in your account, but the sequence can't be restored — archive it instead. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Sequence Id.
reply_delete_sequence_stepDelete a step from a sequence.DestructiveDelete a sequence step
Delete a step from a sequence. Children re-attach to its parent by default; condition steps need a mode for the branches. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Sequence Id.
step_idintegerrequired- Step Id.
modestring- Node selection mode for deletion. Defaults to nodeOnly. Optional.one of
nodeOnlynodeAndAllChildrennodeAndPositiveChildrennodeAndNegativeChildren
reply_delete_taskRemove one task by id.DestructiveDelete a task
Remove one task by id. An open task is cancelled and a completed one archived; either way it leaves your task lists. Returns the result as JSON.
- Idempotent
Inputs
idintegerrequired- Task ID.
reply_remove_contact_from_sequenceTake one contact out of a sequence.DestructiveRemove contact from sequence
Take one contact out of a sequence. They stop progressing, but the contact and their history stay in your account. Returns the result as JSON.
- Idempotent
Inputs
contact_idintegerrequired- Contact ID.
idintegerrequired- Sequence ID.
No tools match.