1. Email Account Automation
Plusvibe.ai API Documentation
  • Getting Started
    • Getting Started
    • Webhooks - Overview
    • Webhooks - Payload - Email Replies
    • Webhooks - Payload - Lead Marked As Label
    • Webhooks - Payload - Campaign Emails Sent
    • Webhooks - Payload - Bounced Email
    • Webhooks - Payload - Unibox Email Sent
    • Webhooks - Payload - System Alert
    • Workspace Deep Link Parameter
  • User API Endpoints
    • Workspace
      • Get workspaces
      • Add a new workspace
      • Copy workspace settings
      • Invite a user to a workspace
    • Campaign
      • Create a new campaign
      • Create a new subsequence
      • List all campaigns
      • Get campaign name
      • Get campaign status
      • Get campaign email accounts
      • Get campaign emails
      • Get campaign variation stats
      • Set campaign name
      • Activate campaign
      • Pause campaign
      • Update Campaign
      • Delete or archive a campaign
      • Duplicate campaign
      • Bulk Assign/Remove Tags from Campaigns
    • Lead
      • Add leads to a campaign
      • Add leads to a subsequence campaign
      • Get or search for lead
      • Delete leads from a campaign
      • Lead Variable/Label Update or Add
      • Fetch workspace leads
      • Update the status of a lead
      • Get lead counts by status
    • Email Account
      • List all email accounts in the workspace
      • Get email account status
      • Check account vitals
      • Enable Email account warmup
      • Pause Email account warmup
      • Delete Email account
      • Get Warmup Stats (Workspace-Level)
      • Bulk Add SMTP Accounts
      • Bulk Update Email Accounts
      • Bulk Update Email Account Warmup Status
      • Bulk Assign/Remove Tags from Email Accounts
      • Bulk reconnect email accounts
      • Get workspace email stats for a date range
      • Move Email Accounts to Another Workspace
      • Get email account stats for a date range (per mailbox)
    • Analytics
      • Get campaign summary
      • Get campaign stats
      • Get workspaces summary
      • Get all campaigns statistics
      • Get workspaces performance
    • Unibox
      • Get email threads (conversations)
      • Get emails
      • Get emails in Others folder
      • Get count of unread emails
      • Reply to an email
      • Forward an existing email
      • Compose New Email
      • Mark Email Read
      • Send to any address
      • Save Email as Draft
      • Delete an Entire Email Thread
      • Delete a Single Email Message
    • Blocklist
      • Get entries in the blocklist
      • Adds entries to the blocklist
      • Delete entries in the blocklist
    • Webhook
      • Add a new webhook
      • List webhooks
      • Delete webhook(s)
    • Tags
      • List Tags
      • Create a New Tag
      • Update an Existing Tag
      • Delete Multiple Tags
    • Client Access
      • Create client
      • Edit client
      • Update client status
      • Delete client
      • List clients
    • Email Placement Test
      • Child (Test Run) Test
        • List child (Test Run) tests
        • Get child test details
      • Results & Analytics
        • Get test summary
        • Get detailed test statistics
        • Get test result for a sender account
      • Parent Test (Recurring & One-off)
        • Create a new parent test
        • Update a parent test
        • List all parent tests
        • Get parent test details
        • Delete parent test(s)
        • Duplicate a parent test
      • Get recipient providers
    • Workspace Additional Fields
      • List Additional Fields
      • Create Additional Field
      • Update Additional Field Default Value
      • Delete Additional Field
    • DFY
      • Search Domain Availability
      • List DFY Subscriptions
      • Generate Sender Identities (MS Enterprise)
      • Place a DFY Order
      • Cancel a DFY Subscription
    • Email Account Automation
      • List automation rules
        GET
      • Create automation rule
        POST
      • Update automation rule
        PUT
      • Delete automation rule
        DELETE
      • Get automation rule
        GET
      • Enable / disable automation rule
        PATCH
      • Duplicate automation rule
        POST
    • Workspace Settings
      • Get Workspace Settings
      • Update Workspace Settings
      • List Lead Labels
      • Add Custom Lead Label
      • Delete Custom Lead Labels
    • Schemas
      • ScheduleV2
      • Campaign
      • EmailAccountId
      • WarmupStatus
      • BulkUpdateWarmupRequest
      • TagAction
      • BulkTagAssignmentRequest
      • ObjectId
      • HexColor
      • CreateTagRequest
      • UpdateTagRequest
      • DeleteTagsRequest
      • DeleteCampaignRequest
      • BulkReconnectRequest
      • SuccessResponse
      • ErrorResponse
      • ClientWorkspacePermission
      • CreateClientRequest
      • CreateClientResponse
      • UpdateClientRequest
      • ClientListItem
      • PatchClientStatusRequest
      • GenericSuccessResponse
      • ParentTest
      • ParentTestDetail
      • ChildTest
      • ChildTestDetail
      • VariationStepStats
      • VariationStats
      • CopyWorkspaceRequest
      • ResourceType
      • CopyWorkspaceResponse
      • EmailStatsHeader
      • EmailStatsResponse
      • EmailStatsChartPoint
      • ValidationErrorResponse
      • CheckSuccess
      • AuthFailure
  • For Email Infra Provider
    • Email Infra Provider Guide
    • List workspaces
    • List all email accounts in the workspace
    • Check if an email exists in another workspace
    • Initiate Google OAuth login flow
    • Initiate Microsoft OAuth login flow
    • Bulk Add SMTP Accounts (via Username and Password)
    • Schemas
      • AuthFailure
      • CheckSuccess
      • ErrorResponse
  1. Email Account Automation

Create automation rule

POST
https://api.plusvibe.ai/api/v1/ea-automation-rules/
Creates an automation rule. NORMAL rules are created active, at the lowest priority. Placement-test rules (EMAIL_PLACEMENT) are one per test: creating again for a ptest_id that already has a rule replaces that rule's configuration and sets its status (default ACTIVE) — the same effect as Update automation rule. The returned id identifies the rule; placement-test rules are nevertheless always addressed by ptest_id.
There are two kinds of automation rule, chosen by type:
NORMAL (default) — watches each selected account's own health metrics (bounce rate, reply rate, warmup health) and throttles the accounts whose metrics cross a threshold.
EMAIL_PLACEMENT — attached to one recurring email placement test; reacts to the inbox rate measured by that test's runs.
Both kinds apply the same action: when the rule fires, the matched accounts get the throttle in actions for recovery_in days, then their settings are restored per after_recovery. The account owner is notified and the EMAIL_AUTOMATION_RULE_TRIGGERED webhook fires.

Account-health rules (type: "NORMAL", default)#

Available metrics for conditions[].field (same names as the account list response):
fieldmeaning
3d_recipient_bounce_rateBounces caused by the recipient address, past 3 days (%)
3d_sender_bounce_rateBounces caused by your mailbox or domain being rejected, past 3 days (%)
7d_overall_warmup_healthOverall warmup health score over the past 7 days (%)
7d_google_warmup_healthGoogle warmup health score over the past 7 days (%)
7d_microsoft_warmup_healthMicrosoft warmup health score over the past 7 days (%)
7d_ooo_replyrateReply rate incl. out-of-office replies, past 7 days (%)
14d_ooo_replyrateSame, past 14 days (%)
30d_ooo_replyrateSame, past 30 days (%)
Accounts without enough recent activity for a metric are never matched by it.

Placement-test rules (type: "EMAIL_PLACEMENT")#

Send type: "EMAIL_PLACEMENT" and the test's ptest_id — the test's _id in the /email-placement/list/parent-tests response. Only recurring tests (type: AUTOMATIC) can have a rule; a one-off or manual test is rejected with 400. Each placement test holds at most one rule.
Inbox rate = the share of a run's test emails that landed in the recipients' inbox (%). A rule is evaluated once per completed test run; changes to the rule apply from the next run. An account that is already in a recovery period is skipped, so a rule never stacks throttles; the throttle starts the moment the rule fires, and ORIGINAL restores the settings the account had just before it.
Step 1 — choose how the inbox rate is evaluated with conditions[].field. Whole-test fields may be combined (logic AND/OR); inbox_r_account must be the rule's only condition. With a single condition send "logic": "AND".
fieldevaluation
inbox_r_1Whole test: one inbox rate for the entire run, all tested senders combined
inbox_r_2Whole test: average of the last 2 runs
inbox_r_3Whole test: average of the last 3 runs
inbox_r_accountEach tested sender individually: its own inbox rate in the latest run. Only the senders whose own rate meets the condition (for example, below 90%) are actioned; the others are left untouched.
Which to pick: use a whole-test field when the placement test samples a few accounts that stand in for a larger group (for example one random account per domain) and you want to act on that group. Use inbox_r_account when the test covers the accounts you care about directly and only the ones that actually land in spam should be rested.
Step 2 — choose who gets the action with selection.type:
selection.typewith inbox_r_1 / inbox_r_2 / inbox_r_3with inbox_r_account
PT_EMAIL_ACCOUNTevery sender tested in the runs that fed the metric (the last 1, 2 or 3 runs), regardless of its own resultonly the tested senders whose own rate met the condition
PT_ALL_ACCOUNT_OF_DOMAINevery workspace account on those tested senders' domainsevery workspace account on a domain where a tested sender met the condition
TAG / PROVIDERthat group of accounts (the whole-test result is treated as a signal for the group)not allowed (400)
ALL_ACCOUNTS and IDS are not allowed for placement-test rules.
Managing placement-test rules: they are addressed by type=EMAIL_PLACEMENT + ptest_id (never id) in update, detail and enable/disable, e.g. GET /ea-automation-rules/detail?workspace_id=...&type=EMAIL_PLACEMENT&ptest_id=.... They are not returned by the list endpoint, and cannot be deleted or duplicated through this API — disable them instead.
Example — rest only the senders that landed in spam, for 4 days:
{
  "workspace_id": "65099a0dd96fae8ab61130c0",
  "name": "Throttle senders that land in spam",
  "type": "EMAIL_PLACEMENT",
  "ptest_id": "695bb72b36a8249fc002f3d9",
  "selection": { "type": "PT_EMAIL_ACCOUNT" },
  "conditions": { "logic": "AND", "conditions": [
    { "field": "inbox_r_account", "operator": "less_than", "value": "90", "value_type": "PERCENT" } ] },
  "actions": { "daily_limit": 0, "is_warmup_max_daily_limit": 1, "warmup_max_daily_limit": 40, "is_warmup_reply_rate": 1, "warmup_reply_rate": 60 },
  "recovery_in": 4,
  "after_recovery": { "restore_type": "ORIGINAL" }
}

Request

Authorization
API Key
Add parameter in header
x-api-key
Example:
x-api-key: ********************
or
Body Params application/json

Examples

Responses

🟢200OK
application/json
Operation completed successfully.
Bodyapplication/json

🟠400Bad Request
Request Request Example
Shell
JavaScript
Java
Swift
cURL
curl --location 'https://api.plusvibe.ai/api/v1/ea-automation-rules/' \
--header 'x-api-key: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
    "workspace_id": "65099a0dd96fae8ab61130c0",
    "name": "Pause bouncing accounts",
    "selection": {
        "type": "ALL_ACCOUNTS"
    },
    "conditions": {
        "logic": "OR",
        "conditions": [
            {
                "field": "3d_recipient_bounce_rate",
                "operator": "greater_than",
                "value": "5",
                "value_type": "PERCENT"
            },
            {
                "field": "7d_overall_warmup_health",
                "operator": "less_than",
                "value": "70",
                "value_type": "NUMBER"
            }
        ]
    },
    "actions": {
        "daily_limit": 0,
        "is_warmup_max_daily_limit": 1,
        "warmup_max_daily_limit": 20,
        "is_warmup_reply_rate": 0
    },
    "recovery_in": 3,
    "after_recovery": {
        "restore_type": "ORIGINAL"
    }
}'
Response Response Example
200 - Success Example
{
    "status": "success",
    "id": "665f0a1b2c3d4e5f6a7b8c9d"
}
Modified at 2026-09-14 11:19:49
Previous
List automation rules
Next
Update automation rule
Built with