deactivateduser
05/06/2026, 10:46 AMDasha
05/14/2026, 4:53 PMlinkedin_account_alerts
Hey everyone! ๐
We've shipped a new webhook event that lets you stay on top of LinkedIn account health in real time. Instead of finding out after a sequence stalls, you'll get notified the moment something needs attention.
What you'll be alerted about:
โข ๐ Sales Navigator disconnected - reconnect needed to keep InMail steps running
โข ๐ฌ InMail credits depleted - the account can't send InMails until credits renew
โข ๐ Weekly connection request limit reached - sending resumes after LinkedIn resets the quota
Why this matters:
Build automations that auto-pause sequences, ping the account owner in Slack, open a ticket, or trigger any custom recovery flow, no more silent failures.
Example payloads:
Sales Navigator disconnected
{
"event": {
"date": "2026-05-13T10:45:46.3926107Z",
"id": "22ff637a-fd81-40ba-b597-0c8f26189dca",
"type": "linkedin_account_alerts",
"user_id": 12345,
"team_id": 67890,
"subscription_id": 492
},
"workspace_id": 67890,
"workspace_name": "Default Team",
"linkedin_owner_name": "Jane D.",
"linkedin_owner_email": "<mailto:jane.d@example.com|jane.d@example.com>",
"linkedin_id": 262,
"linkedin_name": "Jane Doe",
"linkedin_account_alert": "Sales Navigator is disconnected. Please reconnect your LinkedIn account to continue sending InMail steps.",
"sequence_fields": {}
}
InMail credits depleted
{
"event": {
"date": "2026-05-13T10:47:16.6543506Z",
"id": "7227258a-8624-410a-bf6c-bd5197810d66",
"type": "linkedin_account_alerts",
"user_id": 12345,
"team_id": 67890,
"subscription_id": 492
},
"workspace_id": 67890,
"workspace_name": "Default Team",
"linkedin_owner_name": "Jane D.",
"linkedin_owner_email": "<mailto:jane.d@example.com|jane.d@example.com>",
"linkedin_id": 262,
"linkedin_name": "Jane Doe",
"linkedin_account_alert": "InMail credits are used up โ this account can't send InMails until credits renew.",
"sequence_fields": {}
}
Weekly connection limit reached
{
"event": {
"date": "2026-05-13T10:47:27.4486303Z",
"id": "654258f1-a426-4d3c-96a2-b3da5f78af29",
"type": "linkedin_account_alerts",
"user_id": 12345,
"team_id": 67890,
"subscription_id": 492
},
"workspace_id": 67890,
"workspace_name": "Default Team",
"linkedin_owner_name": "Jane D.",
"linkedin_owner_email": "<mailto:jane.d@example.com|jane.d@example.com>",
"linkedin_id": 262,
"linkedin_name": "Jane Doe",
"linkedin_account_alert": "Weekly connection request limit reached. Sending new connection requests will resume after LinkedIn resets the quota.",
"sequence_fields": {}
}
๐ Full docs: https://docs.reply.io/webhook-event-payloads#linkedin_account_alerts
Would love to hear what you build with it, drop a comment or share your workflow! ๐Dasha
05/18/2026, 12:37 PMDasha
05/27/2026, 3:18 PMDasha
06/08/2026, 5:41 PMtotalCount removed from Contacts endpoints
AffectsยทGET /v3/contactsPOST /v3/contacts/filter
Response now returns only2๏ธโฃ Sequence Preview feedback path moved โ now under the+items. If you readhasMore, switch to cursor-style pagination usingtotalCount.hasMore
ai-sdr segment:
3๏ธโฃ Tag renames/v3/sequences/ai-sdr/{id}/contacts/{id}/preview/steps/{step_id}/feedback
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โจ AI SDR Sequences โ now fully covered All 14 endpoints are live underโAI SDR Live DataยทLive DataโAI SDR Contact EnrichmentยทContact EnrichmentโJasonAi creditsReply credits
/v3/sequences/ai-sdr/{id} (Create = base path, no {id}):
Action Method Path
Create sequence POST (base)
Get settings GET /settings
Update settings PATCH /settings
Enable autopilot POST /autopilot/enable
Disable autopilot POST /autopilot/disable
Force-start autopilot POST /autopilot/force-start
Set approval mode PUT /approval-mode
Set generated step types PUT /generated-step-types
Get/Set/Remove playbook GET/PUT/DELETE /playbook
Get/Set/Remove knowledge base GET/PUT/DELETE /knowledge-base
Heads up on force-start errors:โจ More new endpoints โข Intent Signals (typeahead) โ(limit reached) ยท409 autopilotDisabledByContactsLimit(no contacts) ยท409 autopilotDisabledByLackOfContactson playbook/KB DELETE when nothing's attached.404
GET /v3/ai-sdr/intent-signals/industries ยท โฆ/technologies
โ ๏ธ These return Sales Navigator strings โ different from Live Data filter-value industries (Reply taxonomy), so don't mix them up.
โข Live Data Filter Values are live (finally off "coming soon" ๐) โ 5 typeahead endpoints under `/v3/live-data/filter-values`: industries ยท departments ยท seniorities ยท locations ยท job-titles
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ง Smaller improvements
โข Inbox โ filter by owner via new `ownerUserId`: POST /v3/inbox/threads/filter (body, integer nullable) and GET /v3/inbox/threads/categories (query param, integer). Target user must be on your team, else 400.
โข Rate limiting โ all 429 responses now include a Retry-After header (integer, seconds) so you can back off cleanly.
โข Sidebar reordered to strict AโZ, parent-first grouping.
โข Auth guide rewritten โ now covers Master API key + Organization API key (with impersonation details).
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Full docs: https://docs.reply.io/api-reference
Questions or hit a snag migrating? Drop them in the thread ๐งตDasha
06/15/2026, 5:12 PMAI voice LinkedIn message - playback speed removed
Before: body accepted textToSpeechSettings with a speed multiplier.
After: textToSpeechSettings / speed removed; only text is accepted.
Action required: remove textToSpeechSettings from your request body - it has no effect.๐ Full docs: https://docs.reply.io/api-reference
Dasha
06/30/2026, 3:45 PMTL;DR: Mostly AI SDR + Live Data roadmap โ search, autopilot-preview, and per-contact personalization endpoints are now fully documented ahead of their mid-June 2026 launch (still Coming Soon, not callable yet). The one live change is cosmetic: direct-outreach sends moved into their own Direct Outreach section.๐ข Now Live Direct Outreach โ sends get their own section. The 6 direct-send endpoints (already beta) moved out of Contacts into a new Direct Outreach group. Paths, methods, and behavior are unchanged โ docs grouping only, no action needed. ๐ Coming Soon (not callable yet) Live Data โ Search API โข Preview a search โ
POST /v3/live-data/searches/preview โ 202 {jobId} (no prospects, no credits)
โข Start a search โ POST /v3/live-data/searches โ 200 {searchId} (note: 200, not 202; consumes credits)
โข List searches โ GET /v3/live-data/searches (default top 100)
โข Get a search โ GET /v3/live-data/searches/{id}
New 422 liveDataSearch.noMatchingContacts. Status enum: inProgress / finished / noMoreContacts / manuallyPaused / pausedDueToInsufficientCredits.
AI SDR โ Autopilot preview
โข POST /v3/sequences/ai-sdr/{sequence_id}/autopilot/preview โ 202 {jobId}, poll GET /v3/background-jobs/{id} for {contactsCount, companiesCount, sampleContacts}. Try-before-save: filter config doesn't need saving first.
AI SDR โ Sequence preview & personalization
โข Get preview โ GET /v3/sequences/{sequence_id}/contacts/{contact_id}/preview (generic, not AI-SDR-only)
โข Reset preview โ POST .../preview/reset
โข Personalize โ POST /v3/sequences/ai-sdr/{sequence_id}/contacts/{contact_id}/preview/personalize โ 202 {jobId}, progress personalizedSteps/totalSteps
Early adopters: personalization endpoint renamed from๐ง Housekeeping โข New Direct Outreach tag (after Custom Fields) โข Live Data list + AI SDR Approvals listto `.../preview/personalize`; bulk stub removed. Never shipped, so no live impact..../personalization/start
top default corrected 25 โ 100
โข Live Data search status enum casing fixed to camelCase
โข totalSteps documented in the personalization job result
๐ Full docs: docs.reply.io/api-referenceDasha
07/08/2026, 3:51 PMDasha
07/17/2026, 11:17 AMTL;DR: Sequence sorting & date filters,๐ข Now Live โข Workspace โon contact accounts, new team-users endpoint. Counts, unarchive, CSV export & email stats documented ahead of July releases.emailProvider
GET /v3/whoami/team-users lists all users in your team: teamId, teamName, userId, userName, userEmail
โข Sequences โ GET /v3/sequences gains sortBy (`created`/`name`/`status`), sortDirection (`asc`/`desc`, requires sortBy), createdAfter (ISO-8601); invalid sort โ 400 sequence.invalidSort
โข Contact Accounts โ single-account responses add read-only emailProvider, resolved from the domain's MX records (gSuite, office, gmail, โฆ); null when undetermined
โข AI SDR Reply Handlers (beta) โ new deliveryMode (`draft`/`auto`/`stopAndNotify`) + `additionalNotificationEmail`; stopAndNotify is feature-gated โ 403 knowledgeBase.stopAndNotifyNotEnabled
๐ Coming Soon
late July 2026:
โข Counts (return {"count": N}): POST /v3/contacts/filter/count โข GET /v3/sequences/count โข GET /v3/sequences/{id}/contacts/count
โข Unarchive: POST /v3/sequences/{id}/unarchive โข POST /v3/sequences/unarchive (bulk, 1โ100 ids, non-atomic)
โข Email account stats: GET /v3/email-accounts/{id}/stats โข POST /v3/email-accounts/stats (emailsSentToday, totalEmailsSent, dailySendingLimit)
mid-July 2026:
โข GET /v3/holiday-calendars/{id}/export-csv โ CSV download, filename = calendar name
๐docs.reply.io/api-reference/introductionDasha
07/27/2026, 3:27 PMcontact_replied webhook, email_replied now fires on every email reply (was first-reply-only), richer sequence_fields on all sequence webhooks โ and one breaking change: email_replied dropped its reason field. All webhook changes are v3 only โ v2 is untouched.
๐ข Now Live
Contacts โ inbox threads on a contact's timeline (Beta)
โข GET /v3/contacts/{id}/inbox-threads โ email/LinkedIn threads for a contact; paged top (default 25, max 1000) / `skip`; scope contacts:read. New Contact Inbox Thread schema.
Inbox โ reply to a specific message
โข messageId (string, nullable) now returned on email & LinkedIn messages.
โข replyToMessageId (string, nullable) on the email send request โ omit to reply to the last message in the thread.
Webhooks โ email_replied now fires on every reply
โข Previously it fired only on the first reply from a contact, so any replies after that weren't tracked. Now you get an event for every new email reply.
Webhooks โ new contact_replied event
โข Channel-agnostic status signal โ fires whenever a contact's status changes to "Replied", regardless of how (email, LinkedIn, SMS, or manual/API mark). `reason`: EmailDetected / LinkedInDetected / SmsDetected / StatusSetManually.
โข Payload: reply_date, reply_message_id, reason, contact_fields, contact_custom_fields, sequence_fields. Correlate to per-channel webhooks via reply_message_id.
Webhooks โ richer sequence_fields
โข Now consistently carries id + name + step_number across sequence events (was id-only or `id`+`step_number` on some).
โข linkedin_reply_categorized now carries sequence_fields + opt-in linkedin_message (needs includeLinkedInMessageText).
Auth โ stable error codes for Organization API keys
โข Rejected impersonation โ application/problem+json with a `code`: 403 USER_REQUIRED, 401 USER_NOT_FOUND, 403 TEAM_NOT_ACCESSIBLE.
Breaking Changes
email_replied โ reason removed; scope narrowed
Before: fired only on the first detected reply or when contact status was set to "Replied"; payload had reason (`EmailDetected`/`StatusSetManually`).
After: no `reason`; fires on every detected email reply โ and only on detected replies. Manual "Replied" marks now flow through contact_replied.
Action: stop reading `reason`; expect multiple events per contact; to catch manual marks subscribe to contact_replied (reason: StatusSetManually).
Note: these webhook changes apply to v3 webhooks only โ v2 behavior is unchanged.
๐ Full docs: docs.reply.io/api-reference