Reply.io
BUSINESS · CRM & SUPPORT
Contacts, sequences, email and LinkedIn channels, and the inbox in that account.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
replyio_delete_v3_ai_prompts_by_idWRITEDelete a personal AI prompt. DELETE /v3/ai-prompts/{id}. Delete one of your personal AI prompts. Steps already using it keep their saved text. Library prompts cannot be deleted.
replyio_delete_v3_ai_sdr_knowledge_bases_by_idWRITEDelete a knowledge base. DELETE /v3/ai-sdr/knowledge-bases/{id}. Delete a knowledge base by id so the AI SDR stops writing from it. Returns 204 with no body when it succeeds.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_documents_by_document_idWRITEDelete a document. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/documents/{document_id}. Remove a file from a knowledge base so the AI SDR stops drawing on it. Returns 204 with no body when it succeeds.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_links_by_link_idWRITEDelete a link. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/links/{link_id}. Remove a web page from a knowledge base so the AI SDR stops drawing on it. Returns 204 with no body on success.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idWRITEDelete a reengagement card. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards/{reengagement_card_id}. Delete a reengagement card so it no longer fires for quiet contacts. To keep it but stop it firing, set isEnabled to false.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_id_media_by_media_idWRITEDelete reengagement card media. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards/{reengagement_card_id}/media/{media_id}. Detach a file from a reengagement card so it stops going out with the card's messages. Returns 204 with no body.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_idWRITEDelete a reengagement flow. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}. Retire a reengagement flow and its cards. Contacts on it fall back to the default flow, which cannot itself be deleted.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idWRITEDelete a reply handler. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}. Delete a reply handler so the AI SDR stops applying it to incoming replies. Returns 204 with no body on success.
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_id_media_by_media_idWRITEDelete reply handler media. DELETE /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}/media/{media_id}. Detach a file from a reply handler so it stops going out with the answers the agent writes. Returns 204 with no body.
replyio_delete_v3_ai_sdr_offers_by_idWRITEDelete an offer. DELETE /v3/ai-sdr/offers/{id}. Delete an offer you no longer work with, by id. A successful call returns no content. Needs the AI SDR feature on your team.
replyio_delete_v3_ai_sdr_playbooks_by_idWRITEDelete a playbook. DELETE /v3/ai-sdr/playbooks/{id}. Delete a playbook by its composite id. Reply-curated global playbooks cannot be deleted, and organization ones need permission.
replyio_delete_v3_ai_sdr_playbooks_by_playbook_id_style_files_by_style_file_idWRITEDelete a style file. DELETE /v3/ai-sdr/playbooks/{playbook_id}/style-files/{style_file_id}. Remove a style file so it stops informing how the AI SDR writes for this playbook. Only that file is removed.
replyio_delete_v3_contact_account_lists_by_idWRITEDelete an account list. DELETE /v3/contact-account-lists/{id}. Delete an account list by id. The accounts stay in Reply and keep their other lists — only membership in this list goes away.
replyio_delete_v3_contact_accounts_by_idWRITEDelete an account. DELETE /v3/contact-accounts/{id}. Delete one account by id. Its linked contacts are kept and simply left without an account. Use bulk-delete for several.
replyio_delete_v3_contact_blacklist_rules_domains_by_idWRITEDelete a domain blacklist rule. DELETE /v3/contact-blacklist-rules/domains/{id}. Stop blocking a domain so contacts there are reachable again. Only your own rules go; Reply's platform rules are read-only.
replyio_delete_v3_contact_blacklist_rules_email_exceptions_by_idWRITEDelete an email exception blacklist rule. DELETE /v3/contact-blacklist-rules/email-exceptions/{id}. Withdraw an exception so its address falls back under your blacklist, if a domain or email rule still covers it.
replyio_delete_v3_contact_blacklist_rules_emails_by_idWRITEDelete an email blacklist rule. DELETE /v3/contact-blacklist-rules/emails/{id}. Unblock one address. It becomes reachable again unless a domain rule still covers its domain. Platform rules are read-only.
replyio_delete_v3_contact_lists_by_idWRITEDelete a contact list. DELETE /v3/contact-lists/{id}. Delete a contact list by id. A shared list can only be deleted by the person who created it.
replyio_delete_v3_contacts_by_idWRITEDelete a contact. DELETE /v3/contacts/{id}. Delete one contact by its Reply id. To remove several at once, use the bulk-delete endpoint instead.
replyio_delete_v3_custom_fields_by_idWRITEDelete a custom field. DELETE /v3/custom-fields/{id}. Retire a custom field your team no longer collects. It disappears for everyone, even where contacts already hold values.
replyio_delete_v3_email_accounts_by_idWRITEDelete an email account. DELETE /v3/email-accounts/{id}. Disconnect one email account and remove it from Reply by id. Use bulk-delete to remove several in one call.
replyio_delete_v3_email_accounts_by_id_tagsWRITERemove tags from an email account. DELETE /v3/email-accounts/{id}/tags. Take one or more tags off an email account by name. Only the link goes — the tag stays available on other accounts.
replyio_delete_v3_email_template_folders_by_idWRITEDelete an email template folder. DELETE /v3/email-template-folders/{id}. Delete an email template folder, passing its foldertype. Team folders must be emptied first; personal ones just unfile.
replyio_delete_v3_email_templates_by_idWRITEDelete an email template. DELETE /v3/email-templates/{id}. Permanently delete an email template by id. There is no undo, and a successful call returns no content.
replyio_delete_v3_holiday_calendars_by_idWRITEDelete a holiday calendar. DELETE /v3/holiday-calendars/{id}. Delete a custom calendar you created. It detaches from every schedule that used it; Reply's country calendars can't go.
replyio_delete_v3_inbox_threads_by_idWRITEDelete inbox thread. DELETE /v3/inbox/threads/{id}. Permanently delete one conversation and its messages. Use bulk-delete to remove several in one call.
replyio_delete_v3_inbox_threads_categories_by_idWRITEDelete inbox category. DELETE /v3/inbox/threads/categories/{id}. Delete one of your own inbox categories. Threads filed under it are unlinked and stay put. Reserved categories return 403.
replyio_delete_v3_linkedin_accounts_by_idWRITEDelete a LinkedIn account. DELETE /v3/linkedin-accounts/{id}. Disconnect one LinkedIn account. An account still used by a sequence is rejected unless you pass force=true.
replyio_delete_v3_linkedin_accounts_pending_by_idWRITEDelete a pending LinkedIn account. DELETE /v3/linkedin-accounts/pending/{id}. Cancel an outstanding LinkedIn connection invitation, for instance when its link expired or went to the wrong person.
replyio_delete_v3_schedules_by_idWRITEDelete a schedule. DELETE /v3/schedules/{id}. Delete a schedule for good. Rejected while a sequence, template, or someone's default is still using it.
replyio_delete_v3_schedules_by_id_holiday_calendar_links_by_calendaridWRITEUnlink a holiday calendar from a schedule. DELETE /v3/schedules/{id}/holiday-calendar-links/{calendarId}. Stop a schedule observing a holiday calendar. The calendar itself stays available to other schedules.
replyio_delete_v3_sequence_folders_by_idWRITEDelete a sequence folder. DELETE /v3/sequence-folders/{id}. Delete one of your sequence folders. The sequences inside are kept and simply become unfiled, ready to refile.
replyio_delete_v3_sequence_templates_by_idWRITEDelete a sequence template. DELETE /v3/sequence-templates/{id}. Delete a sequence template so it's no longer offered. Team templates are shared, so any teammate who sees one can delete it.
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approvalWRITEReject (delete) a pending approval. DELETE /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/approval. Reject a contact's queued draft instead of sending it. The draft is discarded and the contact leaves the sequence.
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseWRITEDisconnect the knowledge base from the sequence. DELETE /v3/sequences/ai-sdr/{sequence_id}/knowledge-base. Stop the AI SDR drawing on this sequence's knowledge base. Only the connection goes — the knowledge base itself stays.
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_playbookWRITEDetach the playbook from the sequence. DELETE /v3/sequences/ai-sdr/{sequence_id}/playbook. Stop the AI SDR following this sequence's playbook. Only the connection goes — the playbook stays available elsewhere.
replyio_delete_v3_sequences_by_idWRITEDelete a sequence. DELETE /v3/sequences/{id}. Delete a sequence by id. Its contacts stay in your account, but the sequence can't be restored — archive it instead.
replyio_delete_v3_sequences_by_id_contact_links_by_contact_idWRITERemove contact from sequence. DELETE /v3/sequences/{id}/contact-links/{contact_id}. Take one contact out of a sequence. They stop progressing, but the contact and their history stay in your account.
replyio_delete_v3_sequences_by_id_email_account_links_by_email_account_idWRITERemove email account from sequence. DELETE /v3/sequences/{id}/email-account-links/{email_account_id}. Stop a sequence sending from one of its mailboxes. The account itself stays connected and works in other sequences.
replyio_delete_v3_sequences_by_id_linkedin_account_links_by_linkedinaccountidWRITERemove a LinkedIn account from a sequence. DELETE /v3/sequences/{id}/linkedin-account-links/{linkedInAccountId}. Stop a sequence sending LinkedIn steps from one linked account. The account stays connected and works elsewhere.
replyio_delete_v3_sequences_by_id_steps_by_step_idWRITEDelete a sequence step. DELETE /v3/sequences/{id}/steps/{step_id}. Delete a step from a sequence. Children re-attach to its parent by default; condition steps need a mode for the branches.
replyio_delete_v3_sequences_by_id_steps_by_step_id_variants_by_variant_idWRITEDelete a step variant. DELETE /v3/sequences/{id}/steps/{step_id}/variants/{variant_id}. Delete one variant from a step for good. A variant already sent to a contact can't go, and a step keeps one enabled.
replyio_delete_v3_tasks_by_idWRITEDelete a task. DELETE /v3/tasks/{id}. Remove one task by id. An open task is cancelled and a completed one archived; either way it leaves your task lists.
replyio_delete_v3_webhooks_by_idWRITEDelete a webhook subscription. DELETE /v3/webhooks/{id}. Delete a subscription for good. Deliveries stop at once and its failure log goes too, so read the logs first if needed.
replyio_get_v3_ai_promptsREADList AI prompts. GET /v3/ai-prompts. Get the AI prompts available for a sequence step type, in one call with no paging. Mixes Reply's library prompts and yours.
replyio_get_v3_ai_sdr_approvalsREADList pending approvals. GET /v3/ai-sdr/approvals. Work through the AI messages your team's sequences have queued for approval. Paged with top and skip, filterable by sequence.
replyio_get_v3_ai_sdr_intent_signals_industriesREADIntent signal industries typeahead. GET /v3/ai-sdr/intent-signals/industries. Get the industries you can reference in an AI SDR intent signal. The id is what you send as technologyUsed.industryId.
replyio_get_v3_ai_sdr_intent_signals_technologiesREADTechnologies typeahead. GET /v3/ai-sdr/intent-signals/technologies. Get the technologies you can reference in an AI SDR intent signal. Send the slug in technologyUsed.technologies.
replyio_get_v3_ai_sdr_knowledge_basesREADList knowledge bases. GET /v3/ai-sdr/knowledge-bases. Browse the knowledge bases you can see — the collections that brief the AI SDR. Paged with top and skip.
replyio_get_v3_ai_sdr_knowledge_bases_by_idREADGet a knowledge base. GET /v3/ai-sdr/knowledge-bases/{id}. Get one knowledge base by id: its name, standing instructions, owner, and last update. Its contents have their own endpoints.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_documentsREADList documents. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/documents. List the files a knowledge base holds for the AI SDR. Paged with top and skip, with an optional search on the file name.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_linksREADList links. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/links. List the web pages a knowledge base pulls content from. Paged with top and skip, with an optional search on the URL.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cardsREADList reengagement cards. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards. Review the follow-ups a knowledge base sends to contacts who went quiet. Paged with top and skip, filterable by flow.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idREADGet a reengagement card. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards/{reengagement_card_id}. Get one reengagement card in full: instructions, sample answer, the sendAfter delay, tone, length, links, and media.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flowsREADList reengagement flows. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows. List the reengagement flows on a knowledge base. Returned as one plain array with each flow's name, description, and card count.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_contacts_countREADGet contacts count for a reengagement flow. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}/contacts-count. Count the contacts currently on a reengagement flow. The body is the number on its own, as a plain integer.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_stateREADGet reengagement flow state for a contact. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/state. See which reengagement flow a contact is on and when it was assigned. Pass sequenceid and contactid as query parameters.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlersREADList reply handlers. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers. Review the rules that tell the AI SDR how to answer each kind of reply. Paged with the top and skip query parameters.
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idREADGet a reply handler. GET /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}. Get one reply handler in full: its question type, instructions, sample answer, tone, length, links, media, and delivery mode.
replyio_get_v3_ai_sdr_offersREADList offers. GET /v3/ai-sdr/offers. Browse the AI SDR offers you can work with. Each bundles the company context used to personalize outreach. Paged with top and skip.
replyio_get_v3_ai_sdr_offers_by_idREADGet an offer. GET /v3/ai-sdr/offers/{id}. Get one offer in full: company name and description, ICP, reason for outreach, case studies, pain points, and value props.
replyio_get_v3_ai_sdr_playbooksREADList playbooks. GET /v3/ai-sdr/playbooks. Browse the AI SDR playbooks you can use. Pass type to keep one scope: global, organization, or team.
replyio_get_v3_ai_sdr_playbooks_by_idREADGet a playbook. GET /v3/ai-sdr/playbooks/{id}. Get one playbook by composite id — g- global, o- organization, t- team — with its description, body, and style files.
replyio_get_v3_ai_web_search_searchesREADList AI web searches for a sequence. GET /v3/ai-web-search/searches. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Review the AI web searches already started for one sequence. sequenceId is required, so each call covers a single sequence. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_get_v3_background_jobsREADList background jobs. GET /v3/background-jobs. See the asynchronous work you've started and where each job stands, running and finished alike. Paged with top and skip.
replyio_get_v3_background_jobs_by_jobidREADGet a background job. GET /v3/background-jobs/{jobId}. Check how far a background job has got. Poll until status settles on Done, Failed, Cancelled, or Expired, and read progress.
replyio_get_v3_contact_account_listsREADList account lists. GET /v3/contact-account-lists. Browse your team's account lists, yours first. Lists are shared team-wide. Paged with the top and skip query parameters.
replyio_get_v3_contact_account_lists_by_idREADGet an account list. GET /v3/contact-account-lists/{id}. Get one account list by id, including its name. Account lists are team-wide, so you can fetch any list your team owns.
replyio_get_v3_contact_accountsREADList accounts. GET /v3/contact-accounts. Browse the accounts you can see — the companies your contacts belong to. Paged with top and skip, with an optional search.
replyio_get_v3_contact_accounts_by_idREADGet an account. GET /v3/contact-accounts/{id}. Get one account by id: company details, owner, stage, linked contact count, and the mail provider behind its domain.
replyio_get_v3_contact_accounts_by_id_contactsREADList contacts for an account. GET /v3/contact-accounts/{id}/contacts. Get the contacts currently linked to an account, paged with top and skip. Each entry carries the email, name, and job title.
replyio_get_v3_contact_blacklist_rules_domainsREADList domain blacklist rules. GET /v3/contact-blacklist-rules/domains. Review the domain rules in force for you, each blocking every contact at that domain. Paged with top and skip.
replyio_get_v3_contact_blacklist_rules_domains_by_idREADGet a domain blacklist rule. GET /v3/contact-blacklist-rules/domains/{id}. Get one domain blacklist rule by id with the pattern it blocks. isGlobal tells you if it's yours or a Reply platform rule.
replyio_get_v3_contact_blacklist_rules_email_exceptionsREADList email exception blacklist rules. GET /v3/contact-blacklist-rules/email-exceptions. Review the addresses you carved out of your blacklist, each staying contactable despite a domain rule. Paged with top and skip.
replyio_get_v3_contact_blacklist_rules_email_exceptions_by_idREADGet an email exception blacklist rule. GET /v3/contact-blacklist-rules/email-exceptions/{id}. Get one email exception rule by id with the address it keeps contactable. Only your own exceptions resolve here.
replyio_get_v3_contact_blacklist_rules_emailsREADList email blacklist rules. GET /v3/contact-blacklist-rules/emails. Review the email rules in force for you, each blocking a single address rather than a domain. Paged with top and skip.
replyio_get_v3_contact_blacklist_rules_emails_by_idREADGet an email blacklist rule. GET /v3/contact-blacklist-rules/emails/{id}. Get one email blacklist rule by id with the address it blocks. isGlobal tells you if it's yours or a Reply platform rule.
replyio_get_v3_contact_listsREADList contact lists. GET /v3/contact-lists. Browse the contact lists you own plus any shared with your team. Paged with top and skip, with an optional name search.
replyio_get_v3_contact_lists_by_idREADGet a contact list. GET /v3/contact-lists/{id}. Get one contact list by id, including its name and whether it is shared with your team.
replyio_get_v3_contactsREADList all contacts. GET /v3/contacts. Browse your contacts or look one up by exact email or LinkedIn URL. Paged with the top and skip query parameters.
replyio_get_v3_contacts_by_idREADGet a contact. GET /v3/contacts/{id}. Get the full record for one contact by id: profile fields, owner, opt-out, call and meeting status, and custom fields.
replyio_get_v3_contacts_by_id_activitiesREADGet activities for a contact. GET /v3/contacts/{id}/activities. Get a contact's activity history — emails, calls, status changes, and other tracked events. Paged with top and skip.
replyio_get_v3_contacts_by_id_inbox_threadsREADGet inbox threads for a contact. GET /v3/contacts/{id}/inbox-threads. Get the email conversation threads exchanged with a contact, grouped as they appear in your inbox. Paged with top and skip.
replyio_get_v3_contacts_by_id_listsREADGet contact's lists. GET /v3/contacts/{id}/lists. See which contact lists a contact belongs to, including each list's name and whether it's shared with your team.
replyio_get_v3_contacts_by_id_sequencesREADGet sequences for a contact. GET /v3/contacts/{id}/sequences. See which sequences a contact is in, with each sequence's name, their status, the current step, and when they were added.
replyio_get_v3_contacts_by_id_statusesREADGet a contact's statuses. GET /v3/contacts/{id}/statuses. Check where a contact stands: global opt-out, call and meeting flags, plus their status in each sequence they're enrolled in.
replyio_get_v3_custom_fieldsREADList all custom fields. GET /v3/custom-fields. Get every custom field your contacts can carry, for your team and your organization. One flat array, no paging.
replyio_get_v3_custom_fields_by_idREADGet a custom field. GET /v3/custom-fields/{id}. Get one custom field definition by id: its title, its text or number type, its metadata, and whether it's org-wide.
replyio_get_v3_email_accountsREADList email accounts. GET /v3/email-accounts. Browse the email accounts you can send from. Pass my=true to see only your own. Paged with top and skip.
replyio_get_v3_email_accounts_by_idREADGet an email account. GET /v3/email-accounts/{id}. Get one email account in full: connection, safety, signature, opt-out and ramp-up settings, tags, and connection status.
replyio_get_v3_email_accounts_by_id_statsREADGet email account stats. GET /v3/email-accounts/{id}/stats. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. See how much sending capacity one email account has left: sent today, the daily limit, and the all-time total.
replyio_get_v3_email_accounts_connect_gmailREADConnect Gmail account via OAuth. GET /v3/email-accounts/connect/gmail. Start connecting a Gmail mailbox. Returns a 302 to Google's consent screen, so follow it in a browser, not a backend client. Returns the consent URL (as authorization_url) instead of following the redirect: open it in a browser signed in as the mailbox owner.
replyio_get_v3_email_accounts_connect_office_365READConnect Office 365 account via OAuth. GET /v3/email-accounts/connect/office-365. Start connecting an Office 365 or Outlook mailbox. Returns a 302 to Microsoft's consent screen — follow it in a browser. Returns the consent URL (as authorization_url) instead of following the redirect: open it in a browser signed in as the mailbox owner.
replyio_get_v3_email_accounts_procurement_domains_availableREADFind available procurement domains. GET /v3/email-accounts/procurement/domains/available. Documented by Reply.io as coming soon (available by late September 2026); it may not answer yet. Domain names available to buy for mailbox procurement, with purchase and renewal prices in cents. Search one label in domainName against up to 5 TLDs in tlds (com, net, org, biz, live).
replyio_get_v3_email_accounts_tagsREADList email account tags. GET /v3/email-accounts/tags. Get the email account tags available to you, each with its id, name, and color. Tags are referenced by name.
replyio_get_v3_email_template_foldersREADList email template folders. GET /v3/email-template-folders. Get every folder available for organizing email templates — personal, team, community, and organization — in one array.
replyio_get_v3_email_template_folders_by_idREADGet an email template folder. GET /v3/email-template-folders/{id}. Get one email template folder by id. The foldertype query parameter is required: personal, team, community, or organization.
replyio_get_v3_email_templatesREADList email templates. GET /v3/email-templates. Browse the email templates you can use: your own, your team's, and any shared with you. Paged with top and skip.
replyio_get_v3_email_templates_by_idREADGet an email template. GET /v3/email-templates/{id}. Get one email template in full: name, subject, body, folder, attachments, and its created and updated timestamps.
replyio_get_v3_email_templates_variablesREADGet template variables. GET /v3/email-templates/variables. Get the variables you can place in a template subject or body, grouped by category, each with its key and what it fills in.
replyio_get_v3_holiday_calendarsREADList holiday calendars. GET /v3/holiday-calendars. See which holiday calendars you can link to a schedule — your team's custom ones plus Reply's country calendars.
replyio_get_v3_holiday_calendars_by_idREADGet a holiday calendar. GET /v3/holiday-calendars/{id}. Get one holiday calendar in full: name, type, country code, the repeat setting, and every holiday with its dates.
replyio_get_v3_holiday_calendars_by_id_export_csvREADExport a holiday calendar as CSV. GET /v3/holiday-calendars/{id}/export-csv. Download a holiday calendar as CSV, listing each holiday's name and dates as yyyy-MM-dd. The file is named after it.
replyio_get_v3_inbox_threadsREADList inbox threads. GET /v3/inbox/threads. Browse your inbox — email and LinkedIn conversations with contacts, most recently active first. Paged with top and skip.
replyio_get_v3_inbox_threads_by_idREADGet inbox thread. GET /v3/inbox/threads/{id}. Get one conversation in full, with its message history in order. Use the messages endpoint to page a long exchange.
replyio_get_v3_inbox_threads_by_id_messagesREADList messages in an inbox thread. GET /v3/inbox/threads/{id}/messages. Page through one conversation's messages, oldest first. Email messages carry recipient and subject; LinkedIn ones don't.
replyio_get_v3_inbox_threads_categoriesREADList inbox categories. GET /v3/inbox/threads/categories. Get the categories you can file conversations under, including Reply's reserved ones, each with its unread count.
replyio_get_v3_inbox_threads_categories_by_idREADGet inbox category. GET /v3/inbox/threads/categories/{id}. Get one inbox category by id: its name, color, whether it's reserved by Reply, and its current unread thread count.
replyio_get_v3_linkedin_accountsREADList LinkedIn accounts. GET /v3/linkedin-accounts. Get the LinkedIn accounts connected to Reply, with connection state and automation limits. One call, no paging.
replyio_get_v3_linkedin_accounts_by_idREADGet a LinkedIn account. GET /v3/linkedin-accounts/{id}. Get one connected LinkedIn account in full: profile, account and cookie status, daily usage, limits, and revoke settings.
replyio_get_v3_linkedin_accounts_pendingREADList pending LinkedIn accounts. GET /v3/linkedin-accounts/pending. Track LinkedIn accounts invited by link but not yet connected, with the link, its expiry, and whether it has expired.
replyio_get_v3_live_data_filter_values_departmentsREADDepartments typeahead. GET /v3/live-data/filter-values/departments. Get the department names a Live Data search can filter on. Each is a plain string you pass in the departments filter.
replyio_get_v3_live_data_filter_values_industriesREADLive Data industries typeahead. GET /v3/live-data/filter-values/industries. Get the industry names a Live Data search can filter on. Each is a plain string you pass in the industries filter.
replyio_get_v3_live_data_filter_values_job_titlesREADJob titles typeahead. GET /v3/live-data/filter-values/job-titles. Get the job titles a Live Data search can filter on. Each is a plain string you pass in the jobTitles filter.
replyio_get_v3_live_data_filter_values_locationsREADLocations typeahead. GET /v3/live-data/filter-values/locations. Get the place names a Live Data search can filter on. Mixes countries, regions, and cities, with no separate country list.
replyio_get_v3_live_data_filter_values_senioritiesREADSeniorities typeahead. GET /v3/live-data/filter-values/seniorities. Get the seniority levels a Live Data search can filter on. This filter takes a plain array of strings, unlike the others.
replyio_get_v3_live_data_searchesREADList Live Data searches. GET /v3/live-data/searches. Get the Live Data searches your team has run, newest first, each with status, contacts found, and credits used.
replyio_get_v3_live_data_searches_by_idREADGet a Live Data search. GET /v3/live-data/searches/{id}. Get one Live Data search by id — status, contacts found, credits used, target sequence and lists, plus its filters.
replyio_get_v3_schedulesREADList schedules. GET /v3/schedules. Get every schedule your team can use. A schedule sets the weekday windows a sequence may send in. One call, no paging.
replyio_get_v3_schedules_by_idREADGet a schedule. GET /v3/schedules/{id}. Get one schedule in full: its time zone, main and follow-up windows, and the flags controlling how they apply.
replyio_get_v3_schedules_by_id_holiday_calendarsREADList linked holiday calendars. GET /v3/schedules/{id}/holiday-calendars. See which holiday calendars are attached to a schedule, each in short form with its id, name, type, and country code.
replyio_get_v3_sequence_foldersREADList all sequence folders. GET /v3/sequence-folders. Get the folders you have for organizing sequences, sorted by name, in one array. Folders are personal to you.
replyio_get_v3_sequence_folders_by_idREADGet a sequence folder. GET /v3/sequence-folders/{id}. Get one sequence folder by id, with its name. Folders are personal, so someone else's id reports not found.
replyio_get_v3_sequence_folders_by_id_sequencesREADList sequences in a folder. GET /v3/sequence-folders/{id}/sequences. See which sequences are filed in a folder. Paged with top and skip, sortable by title, created, or people.
replyio_get_v3_sequence_templatesREADList all sequence templates. GET /v3/sequence-templates. See which sequence templates you can start a new sequence from. A blueprint for a whole sequence, not an email template.
replyio_get_v3_sequencesREADList all sequences. GET /v3/sequences. Browse the sequences you can work with. Paged with top and skip, and filterable by status, owner, folder, and name.
replyio_get_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_ai_insightsREADGet AI insights for a contact. GET /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/ai-insights. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Get the AI SDR insights summary for one contact in one sequence. Returns a single Markdown field, ready to render as-is. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_get_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approvalREADGet pending approval for a contact. GET /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/approval. Review one queued draft before you act on it. It's addressed by sequence and contact id — there is no separate approval id.
replyio_get_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseREADGet the sequence's knowledge base. GET /v3/sequences/ai-sdr/{sequence_id}/knowledge-base. See which knowledge base the AI SDR draws on for this sequence. Reports not found when none is connected.
replyio_get_v3_sequences_ai_sdr_by_sequence_id_playbookREADGet the sequence's playbook. GET /v3/sequences/ai-sdr/{sequence_id}/playbook. See which playbook the AI SDR follows for this sequence, with its id, name, and whether it's global, organization, or team.
replyio_get_v3_sequences_ai_sdr_by_sequence_id_settingsREADRead AI SDR sequence settings. GET /v3/sequences/ai-sdr/{sequence_id}/settings. Read one sequence's AI SDR settings: offer context, tone, LLM, step types, intent signals, playbook, and approval mode.
replyio_get_v3_sequences_by_idREADGet a sequence. GET /v3/sequences/{id}. Get one sequence in full: name, status, owner, schedule, settings, connected accounts, and its complete list of steps.
replyio_get_v3_sequences_by_id_contactsREADList contacts in sequence. GET /v3/sequences/{id}/contacts. See who's enrolled in a sequence and where each stands: status, current step, added date, opt-out, and call status.
replyio_get_v3_sequences_by_id_contacts_by_contact_idREADGet a contact in a sequence. GET /v3/sequences/{id}/contacts/{contact_id}. Get one contact's state inside a sequence: status, the step they're waiting on, when they were added, and opt-out.
replyio_get_v3_sequences_by_id_contacts_countREADCount contacts in sequence. GET /v3/sequences/{id}/contacts/count. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Count the contacts enrolled in a sequence — useful for sizing a paging loop before walking the list endpoint.
replyio_get_v3_sequences_by_id_contacts_stateREADList contacts in sequence with extended state. GET /v3/sequences/{id}/contacts/state. Get a compact view of a sequence's contacts, adding only the extra columns you ask for via additionalColumns.
replyio_get_v3_sequences_by_id_email_accountsREADList email accounts in sequence. GET /v3/sequences/{id}/email-accounts. See which email accounts a sequence sends from, each with its address, sender name, daily limit, and connection status.
replyio_get_v3_sequences_by_id_linkedin_accountsREADList LinkedIn accounts for a sequence. GET /v3/sequences/{id}/linkedin-accounts. See which LinkedIn accounts a sequence sends its LinkedIn steps from, each with its id, name, profile URL, and status.
replyio_get_v3_sequences_by_id_stepsREADList all sequence steps. GET /v3/sequences/{id}/steps. Get every step in a sequence. Read type first to know the shape, and parentId to see how the steps chain together.
replyio_get_v3_sequences_by_id_steps_by_step_idREADGet a sequence step. GET /v3/sequences/{id}/steps/{step_id}. Get one step of a sequence by id. Read type — and actionType for linkedIn — to know which other fields to expect.
replyio_get_v3_sequences_by_id_steps_by_step_id_variantsREADList step variants. GET /v3/sequences/{id}/steps/{step_id}/variants. Get the variants a step rotates between, each with its subject, message, enabled flag, and whether it has attachments.
replyio_get_v3_sequences_by_sequence_id_contacts_by_contact_id_previewREADGet sequence preview for a contact. GET /v3/sequences/{sequence_id}/contacts/{contact_id}/preview. See the messages one contact will receive from a sequence, rendered with their own data, one entry per messaging step.
replyio_get_v3_sequences_countREADCount sequences. GET /v3/sequences/count. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Count the sequences matching a filter without fetching them. Takes the same filters as the list endpoint.
replyio_get_v3_sequences_steps_contact_filter_propertiesREADList contact filter properties. GET /v3/sequences/steps/contact-filter-properties. See which contact properties a condition step can test, with the operators each accepts and any allowed values.
replyio_get_v3_settingsREADGet settings. GET /v3/settings. Read your settings in one call: profile and time zone, email and inbox preferences, and the team-wide values you work under.
replyio_get_v3_tasksREADList all tasks. GET /v3/tasks. Work through your to-do list — your own tasks, plus teammates' when your role allows. Each carries type, status, and dates.
replyio_get_v3_tasks_by_idREADGet a task. GET /v3/tasks/{id}. Get everything about one task: type, status, the contact, the sequence step it came from, its dates, and its assignee.
replyio_get_v3_webhooksREADList webhook subscriptions. GET /v3/webhooks. See the webhook subscriptions you've set up, each with its event, url, scope, enabled flag, and payload flags.
replyio_get_v3_webhooks_by_idREADGet a webhook subscription. GET /v3/webhooks/{id}. Get one subscription by id: the event it listens to, its url, scope, enabled flag, creation date, and payload flags.
replyio_get_v3_webhooks_by_id_logsREADGet webhook delivery logs. GET /v3/webhooks/{id}/logs. See where deliveries went wrong. Only failed attempts are logged, each with the event id, HTTP status, and date.
replyio_get_v3_webhooks_eventsREADList supported event types. GET /v3/webhooks/events. Get the exact event names a subscription can listen to. Any value here works as eventType when you create or update one.
replyio_get_v3_whoamiREADGet current user. GET /v3/whoami. See which user an API key acts as — its userId, username, and teamId. The quickest way to confirm a key is valid.
replyio_get_v3_whoami_team_usersREADList team users. GET /v3/whoami/team-users. List the users you work with, pairing each with their team. Handy for turning a userId into a name and email address.
replyio_patch_v3_ai_sdr_knowledge_bases_by_idWRITEUpdate a knowledge base. PATCH /v3/ai-sdr/knowledge-bases/{id}. Rename a knowledge base or change its standing instructions. Send only what you're changing; at least one field is required.
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idWRITEUpdate a reengagement card. PATCH /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards/{reengagement_card_id}. Use this endpoint when you need to adjust a reengagement card — retime it, reword its instructions, or switch it on and off with isEnabled. Send only the fields you want to change; at least one of name, instructions, sampleAnswer, sendAfter, toneOfVoice, responseLength, links, isEnabled and deliveryMode must be present, and the same limits apply as on create. Media is not changed here — attach and remove files through the card's media sub-resource.
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_idWRITEUpdate a reengagement flow. PATCH /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}. Use this endpoint when you need to rename a reengagement flow or change its description. Send only the fields you want to change; at least one of name and description must be present. name must be non-empty, at most 256 characters and still unique within the knowledge base; description accepts up to 512 characters. The updated flow is returned. The cards in the flow are unaffected. The AI SDR feature must be enabled for your team.
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idWRITEUpdate a reply handler. PATCH /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers/{reply_handler_id}. Use this endpoint when you need to adjust how the AI SDR agent answers a kind of reply. Send only the fields you want to change; at least one of typeOfQuestion, instructions, sampleAnswer, toneOfVoice, responseLength, links, deliveryMode and additionalNotificationEmail must be present, and the same limits apply as on create. Switching deliveryMode to stopAndNotify requires that mode to be enabled for your team, and moving the handler off stopAndNotify clears additionalNotificationEmail.
replyio_patch_v3_ai_sdr_offers_by_idWRITEUpdate an offer. PATCH /v3/ai-sdr/offers/{id}. Use this endpoint when you need to change part of an existing offer without resending all of it. Send only the fields you want to change — at least one must be present, and every field you leave out keeps its current value. A list field you do send replaces the whole list, so include every entry you want to keep; each list accepts up to 10 non-empty entries of at most 1000 characters, and any text you send may reference only the template variables your account recognizes.
replyio_patch_v3_ai_sdr_playbooks_by_idWRITEUpdate a playbook. PATCH /v3/ai-sdr/playbooks/{id}. Change part of a playbook without resending it all. Send at least one of name, description, and body; type cannot change.
replyio_patch_v3_contacts_by_idWRITEUpdate a contact. PATCH /v3/contacts/{id}. Change specific fields on a contact without resending the whole record. Omitted fields stay as they are; null clears one.
replyio_patch_v3_email_accounts_by_idWRITEUpdate an email account. PATCH /v3/email-accounts/{id}. Change specific settings on an email account without resending the whole record. Only the sections you include are updated.
replyio_patch_v3_sequences_ai_sdr_by_sequence_id_settingsWRITEUpdate AI SDR sequence settings. PATCH /v3/sequences/ai-sdr/{sequence_id}/settings. Change part of a sequence's AI SDR settings. offerId and offerGenerationInputs are mutually exclusive; send at least one field.
replyio_patch_v3_sequences_by_idWRITEUpdate a sequence. PATCH /v3/sequences/{id}. Change part of a sequence and leave the rest. settings merges key by key; account lists replace what's there.
replyio_patch_v3_settingsWRITEUpdate settings. PATCH /v3/settings. Change part of your settings without resending the whole object. Anything you leave out stays exactly as it is.
replyio_post_v3_ai_promptsWRITECreate a personal AI prompt. POST /v3/ai-prompts. Save your own AI prompt for a sequence step type so you can reuse it. The name must be unique among your personal prompts.
replyio_post_v3_ai_prompts_preview_linkedin_postWRITEPreview a comment prompt against a LinkedIn post. POST /v3/ai-prompts/preview/linkedin-post. Test a comment prompt against a real person's latest LinkedIn post. The response shows which post the comment was written for.
replyio_post_v3_ai_prompts_preview_sampleWRITEPreview a comment prompt against a sample post. POST /v3/ai-prompts/preview/sample. Try a comment prompt against a generic sample post. Nothing is fetched from LinkedIn and no Reply credits are spent.
replyio_post_v3_ai_sdr_approvals_send_bulkWRITESend a batch of pending approvals. POST /v3/ai-sdr/approvals/send-bulk. Use this endpoint when you need to approve and send several queued drafts in one call. Pass items as a list of at most 20 sequenceId and contactId pairs, each identifying one pending approval. The batch is all or nothing: every pair is matched to a pending approval before anything is sent, and if any of them has none, nothing is sent and the response names the pairs that could not be matched. Sends to real recipients.
replyio_post_v3_ai_sdr_knowledge_basesWRITECreate a knowledge base. POST /v3/ai-sdr/knowledge-bases. Create a knowledge base for the AI SDR to write from. Only the name is required; instructions add up to 2000 characters of guidance.
replyio_post_v3_ai_sdr_knowledge_bases_by_id_duplicateWRITEDuplicate a knowledge base. POST /v3/ai-sdr/knowledge-bases/{id}/duplicate. Copy a knowledge base with its documents, links, reply handlers, and reengagement cards, so you can adapt it safely.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_linksWRITEAdd a link. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/links. Add a web page to a knowledge base so the AI SDR can draw on it. The URL is required and capped at 256 characters.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cardsWRITECreate a reengagement card. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-cards. Create a follow-up for contacts who stop replying. Name, instructions, and sendAfter are required — sendAfter is days of silence.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flowsWRITECreate a reengagement flow. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows. Use this endpoint when you need a follow-up track alongside the ones a knowledge base already has — a gentler cadence for VIP contacts, say. name is required, must be unique within the knowledge base and is limited to 256 characters; description is optional and limited to 512. The created flow is returned with its id and starts out empty — add cards to it by passing that id as flowId when you create a reengagement card. The AI SDR feature must be enabled for your team.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_assignWRITEAssign a reengagement flow to a contact. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}/assign. Use this endpoint when you need to move one contact onto a specific reengagement flow — after a conversation suggests a different follow-up track, for instance. Provide sequenceId and contactId in the body, both positive; the flow must belong to this knowledge base and the sequence must already be connected to it, otherwise the call is rejected as not found. The assignment resets the contact's reengagement timing and returns 204 with no body. The AI SDR feature must be enabled for your team.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_duplicateWRITEDuplicate a reengagement flow. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}/duplicate. Copy a reengagement flow along with its cards. The copy is created as a non-default flow in the same knowledge base.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_set_defaultWRITESet a reengagement flow as default. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reengagement-flows/{flow_id}/set-default. Make a reengagement flow the default for contacts with none assigned. The previous default loses the role. Returns 204.
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlersWRITECreate a reply handler. POST /v3/ai-sdr/knowledge-bases/{knowledge_base_id}/reply-handlers. Tell the AI SDR how to handle one recurring kind of reply. The question type and instructions are required; a sample answer helps.
replyio_post_v3_ai_sdr_offersWRITECreate an offer. POST /v3/ai-sdr/offers. Create an offer to hold the company context your AI SDR outreach draws on. Only the name is required, up to 200 characters.
replyio_post_v3_ai_sdr_offers_by_id_duplicateWRITEDuplicate an offer. POST /v3/ai-sdr/offers/{id}/duplicate. Copy an offer so you can adapt a proven one to a new segment. The copy carries the same company context as the original.
replyio_post_v3_ai_sdr_offers_generateWRITEGenerate an offer. POST /v3/ai-sdr/offers/generate. Have the AI SDR draft an offer from a company URL or a brief, instead of filling in the context by hand. Runs in the background.
replyio_post_v3_ai_sdr_playbooksWRITECreate a playbook. POST /v3/ai-sdr/playbooks. Create a playbook holding the tone, voice, and writing guidance your AI SDR follows. Name, description, body, and type are required.
replyio_post_v3_ai_sdr_playbooks_by_id_duplicateWRITEDuplicate a playbook. POST /v3/ai-sdr/playbooks/{id}/duplicate. Copy a playbook so you can adapt it to a new segment. Any playbook you can read works as the source, including a global one.
replyio_post_v3_ai_sdr_strategist_startWRITEStart a strategist run. POST /v3/ai-sdr/strategist/start. Have the AI Strategist think up outreach ideas for a company and build a sequence from each. Runs in the background.
replyio_post_v3_ai_web_search_startWRITEStart an AI web search. POST /v3/ai-web-search/start. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Have Reply find new contacts for a sequence by searching the web with AI. Runs in the background and returns once accepted. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_background_jobs_by_jobid_cancelWRITECancel a background job. POST /v3/background-jobs/{jobId}/cancel. Stop a background job that is no longer worth finishing. Returns 204, and you can record an optional reason for stopping it.
replyio_post_v3_contact_account_listsWRITECreate an account list. POST /v3/contact-account-lists. Create an account list to group companies under. The name must be 3 to 128 characters and unique within your team.
replyio_post_v3_contact_account_lists_by_id_add_accountsWRITEAdd accounts to an account list. POST /v3/contact-account-lists/{id}/add-accounts. Add accounts to a list while keeping their other list memberships. Up to 1000 ids per call. Use move-accounts to make it their only list.
replyio_post_v3_contact_account_lists_by_id_move_accountsWRITEMove accounts to an account list. POST /v3/contact-account-lists/{id}/move-accounts. Move accounts into a list and out of every other list. Up to 1000 ids per call. Use add-accounts to keep their memberships.
replyio_post_v3_contact_accountsWRITECreate an account. POST /v3/contact-accounts. Register a company as an account that contacts can link to. Only name is required; every other company field is optional.
replyio_post_v3_contact_accounts_bulkWRITEBulk create accounts. POST /v3/contact-accounts/bulk. Create up to 100 accounts in one call. If any item fails validation the whole request is rejected before anything is created.
replyio_post_v3_contact_accounts_bulk_deleteWRITEBulk delete accounts. POST /v3/contact-accounts/bulk-delete. Delete up to 1000 accounts in one call. The ones you may delete go through; the response lists only the ids that did not.
replyio_post_v3_contact_accounts_by_id_contact_links_bulkWRITEBulk add contacts to an account. POST /v3/contact-accounts/{id}/contact-links/bulk. Link up to 1000 contacts to an account in one call. A contact belongs to one account, so any already linked elsewhere is moved.
replyio_post_v3_contact_accounts_by_id_contact_links_bulk_deleteWRITEBulk remove contacts from an account. POST /v3/contact-accounts/{id}/contact-links/bulk-delete. Unlink up to 1000 contacts from an account without deleting them. Each one loses the company details it inherited.
replyio_post_v3_contact_accounts_filterWRITEFilter accounts. POST /v3/contact-accounts/filter. Get a narrower set of accounts than plain listing. Search by name or domain, scope to one list, and add up to 20 conditions.
replyio_post_v3_contact_blacklist_rules_domainsWRITECreate a domain blacklist rule. POST /v3/contact-blacklist-rules/domains. Stop contacting everyone at a domain. Send the bare domain such as example.com — no scheme, no address.
replyio_post_v3_contact_blacklist_rules_domains_bulkWRITEBulk create domain blacklist rules. POST /v3/contact-blacklist-rules/domains/bulk. Block several domains in one call. Every pattern is checked first, so one malformed domain rejects the whole request.
replyio_post_v3_contact_blacklist_rules_domains_bulk_deleteWRITEBulk delete domain blacklist rules. POST /v3/contact-blacklist-rules/domains/bulk-delete. Lift several domain blocks at once. The ones that can go are deleted; the response lists only the ids that were not.
replyio_post_v3_contact_blacklist_rules_email_exceptionsWRITECreate an email exception blacklist rule. POST /v3/contact-blacklist-rules/email-exceptions. Keep one address contactable even though a domain rule blocks the rest of its domain. Send a full email address.
replyio_post_v3_contact_blacklist_rules_email_exceptions_bulkWRITEBulk create email exception blacklist rules. POST /v3/contact-blacklist-rules/email-exceptions/bulk. Carve several addresses out of your blacklist at once. One malformed address rejects the whole request before anything is stored.
replyio_post_v3_contact_blacklist_rules_email_exceptions_bulk_deleteWRITEBulk delete email exception blacklist rules. POST /v3/contact-blacklist-rules/email-exceptions/bulk-delete. Withdraw several exceptions at once, putting their addresses back under your blacklist. Only failed ids come back.
replyio_post_v3_contact_blacklist_rules_emailsWRITECreate an email blacklist rule. POST /v3/contact-blacklist-rules/emails. Stop contacting one address while the rest of its domain stays reachable. Send a full email address as the pattern.
replyio_post_v3_contact_blacklist_rules_emails_bulkWRITEBulk create email blacklist rules. POST /v3/contact-blacklist-rules/emails/bulk. Block several addresses in one call. Every pattern is checked first, so one malformed address rejects the whole request.
replyio_post_v3_contact_blacklist_rules_emails_bulk_deleteWRITEBulk delete email blacklist rules. POST /v3/contact-blacklist-rules/emails/bulk-delete. Unblock several addresses at once. The ones that can go are deleted; the response lists only the ids that were not.
replyio_post_v3_contact_listsWRITECreate a contact list. POST /v3/contact-lists. 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.
replyio_post_v3_contact_lists_by_id_add_contactsWRITEAdd contacts to a contact list. POST /v3/contact-lists/{id}/add-contacts. Add contacts to a list while keeping their other list memberships. Contacts are processed one by one, so partial success sticks.
replyio_post_v3_contact_lists_by_id_move_contactsWRITEMove contacts to a contact list. POST /v3/contact-lists/{id}/move-contacts. Move contacts into a list and out of every other list. Use add-contacts instead to keep their existing memberships.
replyio_post_v3_contact_lists_by_id_shareWRITEShare a contact list. POST /v3/contact-lists/{id}/share. Make one of your private contact lists visible to the rest of your team. Use the unshare endpoint to reverse it later.
replyio_post_v3_contact_lists_by_id_unshareWRITEUnshare a contact list. POST /v3/contact-lists/{id}/unshare. Take a shared contact list out of team visibility and make it private to you again.
replyio_post_v3_contactsWRITECreate a contact. POST /v3/contacts. Add a single contact to your account with any profile and custom fields you have. Returns the contact with its new id.
replyio_post_v3_contacts_bulk_deleteWRITEBulk delete contacts. POST /v3/contacts/bulk-delete. Delete several contacts in one call. Each is handled on its own, and the response maps any skipped contact to its reason.
replyio_post_v3_contacts_by_id_move_to_sequenceWRITEMove a contact to a sequence. POST /v3/contacts/{id}/move-to-sequence. Enroll a contact into a different sequence. Set removeFromExisting to true to take them out of their current one.
replyio_post_v3_contacts_by_id_notesWRITEAdd a note to a contact. POST /v3/contacts/{id}/notes. Record context, call summaries, or reminders on a contact's timeline, so your whole team works from the same history.
replyio_post_v3_contacts_by_id_send_direct_emailWRITESend a direct email to a contact. POST /v3/contacts/{id}/send-direct-email. Send a one-off email to a contact outside any sequence, from a connected account. The reply is still tracked on the contact. Sends to real recipients.
replyio_post_v3_contacts_by_id_send_direct_linkedin_ai_voiceWRITESend an AI-generated LinkedIn voice message to a contact. POST /v3/contacts/{id}/send-direct-linkedin-ai-voice. Turn a written script into a voice message and send it on LinkedIn. The sending account needs a voice profile. Sends to real recipients.
replyio_post_v3_contacts_by_id_send_direct_linkedin_connectWRITESend a LinkedIn connection request to a contact. POST /v3/contacts/{id}/send-direct-linkedin-connect. Invite a contact to connect on LinkedIn outside any sequence. Pass the connected account to send from, plus an optional note. Sends to real recipients.
replyio_post_v3_contacts_by_id_send_direct_linkedin_inmailWRITESend a LinkedIn InMail to a contact. POST /v3/contacts/{id}/send-direct-linkedin-inmail. Reach a contact you aren't connected with via LinkedIn InMail. The sending account needs Sales Navigator and InMail credits. Sends to real recipients.
replyio_post_v3_contacts_by_id_send_direct_linkedin_messageWRITESend a LinkedIn message to a contact. POST /v3/contacts/{id}/send-direct-linkedin-message. Send a one-off LinkedIn message to a contact you're already connected with, from one of your connected accounts. Sends to real recipients.
replyio_post_v3_contacts_by_id_send_direct_linkedin_voiceWRITESend a LinkedIn voice message to a contact. POST /v3/contacts/{id}/send-direct-linkedin-voice. Send a recorded voice message on LinkedIn. Upload the audio first and pass the id it returns as voiceAttachmentId. Sends to real recipients.
replyio_post_v3_contacts_enrich_ai_custom_fieldsWRITEFill AI custom fields. POST /v3/contacts/enrich-ai-custom-fields. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Have AI generate the values for the AI custom fields you configured, rather than looking data up from an email or profile. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_contacts_enrich_by_emailWRITEEnrich contacts by email. POST /v3/contacts/enrich-by-email. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Fill in missing details on contacts that already have an email address. Contacts without one need the find-emails endpoint. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_contacts_enrich_by_linkedinWRITEEnrich contacts by LinkedIn URL. POST /v3/contacts/enrich-by-linkedin. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Enrich contacts from their LinkedIn profile URL, optionally looking up a missing email and phone number in the same pass. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_contacts_filterWRITEFilter contacts. POST /v3/contacts/filter. 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. Results are paged with the top and skip query parameters. To get only the total for the same criteria, use filter/count.
replyio_post_v3_contacts_filter_countWRITECount filtered contacts. POST /v3/contacts/filter/count. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Use this endpoint when you need only the number of contacts that match a set of filter criteria — for example to show a total or decide whether to page through the results — without fetching the contacts themselves. It accepts the same request body as the filter endpoint.
replyio_post_v3_contacts_find_emailsWRITEFind missing email addresses. POST /v3/contacts/find-emails. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Find email addresses for contacts that don't have one yet. Contacts that already have an address are left alone. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_contacts_find_phonesWRITEFind phone numbers. POST /v3/contacts/find-phones. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Find phone numbers for your contacts. Accepted straight away, with the search running in the background. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_contacts_importWRITEImport contacts. POST /v3/contacts/import. Add or update many contacts in one call, each item requiring firstName. Options control deduplication, overwrite, and list assignment.
replyio_post_v3_contacts_set_bouncedWRITEMark or unmark contacts as bounced. POST /v3/contacts/set-bounced. Record bounces detected outside Reply across every sequence a contact is in. Marking as bounced stops further steps.
replyio_post_v3_contacts_set_opted_outWRITEOpt contacts out or clear their opt-out. POST /v3/contacts/set-opted-out. Documented by Reply.io as coming soon (available by early September 2026); it may not answer yet. Opt contacts out of all outreach, or clear the flag. Opting out finishes them in every sequence they're in. The contact_opted_out webhook fires once per enrolled sequence, and not at all for a contact in no sequence.
replyio_post_v3_contacts_set_repliedWRITEMark or unmark contacts as replied. POST /v3/contacts/set-replied. Record replies captured outside Reply, in another inbox or CRM, across every sequence a contact is in. Stops further steps.
replyio_post_v3_contacts_set_status_in_sequenceWRITESet contacts' in-sequence status. POST /v3/contacts/set-status-in-sequence. Set contacts to active, paused, finished, or outOfOffice across every sequence they're in. Replied and bounced are separate.
replyio_post_v3_custom_fieldsWRITECreate a custom field. POST /v3/custom-fields. Track something on contacts that Reply doesn't capture by default. Provide a title and a text or number field type.
replyio_post_v3_email_accountsWRITECreate an email account. POST /v3/email-accounts. Connect a custom SMTP or IMAP mailbox. Gmail and Office 365 use their own OAuth connect endpoints instead.
replyio_post_v3_email_accounts_bulk_deleteWRITEBulk delete email accounts. POST /v3/email-accounts/bulk-delete. Disconnect several email accounts in one call. Successful deletions stick; the response returns only the ids that failed.
replyio_post_v3_email_accounts_by_id_resume_sendingWRITEResume sending. POST /v3/email-accounts/{id}/resume-sending. Clear a provider lock so an email account picks its sequences back up. Check sendingLockedByProvider first.
replyio_post_v3_email_accounts_by_id_set_defaultWRITESet default email account. POST /v3/email-accounts/{id}/set-default. Choose which email account Reply pre-selects for sending. Exactly one is default, so this clears the flag on the last one.
replyio_post_v3_email_accounts_by_id_tagsWRITEAdd tags to an email account. POST /v3/email-accounts/{id}/tags. Label an email account so you can group or filter by it. Tags go by name, and any name that doesn't exist yet is created.
replyio_post_v3_email_accounts_filterWRITEFilter email accounts. POST /v3/email-accounts/filter. Find email accounts by status, provider, address, domain, owner, or tag. Every field is optional; an empty body matches all.
replyio_post_v3_email_accounts_procurement_domains_estimateWRITEEstimate a domain order. POST /v3/email-accounts/procurement/domains/estimate. Documented by Reply.io as coming soon (available by late September 2026); it may not answer yet. Price breakdown for a domain and its mailboxes before you order — per-seat unit prices, subtotal, discount and total, all in cents. Send serviceProvider (google or microsoft) and domain.mailboxes with 1 to 5 entries.
replyio_post_v3_email_accounts_procurement_domains_purchaseWRITEBuy a domain with mailboxes. POST /v3/email-accounts/procurement/domains/purchase. Documented by Reply.io as coming soon (available by late September 2026); it may not answer yet. Orders a domain and the mailboxes that send from it. Send serviceProvider (google or microsoft) and domain.mailboxes with 1 to 5 entries, exactly one with isAdmin true. Returns a jobId — poll GET /v3/background-jobs/{jobId} for the outcome. Places a real, billed order on the Reply.io account.
replyio_post_v3_email_accounts_procurement_usersWRITERegister The Procurement User. POST /v3/email-accounts/procurement/users. Documented by Reply.io as coming soon (available by late September 2026); it may not answer yet. Contact details and postal address that domain registrations are filed under. Register once per team — the other Mailbox Procurement endpoints return 403 until you do.
replyio_post_v3_email_accounts_statsWRITEFilter email account stats. POST /v3/email-accounts/stats. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Get sending stats for a set of email accounts at once — handy for spotting mailboxes near their daily limit.
replyio_post_v3_email_accounts_test_imapWRITETest IMAP connectivity. POST /v3/email-accounts/test/imap. Check IMAP receiving credentials before you commit. Nothing is created or changed, and a failed test still returns 200.
replyio_post_v3_email_accounts_test_smtpWRITETest SMTP connectivity. POST /v3/email-accounts/test/smtp. Check SMTP sending credentials before you commit. Nothing is created or changed, and a failed test still returns 200.
replyio_post_v3_email_template_foldersWRITECreate an email template folder. POST /v3/email-template-folders. Create a folder to group email templates under. Pick personal or team, with names up to 128 characters and unique per type.
replyio_post_v3_email_template_folders_by_id_shareWRITEShare an email template folder. POST /v3/email-template-folders/{id}/share. Move one of your personal template folders, and everything in it, across to your team. No request body needed.
replyio_post_v3_email_templatesWRITECreate an email template. POST /v3/email-templates. Store a reusable email as a template. Name, body, and folderType are required; folderType is personal or team.
replyio_post_v3_email_templates_by_id_cloneWRITEClone an email template. POST /v3/email-templates/{id}/clone. Copy a template so you can change it without touching the original. The copy keeps the folder and is named Copy of…
replyio_post_v3_email_templates_by_id_moveWRITEMove an email template. POST /v3/email-templates/{id}/move. File a template under a different folder. Send folderId with a matching folderType of personal or team; the folder must exist.
replyio_post_v3_email_templates_by_id_renderWRITERender an email template. POST /v3/email-templates/{id}/render. See how a template reads for a particular contact, with their field values filled in. contactId is required.
replyio_post_v3_email_templates_by_id_send_testWRITESend a test email. POST /v3/email-templates/{id}/send-test. See how a template lands in a real inbox. Both the destination address and the sending account id are required. Sends to real recipients.
replyio_post_v3_email_validations_estimateWRITEEstimate email validation. POST /v3/email-validations/estimate. Size and price an email validation run before committing. Nothing is queued and no credits are held. Up to 10,000 contact ids.
replyio_post_v3_email_validations_scheduleWRITESchedule email validation. POST /v3/email-validations/schedule. Start validating specific contacts' email addresses. Up to 10,000 ids; call estimate first for the counts and credit cost.
replyio_post_v3_holiday_calendarsWRITECreate a holiday calendar. POST /v3/holiday-calendars. Build your own holiday calendar from dates you supply. Each entry needs a name, a start date, and an end date.
replyio_post_v3_inbox_threads_bulk_deleteWRITEBulk-delete inbox threads. POST /v3/inbox/threads/bulk-delete. Use this endpoint when you need to permanently remove several inbox conversations in one call. Threads are processed one by one and successful deletions are kept even when others fail; the response returns only the thread ids that were not deleted, each with its error details, so an empty object means everything succeeded. A per-item error is notFound when the thread does not exist, or forbidden when you are not allowed to delete it.
replyio_post_v3_inbox_threads_by_id_ai_draft_feedbackWRITESubmit feedback on a generated AI draft. POST /v3/inbox/threads/{id}/ai-draft/feedback. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Records a thumbs-up / thumbs-down on the AI-generated draft, with optional dislike reasons and a freeform comment. Used as a training signal. Requires the AI SDR feature on the caller's team. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_inbox_threads_by_id_ai_draft_generateWRITEGenerate an AI draft reply. POST /v3/inbox/threads/{id}/ai-draft/generate. Generate an AI-suggested reply for an inbox thread. Each call makes a fresh draft, so it also powers Regenerate. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_inbox_threads_by_id_messagesWRITESend a reply within a thread. POST /v3/inbox/threads/{id}/messages. Reply to a contact inside an existing conversation. The channel in your body must match the thread's, or it's rejected. Sends to real recipients.
replyio_post_v3_inbox_threads_categoriesWRITECreate inbox category. POST /v3/inbox/threads/categories. 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.
replyio_post_v3_inbox_threads_categories_by_id_thread_links_bulkWRITEAssign threads to a category. POST /v3/inbox/threads/categories/{id}/thread-links/bulk. Use this endpoint when you need to file several conversations under this category at once. A thread sits in at most one category, so any earlier category on a supplied thread is replaced. Threads are processed one by one and successful links are kept even when others fail; the response returns only the thread ids that were not linked, each with its error details.
replyio_post_v3_inbox_threads_categories_by_id_thread_links_bulk_deleteWRITEUnassign threads from a category. POST /v3/inbox/threads/categories/{id}/thread-links/bulk-delete. Use this endpoint when you need to take several conversations out of this category. A supplied thread filed under a different category is left alone. The conversations themselves are not deleted. Threads are processed one by one; the response returns only the thread ids that were not unlinked, each with its error details.
replyio_post_v3_inbox_threads_filterWRITEFilter inbox threads. POST /v3/inbox/threads/filter. 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. Results are paged with the top and skip query parameters.
replyio_post_v3_inbox_threads_mark_as_readWRITEMark threads as read. POST /v3/inbox/threads/mark-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. 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. A per-item error is notFound when the thread does not exist, or forbidden when you are not allowed to access it.
replyio_post_v3_inbox_threads_mark_as_unreadWRITEMark threads as unread. POST /v3/inbox/threads/mark-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. A per-item error is notFound when the thread does not exist, or forbidden when you are not allowed to access it.
replyio_post_v3_linkedin_accounts_bulk_deleteWRITEBulk delete LinkedIn accounts. POST /v3/linkedin-accounts/bulk-delete. Disconnect up to 100 LinkedIn accounts in one call. Set force to true to delete accounts still used by sequences.
replyio_post_v3_linkedin_accounts_by_id_reconnectWRITEReconnect a LinkedIn account. POST /v3/linkedin-accounts/{id}/reconnect. Get a fresh connection link for a connected LinkedIn account whose session cookie has expired and stopped working.
replyio_post_v3_linkedin_accounts_by_id_toggle_statusWRITEToggle LinkedIn account status. POST /v3/linkedin-accounts/{id}/toggle-status. Pause or resume LinkedIn automation on one account. The call flips between enabled and disabled and returns the result.
replyio_post_v3_linkedin_accounts_connectWRITECreate a direct connection link. POST /v3/linkedin-accounts/connect. Get a connection link without naming the account up front — the name is captured as the link is completed.
replyio_post_v3_linkedin_accounts_connection_linkWRITECreate a connection link. POST /v3/linkedin-accounts/connection-link. Invite a named LinkedIn account to connect. Returns a link to hand to the profile owner plus the pending account id.
replyio_post_v3_live_data_searchesWRITEStart a Live Data search. POST /v3/live-data/searches. Run a set of Live Data filters and add the people it matches to your contacts. Send filters and contactsCountToAdd.
replyio_post_v3_live_data_searches_previewWRITEPreview a Live Data search. POST /v3/live-data/searches/preview. Size a Live Data audience before spending on it. Nothing is saved and no contacts are added, so you can try combinations.
replyio_post_v3_reporting_callsWRITEList call activity. POST /v3/reporting/calls. Use this endpoint when you need the individual calls behind the calls report rather than its totals — one row per call, oldest first, carrying the team member who made it, the contact and phone number, the start time in your account time zone, the duration, resolution, disposition and direction, plus a link to the recording when you are allowed to listen to your team recordings. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page.
replyio_post_v3_reporting_calls_overviewWRITEGet calls reporting overview. POST /v3/reporting/calls/overview. Use this endpoint when you need call activity for a period rolled up two ways at once — a single total for the whole selection covering calls placed, answered and resolved positively, missed inbound calls, average call duration and calls per answered contact, and the same figures repeated per team member under memberStatistics, keyed by userId. Use the calls endpoint instead when you need the individual call records behind these numbers.
replyio_post_v3_reporting_channel_efficiency_overviewWRITEGet channel efficiency overview. POST /v3/reporting/channel-efficiency/overview. Compare channels for a period: contacts touched, touches across email, SMS, calls, tasks, and LinkedIn, replies, and meetings.
replyio_post_v3_reporting_emailsWRITEList email activity. POST /v3/reporting/emails. 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, 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.
replyio_post_v3_reporting_emails_overviewWRITEGet email reporting overview. POST /v3/reporting/emails/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.
replyio_post_v3_reporting_linkedinWRITEList LinkedIn activity. POST /v3/reporting/linkedin. Use this endpoint when you need the individual LinkedIn actions behind the LinkedIn report rather than its totals — one row per action, oldest first, carrying the action type, the date it happened, the LinkedIn account that performed it, the contact it targeted and the sequence step it came from. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page.
replyio_post_v3_reporting_linkedin_overviewWRITEGet LinkedIn reporting overview. POST /v3/reporting/linkedin/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.
replyio_post_v3_reporting_tasksWRITEList task activity. POST /v3/reporting/tasks. Use this endpoint when you need the individual tasks behind the tasks report rather than its totals — one row per task ordered by due date, carrying the assignee, the task type and its LinkedIn sub-type where one applies, the task status, its description and the contact it concerns. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page.
replyio_post_v3_reporting_tasks_overviewWRITEGet tasks reporting overview. POST /v3/reporting/tasks/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.
replyio_post_v3_reporting_team_performance_meetingsWRITEList meetings. POST /v3/reporting/team-performance/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.
replyio_post_v3_reporting_team_performance_overviewWRITEGet team performance overview. POST /v3/reporting/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.
replyio_post_v3_schedulesWRITECreate a schedule. POST /v3/schedules. Create a sending schedule for your sequences. The name must be unique in your team, and timezoneId takes a Windows time zone id.
replyio_post_v3_schedules_by_id_holiday_calendar_linksWRITELink a holiday calendar to a schedule. POST /v3/schedules/{id}/holiday-calendar-links. Have a schedule observe a holiday calendar. A schedule can hold several, but linking the same one twice is rejected.
replyio_post_v3_schedules_by_id_set_defaultWRITESet default schedule. POST /v3/schedules/{id}/set-default. Pick the schedule your new sequences start with. The default is yours alone and doesn't change what teammates use.
replyio_post_v3_sequence_foldersWRITECreate a sequence folder. POST /v3/sequence-folders. Create a folder to group sequences under. The name is capped at 128 characters and must be unique among yours.
replyio_post_v3_sequence_folders_by_id_sequence_links_bulkWRITEBulk assign sequences to a folder. POST /v3/sequence-folders/{id}/sequence-links/bulk. File up to 1000 sequences into a folder in one call. A sequence belongs to one folder, so this moves it out of any other.
replyio_post_v3_sequence_folders_by_id_sequence_links_bulk_deleteWRITEBulk unassign sequences from a folder. POST /v3/sequence-folders/{id}/sequence-links/bulk-delete. Take up to 1000 sequences out of a folder without deleting them — they stay in your account and become unfiled.
replyio_post_v3_sequencesWRITECreate a sequence. POST /v3/sequences. 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. Omit scheduleId to fall back to your default schedule.
replyio_post_v3_sequences_ai_sdrWRITECreate an AI SDR sequence. POST /v3/sequences/ai-sdr. Create a sequence the AI SDR writes and runs. Seed the company context with exactly one of offerId or offerGenerationInputs.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_disableWRITEDisable autopilot. POST /v3/sequences/ai-sdr/{sequence_id}/autopilot/disable. Stop a sequence looking for new contacts on its own. Existing contacts, filters, and limits stay exactly as they are.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_enableWRITEEnable autopilot. POST /v3/sequences/ai-sdr/{sequence_id}/autopilot/enable. Let a sequence keep finding and adding contacts on its own, using the autopilot filters and limits already saved on it. Sends to real recipients.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_force_startWRITEForce-start an autopilot search. POST /v3/sequences/ai-sdr/{sequence_id}/autopilot/force-start. Start an autopilot contact search now instead of waiting for the next run. Autopilot has to be on or the call is rejected. Sends to real recipients.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_previewWRITEPreview autopilot results. POST /v3/sequences/ai-sdr/{sequence_id}/autopilot/preview. See how many contacts and companies a set of autopilot filters would reach before you commit. Nothing you send is saved.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_feedbackWRITESubmit feedback on a pending approval. POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/approval/feedback. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Use this endpoint when you need to tell the AI SDR whether a queued draft was good, so it can learn from your judgement. Set vote to like or dislike; when the vote is dislike, add dislikeReasons to categorize what was wrong and comment for a freeform explanation. The feedback is recorded against the approval pending for the sequence_id and contact_id in the path, so no draft identifier is needed. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_regenerateWRITERegenerate a pending approval. POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/approval/regenerate. Have the AI SDR write a new message while keeping the contact in the sequence. Pass recommendations to steer the rewrite.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_sendWRITESend a pending approval. POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/approval/send. Approve and send one contact's queued draft. Leave body and subject unset to send as generated, or pass either to overwrite. Sends to real recipients.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_preview_personalizeWRITEPersonalize the preview for a contact. POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/preview/personalize. Have the AI write or rewrite the messages one contact will get in an AI SDR sequence. Runs in the background across their steps.
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_preview_steps_by_step_id_feedbackWRITESubmit feedback on a preview step. POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/preview/steps/{step_id}/feedback. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Use this endpoint when you need to record a reaction to the AI-generated message for one step of a contact's preview — set vote to like or dislike. When the vote is dislike you can add dislikeReasons to categorize what was wrong, and comment carries a freeform note alongside either vote. The feedback is kept as a training signal for the AI SDR; a successful call returns no content. WITHHELD: Reply.io does not serve this endpoint yet (measured 2026-09-15), so this call is refused before any request is made.
replyio_post_v3_sequences_archiveWRITEBulk archive sequences. POST /v3/sequences/archive. Archive up to 1000 sequences in one call. Each must be paused or never started, and its contacts are taken out.
replyio_post_v3_sequences_batch_ownerWRITEBulk change sequence owner. POST /v3/sequences/batch/owner. Hand up to 1000 sequences to another team member. Reassigning is restricted to the team owner outside an organization.
replyio_post_v3_sequences_bulk_deleteWRITEBulk delete sequences. POST /v3/sequences/bulk-delete. Delete up to 1000 sequences in one call. Their contacts stay in your account, but a deleted sequence can't be restored.
replyio_post_v3_sequences_by_id_archiveWRITEArchive a sequence. POST /v3/sequences/{id}/archive. Put a sequence aside without deleting it. Pause it first, and note that archiving removes every contact currently in it.
replyio_post_v3_sequences_by_id_contact_links_bulkWRITEBulk add contacts to sequence. POST /v3/sequences/{id}/contact-links/bulk. Enroll contacts in a sequence — up to 10,000 ids per call. Set removeFromExisting to pull them out of their current ones.
replyio_post_v3_sequences_by_id_contact_links_bulk_deleteWRITEBulk remove contacts from sequence. POST /v3/sequences/{id}/contact-links/bulk-delete. 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.
replyio_post_v3_sequences_by_id_contacts_set_bouncedWRITEMark or unmark contacts as bounced in this sequence. POST /v3/sequences/{id}/contacts/set-bounced. Record bounces against this sequence alone. Clearing the flag also requires resendEmails to say what to do next.
replyio_post_v3_sequences_by_id_contacts_set_email_accountWRITESet the sending mailbox for contacts in this sequence. POST /v3/sequences/{id}/contacts/set-email-account. Repoint contacts already in this sequence at a different sending mailbox. Up to 100 ids; the mailbox must already be linked.
replyio_post_v3_sequences_by_id_contacts_set_repliedWRITEMark or unmark contacts as replied in this sequence. POST /v3/sequences/{id}/contacts/set-replied. Record replies that reached you elsewhere against this sequence alone. Marking as replied finishes the contact here.
replyio_post_v3_sequences_by_id_contacts_set_status_in_sequenceWRITESet contacts' status in this sequence. POST /v3/sequences/{id}/contacts/set-status-in-sequence. Set contacts to active, paused, finished, or outOfOffice in this sequence alone. Up to 100 ids, with no duplicates.
replyio_post_v3_sequences_by_id_email_account_linksWRITEAssign email account to sequence. POST /v3/sequences/{id}/email-account-links. Add one more mailbox for a sequence to send from. A sequence can hold up to 100 linked accounts, and the call is idempotent.
replyio_post_v3_sequences_by_id_linkedin_account_linksWRITEAssign a LinkedIn account to a sequence. POST /v3/sequences/{id}/linkedin-account-links. Add one more LinkedIn account for a sequence's LinkedIn steps. It links whatever state the account is currently in.
replyio_post_v3_sequences_by_id_pauseWRITEPause a sequence. POST /v3/sequences/{id}/pause. Stop a running sequence sending further steps while keeping it and its contacts in place. It must have started once.
replyio_post_v3_sequences_by_id_save_as_templateWRITESave a sequence as a template. POST /v3/sequences/{id}/save-as-template. Reuse a sequence's structure for future ones. Name the template and set scope to organization to share it wider.
replyio_post_v3_sequences_by_id_startWRITEStart a sequence. POST /v3/sequences/{id}/start. Start a sequence or resume a paused one. It needs contacts, a connected email account, and a schedule with sending hours. Sends to real recipients.
replyio_post_v3_sequences_by_id_statsWRITEGet sequence stats. POST /v3/sequences/{id}/stats. Get engagement figures for one sequence. Set the window with a date range preset or an explicit from and to, not both.
replyio_post_v3_sequences_by_id_stepsWRITECreate a sequence step. POST /v3/sequences/{id}/steps. Add a step to a sequence. type picks what it does — email, linkedIn, call, sms, condition, and more; linkedIn adds actionType.
replyio_post_v3_sequences_by_id_steps_bulkWRITEBulk create sequence steps. POST /v3/sequences/{id}/steps/bulk. Add several steps to a sequence in one call, processed in order, each appended after the one before it.
replyio_post_v3_sequences_by_id_steps_bulk_deleteWRITEBulk delete sequence steps. POST /v3/sequences/{id}/steps/bulk-delete. Delete up to 100 steps from a sequence at once. Each step's children re-attach to its parent as it goes.
replyio_post_v3_sequences_by_id_steps_by_step_id_disableWRITEDisable step variants. POST /v3/sequences/{id}/steps/{step_id}/disable. Take variants out of rotation without deleting them — handy for stopping one arm of an A/B test. Toggled one by one.
replyio_post_v3_sequences_by_id_steps_by_step_id_enableWRITEEnable step variants. POST /v3/sequences/{id}/steps/{step_id}/enable. Bring variants of a step back into rotation after they were switched off. Each one is toggled on its own.
replyio_post_v3_sequences_by_id_steps_by_step_id_variantsWRITECreate a step variant. POST /v3/sequences/{id}/steps/{step_id}/variants. Add another variant so a step rotates between bodies. Text variants use JSON; LinkedIn voice uses multipart form data.
replyio_post_v3_sequences_by_id_steps_by_step_id_variants_bulkWRITEBulk create step variants. POST /v3/sequences/{id}/steps/{step_id}/variants/bulk. Add several text variants to one step in a single call. They're appended in the order you send them.
replyio_post_v3_sequences_by_id_steps_by_step_id_variants_bulk_deleteWRITEBulk delete step variants. POST /v3/sequences/{id}/steps/{step_id}/variants/bulk-delete. Delete up to 100 variants from one step at once. Each is handled on its own, so the ones that can go still go.
replyio_post_v3_sequences_by_id_unarchiveWRITEUnarchive a sequence. POST /v3/sequences/{id}/unarchive. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Bring an archived sequence back to its old status. Its contacts aren't put back, so add them again before starting.
replyio_post_v3_sequences_by_sequence_id_contacts_by_contact_id_preview_resetWRITEReset manual edits in a sequence preview. POST /v3/sequences/{sequence_id}/contacts/{contact_id}/preview/reset. Discard the copy held for one contact — generated messages and hand edits alike — and fall back to the step templates.
replyio_post_v3_sequences_create_from_templateWRITECreate a sequence from a template. POST /v3/sequences/create-from-template. Build a new sequence from one of your saved templates. Pass templateId, and optionally a folder to file it into.
replyio_post_v3_sequences_pauseWRITEBulk pause sequences. POST /v3/sequences/pause. Pause up to 1000 running sequences in one call. Only currently active ones are paused; the rest are reported back.
replyio_post_v3_sequences_startWRITEBulk start sequences. POST /v3/sequences/start. Start up to 1000 sequences in one call. Each needs contacts, a connected email account, and a schedule with sending hours. Sends to real recipients.
replyio_post_v3_sequences_statsWRITEGet stats for all sequences. POST /v3/sequences/stats. Get email and LinkedIn engagement per sequence. The window is capped at 31 days, as a preset or an explicit from and to.
replyio_post_v3_sequences_unarchiveWRITEBulk unarchive sequences. POST /v3/sequences/unarchive. Documented by Reply.io as coming soon (available by late August 2026); it may not answer yet. Bring up to 1000 sequences out of the archive. Each returns to its old status, but its contacts are not put back.
replyio_post_v3_tasksWRITECreate a task. POST /v3/tasks. Create a task of your own. taskType, startAt, dueTo, and a template body are required; contactId for every type but toDo.
replyio_post_v3_tasks_batch_assignWRITEBatch reassign tasks. POST /v3/tasks/batch/assign. Hand up to 100 tasks to a colleague. They must be on your team, or nothing is reassigned. Only failed ids come back.
replyio_post_v3_tasks_batch_completeWRITEBatch complete tasks. POST /v3/tasks/batch/complete. Clear up to 100 tasks off the list without carrying them out. Sequence-step tasks close their step so the contact moves on.
replyio_post_v3_tasks_bulk_deleteWRITEBulk delete tasks. POST /v3/tasks/bulk-delete. Remove up to 100 tasks at once. Open tasks are cancelled and completed ones archived; either way they leave your lists.
replyio_post_v3_tasks_by_id_completeWRITEComplete a task. POST /v3/tasks/{id}/complete. Mark a task done without carrying it out. On a call task, pass callResolution to record how the call went.
replyio_post_v3_tasks_by_id_executeWRITEExecute and complete a task. POST /v3/tasks/{id}/execute. Carry a task out and complete it. Only manualEmail and sms tasks can be executed — use complete for any other type.
replyio_post_v3_tasks_filterWRITEFilter tasks. POST /v3/tasks/filter. Narrow the task list by due date, type, status, or overdue. Every field is optional, so an empty object returns them all.
replyio_post_v3_webhooksWRITECreate a webhook subscription. POST /v3/webhooks. Have Reply call your service as activity happens. Set eventType to one supported event and url to an absolute endpoint.
replyio_post_v3_webhooks_by_id_disableWRITEDisable a webhook subscription. POST /v3/webhooks/{id}/disable. Stop a subscription delivering without deleting it. It keeps its event, url, and settings until you enable it again.
replyio_post_v3_webhooks_by_id_enableWRITEEnable a webhook subscription. POST /v3/webhooks/{id}/enable. Start a paused subscription delivering again, including one Reply disabled after repeated delivery failures.
replyio_post_v3_webhooks_by_id_testWRITESend a test payload. POST /v3/webhooks/{id}/test. Check your receiving endpoint is wired up before real activity arrives. Reply posts a sample payload and reports back.
replyio_put_v3_ai_prompts_by_idWRITEUpdate a personal AI prompt. PUT /v3/ai-prompts/{id}. Rename one of your personal AI prompts or rewrite its text. Both fields are replaced, so send everything you want to keep.
replyio_put_v3_contact_account_lists_by_idWRITEUpdate an account list. PUT /v3/contact-account-lists/{id}. 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.
replyio_put_v3_contact_accounts_by_idWRITEUpdate an account. PUT /v3/contact-accounts/{id}. Replace an account's details in full. Name and ownerUserId are required, and any optional field you leave out is cleared.
replyio_put_v3_contact_accounts_by_id_ownerWRITEUpdate account owner. PUT /v3/contact-accounts/{id}/owner. Hand an account to another member of your team by user id. Nothing else changes, and the account comes back with its new owner.
replyio_put_v3_contact_blacklist_rules_domains_by_idWRITEUpdate a domain blacklist rule. PUT /v3/contact-blacklist-rules/domains/{id}. Correct the domain a blacklist rule blocks. Send the full replacement pattern — it's the only field the rule carries.
replyio_put_v3_contact_blacklist_rules_email_exceptions_by_idWRITEUpdate an email exception blacklist rule. PUT /v3/contact-blacklist-rules/email-exceptions/{id}. Change which address an exception keeps contactable. The previous address falls back under whatever rules cover it.
replyio_put_v3_contact_blacklist_rules_emails_by_idWRITEUpdate an email blacklist rule. PUT /v3/contact-blacklist-rules/emails/{id}. Change which address an email blacklist rule blocks. Send the full replacement pattern; platform rules are read-only.
replyio_put_v3_contact_lists_by_idWRITEUpdate a contact list. PUT /v3/contact-lists/{id}. Rename a contact list. Only the name changes here — use share and unshare to change visibility. The new name must be unique.
replyio_put_v3_contacts_ownerWRITEChange contacts owner. PUT /v3/contacts/owner. Reassign contacts to another teammate after a handoff or territory change. Set reassignTasks to move their tasks too.
replyio_put_v3_custom_fields_by_idWRITEUpdate a custom field. PUT /v3/custom-fields/{id}. Rename a custom field or change the kind of value it holds. Send the complete definition — metadata is replaced, not merged.
replyio_put_v3_email_accounts_tags_by_tagidWRITEUpdate a tag. PUT /v3/email-accounts/tags/{tagId}. Rename an email account tag or change its color. The change applies everywhere the tag is already used.
replyio_put_v3_email_template_folders_by_idWRITEUpdate an email template folder. PUT /v3/email-template-folders/{id}. Rename an email template folder, passing its foldertype. Templates stay put, and default folders cannot be renamed.
replyio_put_v3_email_templates_by_idWRITEUpdate an email template. PUT /v3/email-templates/{id}. Change a template's content. Name and body are required every time, so send it in full — anything left out is overwritten.
replyio_put_v3_holiday_calendars_by_idWRITEUpdate a holiday calendar. PUT /v3/holiday-calendars/{id}. Change a custom calendar's name, repeat setting, or days. The holidays array replaces the set outright, so send it all.
replyio_put_v3_inbox_threads_by_id_categoryWRITEAssign or clear a thread's category. PUT /v3/inbox/threads/{id}/category. File one conversation under an inbox category, or send categoryId as null to clear it. A thread sits in at most one.
replyio_put_v3_inbox_threads_by_id_meeting_intentWRITEToggle thread meeting-intent. PUT /v3/inbox/threads/{id}/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.
replyio_put_v3_inbox_threads_categories_by_idWRITEUpdate inbox category. PUT /v3/inbox/threads/categories/{id}. 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. The new name must be unique within your team. Reply's reserved categories cannot be edited — those are rejected with 403 and code inboxCategory.cannotModifyDefault.
replyio_put_v3_linkedin_accounts_by_id_limitsWRITEUpdate LinkedIn account limits. PUT /v3/linkedin-accounts/{id}/limits. Cap daily LinkedIn automation per account: connection requests, messages, InMails, profile views, and more.
replyio_put_v3_linkedin_accounts_by_id_revoke_settingsWRITEUpdate LinkedIn account revoke settings. PUT /v3/linkedin-accounts/{id}/revoke-settings. Have an account withdraw its own unanswered LinkedIn invitations. Set enabled and the days a request may stay pending.
replyio_put_v3_schedules_by_idWRITEUpdate a schedule. PUT /v3/schedules/{id}. Replace a schedule in full. Send every value you want to keep, including the complete main and follow-up timings arrays.
replyio_put_v3_sequence_folders_by_idWRITEUpdate a sequence folder. PUT /v3/sequence-folders/{id}. Rename one of your sequence folders. Only the name changes; the sequences filed in it stay where they are.
replyio_put_v3_sequences_ai_sdr_by_sequence_id_approval_modeWRITESet the approval mode. PUT /v3/sequences/ai-sdr/{sequence_id}/approval-mode. Decide whether AI-written messages send on their own or wait for a person to approve them. Set enabled to true to hold them.
replyio_put_v3_sequences_ai_sdr_by_sequence_id_generated_step_typesWRITESet generated step types. PUT /v3/sequences/ai-sdr/{sequence_id}/generated-step-types. Set the mix of channels the AI SDR may generate steps for. Send the full set you want — at least one, with no duplicates.
replyio_put_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseWRITEConnect a knowledge base to the sequence. PUT /v3/sequences/ai-sdr/{sequence_id}/knowledge-base. Set the knowledge base the AI SDR draws on for this sequence. A sequence keeps one at a time, so this replaces any previous.
replyio_put_v3_sequences_ai_sdr_by_sequence_id_playbookWRITEAttach a playbook to the sequence. PUT /v3/sequences/ai-sdr/{sequence_id}/playbook. Set the playbook the AI SDR follows for this sequence. Send playbookId as a composite id such as t-7. Replaces any previous one.
replyio_put_v3_sequences_by_id_email_account_linksWRITESet sequence email accounts. PUT /v3/sequences/{id}/email-account-links. Replace a sequence's sending mailboxes with an exact list. Accounts missing from it are unlinked; an empty array clears all.
replyio_put_v3_sequences_by_id_ownerWRITEChange sequence owner. PUT /v3/sequences/{id}/owner. Hand one sequence to another team member by user id. Reassigning is restricted to the team owner outside an organization.
replyio_put_v3_sequences_by_id_steps_by_step_idWRITEUpdate a sequence step. PUT /v3/sequences/{id}/steps/{step_id}. 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.
replyio_put_v3_sequences_by_id_steps_by_step_id_variants_by_variant_idWRITEUpdate a step variant. PUT /v3/sequences/{id}/steps/{step_id}/variants/{variant_id}. Change one variant of a step. Text variants use JSON; LinkedIn voice message variants use multipart form data.
replyio_put_v3_tasks_by_idWRITEUpdate a task. PUT /v3/tasks/{id}. Replace an open task in full. Send taskType, startAt, dueTo, and a template body every time; only open tasks can change.
replyio_put_v3_tasks_by_id_assigned_userWRITEReassign a task. PUT /v3/tasks/{id}/assigned-user. Hand one task to a colleague by user id. They must be on your team, and your role must allow the reassignment.
replyio_put_v3_webhooks_by_idWRITEUpdate a webhook subscription. PUT /v3/webhooks/{id}. Repoint a subscription at a different url, event, or scope. It replaces the whole thing, so repeat the flags you keep.
Often connected alongside
Put Reply.io behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.