All integrations

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_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_documents_by_document_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_links_by_link_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_id_media_by_media_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_id_media_by_media_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_offers_by_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_playbooks_by_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_ai_sdr_playbooks_by_playbook_id_style_files_by_style_file_idWRITE

Delete 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.

ai-sdr:write
replyio_delete_v3_contact_account_lists_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contact_accounts_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contact_blacklist_rules_domains_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contact_blacklist_rules_email_exceptions_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contact_blacklist_rules_emails_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contact_lists_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_contacts_by_idWRITE

Delete a contact. DELETE /v3/contacts/{id}. Delete one contact by its Reply id. To remove several at once, use the bulk-delete endpoint instead.

contacts:write
replyio_delete_v3_custom_fields_by_idWRITE

Delete 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.

contacts:write
replyio_delete_v3_email_accounts_by_idWRITE

Delete 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.

channels:write
replyio_delete_v3_email_accounts_by_id_tagsWRITE

Remove 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.

channels:operate
replyio_delete_v3_email_template_folders_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_email_templates_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_holiday_calendars_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_inbox_threads_by_idWRITE

Delete inbox thread. DELETE /v3/inbox/threads/{id}. Permanently delete one conversation and its messages. Use bulk-delete to remove several in one call.

inbox:operate
replyio_delete_v3_inbox_threads_categories_by_idWRITE

Delete 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.

inbox:write
replyio_delete_v3_linkedin_accounts_by_idWRITE

Delete 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.

channels:write
replyio_delete_v3_linkedin_accounts_pending_by_idWRITE

Delete 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.

channels:write
replyio_delete_v3_schedules_by_idWRITE

Delete a schedule. DELETE /v3/schedules/{id}. Delete a schedule for good. Rejected while a sequence, template, or someone's default is still using it.

sequences:write
replyio_delete_v3_schedules_by_id_holiday_calendar_links_by_calendaridWRITE

Unlink 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.

sequences:operate
replyio_delete_v3_sequence_folders_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_sequence_templates_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approvalWRITE

Reject (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.

ai-sdr:write
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseWRITE

Disconnect 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.

ai-sdr:operate
replyio_delete_v3_sequences_ai_sdr_by_sequence_id_playbookWRITE

Detach 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.

ai-sdr:operate
replyio_delete_v3_sequences_by_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_sequences_by_id_contact_links_by_contact_idWRITE

Remove 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.

sequences:operate
replyio_delete_v3_sequences_by_id_email_account_links_by_email_account_idWRITE

Remove 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.

sequences:operate
replyio_delete_v3_sequences_by_id_linkedin_account_links_by_linkedinaccountidWRITE

Remove 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.

sequences:operate
replyio_delete_v3_sequences_by_id_steps_by_step_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_sequences_by_id_steps_by_step_id_variants_by_variant_idWRITE

Delete 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.

sequences:write
replyio_delete_v3_tasks_by_idWRITE

Delete 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.

tasks:write
replyio_delete_v3_webhooks_by_idWRITE

Delete 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.

webhooks:write
replyio_get_v3_ai_promptsREAD

List 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.

sequences:read
replyio_get_v3_ai_sdr_approvalsREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_intent_signals_industriesREAD

Intent 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.

ai-sdr:read
replyio_get_v3_ai_sdr_intent_signals_technologiesREAD

Technologies 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_basesREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_idREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_documentsREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_linksREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cardsREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flowsREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_contacts_countREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_stateREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlersREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_offersREAD

List 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.

ai-sdr:read
replyio_get_v3_ai_sdr_offers_by_idREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_sdr_playbooksREAD

List playbooks. GET /v3/ai-sdr/playbooks. Browse the AI SDR playbooks you can use. Pass type to keep one scope: global, organization, or team.

ai-sdr:read
replyio_get_v3_ai_sdr_playbooks_by_idREAD

Get 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.

ai-sdr:read
replyio_get_v3_ai_web_search_searchesREAD

List 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.

no provider scope
replyio_get_v3_background_jobsREAD

List 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.

other:read
replyio_get_v3_background_jobs_by_jobidREAD

Get 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.

other:read
replyio_get_v3_contact_account_listsREAD

List 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.

contacts:read
replyio_get_v3_contact_account_lists_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contact_accountsREAD

List 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.

contacts:read
replyio_get_v3_contact_accounts_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contact_accounts_by_id_contactsREAD

List 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_domainsREAD

List 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_domains_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_email_exceptionsREAD

List 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_email_exceptions_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_emailsREAD

List 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.

contacts:read
replyio_get_v3_contact_blacklist_rules_emails_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contact_listsREAD

List 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.

contacts:read
replyio_get_v3_contact_lists_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contactsREAD

List 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.

contacts:read
replyio_get_v3_contacts_by_idREAD

Get 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.

contacts:read
replyio_get_v3_contacts_by_id_activitiesREAD

Get 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.

contacts:read
replyio_get_v3_contacts_by_id_inbox_threadsREAD

Get 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.

contacts:read
replyio_get_v3_contacts_by_id_listsREAD

Get 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.

contacts:read
replyio_get_v3_contacts_by_id_sequencesREAD

Get 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.

contacts:read
replyio_get_v3_contacts_by_id_statusesREAD

Get 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.

contacts:read
replyio_get_v3_custom_fieldsREAD

List 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.

contacts:read
replyio_get_v3_custom_fields_by_idREAD

Get 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.

contacts:read
replyio_get_v3_email_accountsREAD

List 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.

channels:read
replyio_get_v3_email_accounts_by_idREAD

Get 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.

channels:read
replyio_get_v3_email_accounts_by_id_statsREAD

Get 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.

channels:read
replyio_get_v3_email_accounts_connect_gmailREAD

Connect 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.

channels:write
replyio_get_v3_email_accounts_connect_office_365READ

Connect 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.

channels:write
replyio_get_v3_email_accounts_procurement_domains_availableREAD

Find 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).

channels:read
replyio_get_v3_email_accounts_tagsREAD

List 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.

channels:read
replyio_get_v3_email_template_foldersREAD

List email template folders. GET /v3/email-template-folders. Get every folder available for organizing email templates — personal, team, community, and organization — in one array.

sequences:read
replyio_get_v3_email_template_folders_by_idREAD

Get 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.

sequences:read
replyio_get_v3_email_templatesREAD

List 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.

sequences:read
replyio_get_v3_email_templates_by_idREAD

Get 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.

sequences:read
replyio_get_v3_email_templates_variablesREAD

Get 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.

sequences:read
replyio_get_v3_holiday_calendarsREAD

List 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.

sequences:read
replyio_get_v3_holiday_calendars_by_idREAD

Get 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.

sequences:read
replyio_get_v3_holiday_calendars_by_id_export_csvREAD

Export 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.

sequences:read
replyio_get_v3_inbox_threadsREAD

List inbox threads. GET /v3/inbox/threads. Browse your inbox — email and LinkedIn conversations with contacts, most recently active first. Paged with top and skip.

inbox:read
replyio_get_v3_inbox_threads_by_idREAD

Get 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.

inbox:read
replyio_get_v3_inbox_threads_by_id_messagesREAD

List 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.

inbox:read
replyio_get_v3_inbox_threads_categoriesREAD

List 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.

inbox:read
replyio_get_v3_inbox_threads_categories_by_idREAD

Get 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.

inbox:read
replyio_get_v3_linkedin_accountsREAD

List LinkedIn accounts. GET /v3/linkedin-accounts. Get the LinkedIn accounts connected to Reply, with connection state and automation limits. One call, no paging.

channels:read
replyio_get_v3_linkedin_accounts_by_idREAD

Get 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.

channels:read
replyio_get_v3_linkedin_accounts_pendingREAD

List 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.

channels:read
replyio_get_v3_live_data_filter_values_departmentsREAD

Departments 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.

contacts:read
replyio_get_v3_live_data_filter_values_industriesREAD

Live 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.

contacts:read
replyio_get_v3_live_data_filter_values_job_titlesREAD

Job 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.

contacts:read
replyio_get_v3_live_data_filter_values_locationsREAD

Locations 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.

contacts:read
replyio_get_v3_live_data_filter_values_senioritiesREAD

Seniorities 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.

contacts:read
replyio_get_v3_live_data_searchesREAD

List 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.

contacts:read
replyio_get_v3_live_data_searches_by_idREAD

Get 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.

contacts:read
replyio_get_v3_schedulesREAD

List 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.

sequences:read
replyio_get_v3_schedules_by_idREAD

Get 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.

sequences:read
replyio_get_v3_schedules_by_id_holiday_calendarsREAD

List 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.

sequences:read
replyio_get_v3_sequence_foldersREAD

List 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.

sequences:read
replyio_get_v3_sequence_folders_by_idREAD

Get 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.

sequences:read
replyio_get_v3_sequence_folders_by_id_sequencesREAD

List 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.

sequences:read
replyio_get_v3_sequence_templatesREAD

List 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.

sequences:read
replyio_get_v3_sequencesREAD

List 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.

sequences:read
replyio_get_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_ai_insightsREAD

Get 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.

no provider scope
replyio_get_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approvalREAD

Get 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.

ai-sdr:read
replyio_get_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseREAD

Get 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.

ai-sdr:read
replyio_get_v3_sequences_ai_sdr_by_sequence_id_playbookREAD

Get 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.

ai-sdr:read
replyio_get_v3_sequences_ai_sdr_by_sequence_id_settingsREAD

Read 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.

ai-sdr:read
replyio_get_v3_sequences_by_idREAD

Get a sequence. GET /v3/sequences/{id}. Get one sequence in full: name, status, owner, schedule, settings, connected accounts, and its complete list of steps.

sequences:read
replyio_get_v3_sequences_by_id_contactsREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_id_contacts_by_contact_idREAD

Get 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.

sequences:read
replyio_get_v3_sequences_by_id_contacts_countREAD

Count 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.

sequences:read
replyio_get_v3_sequences_by_id_contacts_stateREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_id_email_accountsREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_id_linkedin_accountsREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_id_stepsREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_id_steps_by_step_idREAD

Get 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.

sequences:read
replyio_get_v3_sequences_by_id_steps_by_step_id_variantsREAD

List 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.

sequences:read
replyio_get_v3_sequences_by_sequence_id_contacts_by_contact_id_previewREAD

Get 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.

sequences:read
replyio_get_v3_sequences_countREAD

Count 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.

sequences:read
replyio_get_v3_sequences_steps_contact_filter_propertiesREAD

List 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.

sequences:read
replyio_get_v3_settingsREAD

Get 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.

settings:read
replyio_get_v3_tasksREAD

List 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.

tasks:read
replyio_get_v3_tasks_by_idREAD

Get 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.

tasks:read
replyio_get_v3_webhooksREAD

List webhook subscriptions. GET /v3/webhooks. See the webhook subscriptions you've set up, each with its event, url, scope, enabled flag, and payload flags.

webhooks:read
replyio_get_v3_webhooks_by_idREAD

Get 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.

webhooks:read
replyio_get_v3_webhooks_by_id_logsREAD

Get 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.

webhooks:read
replyio_get_v3_webhooks_eventsREAD

List 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.

webhooks:read
replyio_get_v3_whoamiREAD

Get 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.

no provider scope
replyio_get_v3_whoami_team_usersREAD

List 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.

no provider scope
replyio_patch_v3_ai_sdr_knowledge_bases_by_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cards_by_reengagement_card_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlers_by_reply_handler_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_ai_sdr_offers_by_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_ai_sdr_playbooks_by_idWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_contacts_by_idWRITE

Update 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.

contacts:write
replyio_patch_v3_email_accounts_by_idWRITE

Update 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.

channels:write
replyio_patch_v3_sequences_ai_sdr_by_sequence_id_settingsWRITE

Update 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.

ai-sdr:write
replyio_patch_v3_sequences_by_idWRITE

Update 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.

sequences:write
replyio_patch_v3_settingsWRITE

Update settings. PATCH /v3/settings. Change part of your settings without resending the whole object. Anything you leave out stays exactly as it is.

settings:write
replyio_post_v3_ai_promptsWRITE

Create 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.

sequences:write
replyio_post_v3_ai_prompts_preview_linkedin_postWRITE

Preview 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.

sequences:operate
replyio_post_v3_ai_prompts_preview_sampleWRITE

Preview 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.

sequences:operate
replyio_post_v3_ai_sdr_approvals_send_bulkWRITE

Send 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_basesWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_id_duplicateWRITE

Duplicate 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_linksWRITE

Add 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_cardsWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flowsWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_assignWRITE

Assign 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_duplicateWRITE

Duplicate 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reengagement_flows_by_flow_id_set_defaultWRITE

Set 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.

ai-sdr:write
replyio_post_v3_ai_sdr_knowledge_bases_by_knowledge_base_id_reply_handlersWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_offersWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_offers_by_id_duplicateWRITE

Duplicate 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.

ai-sdr:write
replyio_post_v3_ai_sdr_offers_generateWRITE

Generate 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.

ai-sdr:write
replyio_post_v3_ai_sdr_playbooksWRITE

Create 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.

ai-sdr:write
replyio_post_v3_ai_sdr_playbooks_by_id_duplicateWRITE

Duplicate 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.

ai-sdr:write
replyio_post_v3_ai_sdr_strategist_startWRITE

Start 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.

ai-sdr:write
replyio_post_v3_ai_web_search_startWRITE

Start 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.

no provider scope
replyio_post_v3_background_jobs_by_jobid_cancelWRITE

Cancel 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.

other:operate
replyio_post_v3_contact_account_listsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_account_lists_by_id_add_accountsWRITE

Add 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.

contacts:operate
replyio_post_v3_contact_account_lists_by_id_move_accountsWRITE

Move 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.

contacts:operate
replyio_post_v3_contact_accountsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_accounts_bulkWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_accounts_bulk_deleteWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_accounts_by_id_contact_links_bulkWRITE

Bulk 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.

contacts:operate
replyio_post_v3_contact_accounts_by_id_contact_links_bulk_deleteWRITE

Bulk 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.

contacts:operate
replyio_post_v3_contact_accounts_filterWRITE

Filter 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.

contacts:read
replyio_post_v3_contact_blacklist_rules_domainsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_domains_bulkWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_domains_bulk_deleteWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_email_exceptionsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_email_exceptions_bulkWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_email_exceptions_bulk_deleteWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_emailsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_emails_bulkWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_blacklist_rules_emails_bulk_deleteWRITE

Bulk 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.

contacts:write
replyio_post_v3_contact_listsWRITE

Create 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.

contacts:write
replyio_post_v3_contact_lists_by_id_add_contactsWRITE

Add 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.

contacts:operate
replyio_post_v3_contact_lists_by_id_move_contactsWRITE

Move 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.

contacts:operate
replyio_post_v3_contact_lists_by_id_shareWRITE

Share 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.

contacts:write
replyio_post_v3_contact_lists_by_id_unshareWRITE

Unshare 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.

contacts:write
replyio_post_v3_contactsWRITE

Create 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.

contacts:write
replyio_post_v3_contacts_bulk_deleteWRITE

Bulk 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.

contacts:write
replyio_post_v3_contacts_by_id_move_to_sequenceWRITE

Move 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.

contacts:operate
replyio_post_v3_contacts_by_id_notesWRITE

Add 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_emailWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_linkedin_ai_voiceWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_linkedin_connectWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_linkedin_inmailWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_linkedin_messageWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_by_id_send_direct_linkedin_voiceWRITE

Send 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.

contacts:operate
replyio_post_v3_contacts_enrich_ai_custom_fieldsWRITE

Fill 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.

no provider scope
replyio_post_v3_contacts_enrich_by_emailWRITE

Enrich 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.

no provider scope
replyio_post_v3_contacts_enrich_by_linkedinWRITE

Enrich 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.

no provider scope
replyio_post_v3_contacts_filterWRITE

Filter 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.

contacts:read
replyio_post_v3_contacts_filter_countWRITE

Count 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.

contacts:read
replyio_post_v3_contacts_find_emailsWRITE

Find 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.

no provider scope
replyio_post_v3_contacts_find_phonesWRITE

Find 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.

no provider scope
replyio_post_v3_contacts_importWRITE

Import contacts. POST /v3/contacts/import. Add or update many contacts in one call, each item requiring firstName. Options control deduplication, overwrite, and list assignment.

contacts:write
replyio_post_v3_contacts_set_bouncedWRITE

Mark 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.

contacts:operate
replyio_post_v3_contacts_set_opted_outWRITE

Opt 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.

contacts:operate
replyio_post_v3_contacts_set_repliedWRITE

Mark 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.

contacts:operate
replyio_post_v3_contacts_set_status_in_sequenceWRITE

Set 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.

contacts:operate
replyio_post_v3_custom_fieldsWRITE

Create 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.

contacts:write
replyio_post_v3_email_accountsWRITE

Create 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.

channels:write
replyio_post_v3_email_accounts_bulk_deleteWRITE

Bulk 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.

channels:write
replyio_post_v3_email_accounts_by_id_resume_sendingWRITE

Resume sending. POST /v3/email-accounts/{id}/resume-sending. Clear a provider lock so an email account picks its sequences back up. Check sendingLockedByProvider first.

channels:operate
replyio_post_v3_email_accounts_by_id_set_defaultWRITE

Set 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.

channels:operate
replyio_post_v3_email_accounts_by_id_tagsWRITE

Add 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.

channels:operate
replyio_post_v3_email_accounts_filterWRITE

Filter 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.

channels:read
replyio_post_v3_email_accounts_procurement_domains_estimateWRITE

Estimate 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.

channels:read
replyio_post_v3_email_accounts_procurement_domains_purchaseWRITE

Buy 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.

channels:write
replyio_post_v3_email_accounts_procurement_usersWRITE

Register 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.

channels:write
replyio_post_v3_email_accounts_statsWRITE

Filter 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.

channels:read
replyio_post_v3_email_accounts_test_imapWRITE

Test 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.

channels:operate
replyio_post_v3_email_accounts_test_smtpWRITE

Test 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.

channels:operate
replyio_post_v3_email_template_foldersWRITE

Create 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.

sequences:write
replyio_post_v3_email_template_folders_by_id_shareWRITE

Share 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.

sequences:write
replyio_post_v3_email_templatesWRITE

Create 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.

sequences:write
replyio_post_v3_email_templates_by_id_cloneWRITE

Clone 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…

sequences:write
replyio_post_v3_email_templates_by_id_moveWRITE

Move 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.

sequences:write
replyio_post_v3_email_templates_by_id_renderWRITE

Render 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.

sequences:operate
replyio_post_v3_email_templates_by_id_send_testWRITE

Send 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.

sequences:operate
replyio_post_v3_email_validations_estimateWRITE

Estimate 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.

contacts:read
replyio_post_v3_email_validations_scheduleWRITE

Schedule 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.

contacts:operate
replyio_post_v3_holiday_calendarsWRITE

Create 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.

sequences:write
replyio_post_v3_inbox_threads_bulk_deleteWRITE

Bulk-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.

inbox:operate
replyio_post_v3_inbox_threads_by_id_ai_draft_feedbackWRITE

Submit 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.

no provider scope
replyio_post_v3_inbox_threads_by_id_ai_draft_generateWRITE

Generate 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.

no provider scope
replyio_post_v3_inbox_threads_by_id_messagesWRITE

Send 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.

inbox:operate
replyio_post_v3_inbox_threads_categoriesWRITE

Create 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.

inbox:write
replyio_post_v3_inbox_threads_categories_by_id_thread_links_bulkWRITE

Assign 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.

inbox:operate
replyio_post_v3_inbox_threads_categories_by_id_thread_links_bulk_deleteWRITE

Unassign 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.

inbox:operate
replyio_post_v3_inbox_threads_filterWRITE

Filter 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.

inbox:read
replyio_post_v3_inbox_threads_mark_as_readWRITE

Mark 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.

inbox:operate
replyio_post_v3_inbox_threads_mark_as_unreadWRITE

Mark 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.

inbox:operate
replyio_post_v3_linkedin_accounts_bulk_deleteWRITE

Bulk 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.

channels:write
replyio_post_v3_linkedin_accounts_by_id_reconnectWRITE

Reconnect 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.

channels:write
replyio_post_v3_linkedin_accounts_by_id_toggle_statusWRITE

Toggle 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.

channels:operate
replyio_post_v3_linkedin_accounts_connectWRITE

Create 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.

channels:write
replyio_post_v3_linkedin_accounts_connection_linkWRITE

Create 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.

channels:write
replyio_post_v3_live_data_searchesWRITE

Start 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.

contacts:write
replyio_post_v3_live_data_searches_previewWRITE

Preview 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.

contacts:write
replyio_post_v3_reporting_callsWRITE

List 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.

reporting:read
replyio_post_v3_reporting_calls_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_reporting_channel_efficiency_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_reporting_emailsWRITE

List 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.

reporting:read
replyio_post_v3_reporting_emails_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_reporting_linkedinWRITE

List 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.

reporting:read
replyio_post_v3_reporting_linkedin_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_reporting_tasksWRITE

List 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.

reporting:read
replyio_post_v3_reporting_tasks_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_reporting_team_performance_meetingsWRITE

List 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.

reporting:read
replyio_post_v3_reporting_team_performance_overviewWRITE

Get 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.

reporting:read
replyio_post_v3_schedulesWRITE

Create 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.

sequences:write
replyio_post_v3_schedules_by_id_holiday_calendar_linksWRITE

Link 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.

sequences:operate
replyio_post_v3_schedules_by_id_set_defaultWRITE

Set 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.

sequences:operate
replyio_post_v3_sequence_foldersWRITE

Create 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.

sequences:write
replyio_post_v3_sequence_folders_by_id_sequence_links_bulkWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequence_folders_by_id_sequence_links_bulk_deleteWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequencesWRITE

Create 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.

sequences:write
replyio_post_v3_sequences_ai_sdrWRITE

Create 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.

ai-sdr:write
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_disableWRITE

Disable 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.

ai-sdr:operate
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_enableWRITE

Enable 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.

ai-sdr:operate
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_force_startWRITE

Force-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.

ai-sdr:operate
replyio_post_v3_sequences_ai_sdr_by_sequence_id_autopilot_previewWRITE

Preview 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.

ai-sdr:operate
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_feedbackWRITE

Submit 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.

no provider scope
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_regenerateWRITE

Regenerate 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.

ai-sdr:write
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_approval_sendWRITE

Send 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.

ai-sdr:write
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_preview_personalizeWRITE

Personalize 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.

ai-sdr:write
replyio_post_v3_sequences_ai_sdr_by_sequence_id_contacts_by_contact_id_preview_steps_by_step_id_feedbackWRITE

Submit 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.

no provider scope
replyio_post_v3_sequences_archiveWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_batch_ownerWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_bulk_deleteWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_by_id_archiveWRITE

Archive 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.

sequences:operate
replyio_post_v3_sequences_by_id_contact_links_bulkWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequences_by_id_contact_links_bulk_deleteWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequences_by_id_contacts_set_bouncedWRITE

Mark 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.

sequences:operate
replyio_post_v3_sequences_by_id_contacts_set_email_accountWRITE

Set 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.

sequences:operate
replyio_post_v3_sequences_by_id_contacts_set_repliedWRITE

Mark 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.

sequences:operate
replyio_post_v3_sequences_by_id_contacts_set_status_in_sequenceWRITE

Set 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.

sequences:operate
replyio_post_v3_sequences_by_id_email_account_linksWRITE

Assign 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.

sequences:operate
replyio_post_v3_sequences_by_id_linkedin_account_linksWRITE

Assign 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.

sequences:operate
replyio_post_v3_sequences_by_id_pauseWRITE

Pause 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.

sequences:operate
replyio_post_v3_sequences_by_id_save_as_templateWRITE

Save 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.

sequences:write
replyio_post_v3_sequences_by_id_startWRITE

Start 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.

sequences:operate
replyio_post_v3_sequences_by_id_statsWRITE

Get 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.

sequences:read
replyio_post_v3_sequences_by_id_stepsWRITE

Create 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.

sequences:write
replyio_post_v3_sequences_by_id_steps_bulkWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_by_id_steps_bulk_deleteWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_by_id_steps_by_step_id_disableWRITE

Disable 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.

sequences:operate
replyio_post_v3_sequences_by_id_steps_by_step_id_enableWRITE

Enable 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.

sequences:operate
replyio_post_v3_sequences_by_id_steps_by_step_id_variantsWRITE

Create 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.

sequences:write
replyio_post_v3_sequences_by_id_steps_by_step_id_variants_bulkWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_by_id_steps_by_step_id_variants_bulk_deleteWRITE

Bulk 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.

sequences:write
replyio_post_v3_sequences_by_id_unarchiveWRITE

Unarchive 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.

sequences:operate
replyio_post_v3_sequences_by_sequence_id_contacts_by_contact_id_preview_resetWRITE

Reset 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.

sequences:operate
replyio_post_v3_sequences_create_from_templateWRITE

Create 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.

sequences:write
replyio_post_v3_sequences_pauseWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequences_startWRITE

Bulk 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.

sequences:operate
replyio_post_v3_sequences_statsWRITE

Get 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.

sequences:read
replyio_post_v3_sequences_unarchiveWRITE

Bulk 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.

sequences:write
replyio_post_v3_tasksWRITE

Create 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.

tasks:write
replyio_post_v3_tasks_batch_assignWRITE

Batch 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.

tasks:write
replyio_post_v3_tasks_batch_completeWRITE

Batch 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.

tasks:operate
replyio_post_v3_tasks_bulk_deleteWRITE

Bulk 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.

tasks:write
replyio_post_v3_tasks_by_id_completeWRITE

Complete 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.

tasks:operate
replyio_post_v3_tasks_by_id_executeWRITE

Execute 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.

tasks:operate
replyio_post_v3_tasks_filterWRITE

Filter 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.

tasks:read
replyio_post_v3_webhooksWRITE

Create 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.

webhooks:write
replyio_post_v3_webhooks_by_id_disableWRITE

Disable 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.

webhooks:operate
replyio_post_v3_webhooks_by_id_enableWRITE

Enable a webhook subscription. POST /v3/webhooks/{id}/enable. Start a paused subscription delivering again, including one Reply disabled after repeated delivery failures.

webhooks:operate
replyio_post_v3_webhooks_by_id_testWRITE

Send 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.

webhooks:operate
replyio_put_v3_ai_prompts_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_contact_account_lists_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contact_accounts_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contact_accounts_by_id_ownerWRITE

Update 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.

contacts:write
replyio_put_v3_contact_blacklist_rules_domains_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contact_blacklist_rules_email_exceptions_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contact_blacklist_rules_emails_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contact_lists_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_contacts_ownerWRITE

Change contacts owner. PUT /v3/contacts/owner. Reassign contacts to another teammate after a handoff or territory change. Set reassignTasks to move their tasks too.

contacts:operate
replyio_put_v3_custom_fields_by_idWRITE

Update 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.

contacts:write
replyio_put_v3_email_accounts_tags_by_tagidWRITE

Update 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.

channels:operate
replyio_put_v3_email_template_folders_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_email_templates_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_holiday_calendars_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_inbox_threads_by_id_categoryWRITE

Assign 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.

inbox:operate
replyio_put_v3_inbox_threads_by_id_meeting_intentWRITE

Toggle 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.

inbox:operate
replyio_put_v3_inbox_threads_categories_by_idWRITE

Update 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.

inbox:write
replyio_put_v3_linkedin_accounts_by_id_limitsWRITE

Update LinkedIn account limits. PUT /v3/linkedin-accounts/{id}/limits. Cap daily LinkedIn automation per account: connection requests, messages, InMails, profile views, and more.

channels:operate
replyio_put_v3_linkedin_accounts_by_id_revoke_settingsWRITE

Update 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.

channels:write
replyio_put_v3_schedules_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_sequence_folders_by_idWRITE

Update 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.

sequences:write
replyio_put_v3_sequences_ai_sdr_by_sequence_id_approval_modeWRITE

Set 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.

ai-sdr:operate
replyio_put_v3_sequences_ai_sdr_by_sequence_id_generated_step_typesWRITE

Set 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.

ai-sdr:write
replyio_put_v3_sequences_ai_sdr_by_sequence_id_knowledge_baseWRITE

Connect 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.

ai-sdr:operate
replyio_put_v3_sequences_ai_sdr_by_sequence_id_playbookWRITE

Attach 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.

ai-sdr:operate
replyio_put_v3_sequences_by_id_email_account_linksWRITE

Set 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.

sequences:operate
replyio_put_v3_sequences_by_id_ownerWRITE

Change 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.

sequences:write
replyio_put_v3_sequences_by_id_steps_by_step_idWRITE

Update 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.

sequences:write
replyio_put_v3_sequences_by_id_steps_by_step_id_variants_by_variant_idWRITE

Update 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.

sequences:write
replyio_put_v3_tasks_by_idWRITE

Update 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.

tasks:write
replyio_put_v3_tasks_by_id_assigned_userWRITE

Reassign 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.

tasks:write
replyio_put_v3_webhooks_by_idWRITE

Update 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.

webhooks:write

Put Reply.io behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.