{
  "info": {
    "name": "Emailx API v1 beta",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://app.emailx.ai"
    },
    {
      "key": "api_key",
      "value": ""
    },
    {
      "key": "campaign_id",
      "value": ""
    },
    {
      "key": "channel",
      "value": "linkedin"
    },
    {
      "key": "client_workspace_id",
      "value": ""
    },
    {
      "key": "contact_id",
      "value": ""
    },
    {
      "key": "conversation_id",
      "value": ""
    },
    {
      "key": "delivery_id",
      "value": ""
    },
    {
      "key": "domain_id",
      "value": ""
    },
    {
      "key": "endpoint_id",
      "value": ""
    },
    {
      "key": "field_id",
      "value": ""
    },
    {
      "key": "invitation_id",
      "value": ""
    },
    {
      "key": "knowledge_id",
      "value": ""
    },
    {
      "key": "list_id",
      "value": ""
    },
    {
      "key": "mailbox_id",
      "value": ""
    },
    {
      "key": "member_id",
      "value": ""
    },
    {
      "key": "operation_id",
      "value": ""
    },
    {
      "key": "order_id",
      "value": ""
    },
    {
      "key": "prospect_id",
      "value": ""
    },
    {
      "key": "sender_id",
      "value": ""
    },
    {
      "key": "task_id",
      "value": ""
    },
    {
      "key": "template_id",
      "value": ""
    },
    {
      "key": "workspace_id",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "Inspect your API key",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/me",
        "description": "Required scope: `workspaces:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List accessible workspaces",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces",
        "description": "Required scope: `workspaces:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Retrieve a workspace",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}",
        "description": "Required scope: `workspaces:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List contacts",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create a contact",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"alex@example.com\",\n  \"name\": \"Alex\",\n  \"company\": \"Example Studio\"\n}"
        }
      }
    },
    {
      "name": "Retrieve a contact",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/{{contact_id}}",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Update a contact",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/{{contact_id}}",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"unsubscribed\": true\n}"
        }
      }
    },
    {
      "name": "List campaigns",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns?channel={{channel}}",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create a campaign draft",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"channel\": \"linkedin\",\n  \"name\": \"Example Studio outreach\",\n  \"audience\": \"Operations directors in Italian manufacturing companies\",\n  \"steps\": [\n    {\n      \"type\": \"connection_request\"\n    },\n    {\n      \"type\": \"message\",\n      \"message\": \"Write a short introduction using the sender profile.\",\n      \"wait_days\": 2\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "Retrieve a campaign and its steps",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Rename a campaign draft",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Reviewed outreach draft\"\n}"
        }
      }
    },
    {
      "name": "Read campaign setup and revision",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/configuration",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Configure an inactive campaign",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/configuration",
        "description": "Required scope: `campaigns:configure`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"sender_ids\": [\n    903\n  ]\n}"
        }
      }
    },
    {
      "name": "Pause a campaign",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/pause",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "List campaign prospects",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/prospects",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Add a resolved prospect to a LinkedIn draft",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/prospects",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"provider_id\": \"resolved_linkedin_member_id\",\n  \"linkedin_url\": \"https://www.linkedin.com/in/example-person/\",\n  \"first_name\": \"Alex\"\n}"
        }
      }
    },
    {
      "name": "Add existing contacts to an email draft",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/prospects",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"contact_ids\": [\n    123\n  ]\n}"
        }
      }
    },
    {
      "name": "List saved inbox conversations",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations?channel={{channel}}",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Retrieve saved conversation messages",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read saved reply context and revision",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/context",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access. Bounded saved context only, without provider refresh. Read completeness and freshness before composing a reply."
      }
    },
    {
      "name": "Queue an explicitly confirmed inbox reply",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/replies",
        "description": "Required scope: `inbox:send`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED, the current saved-context revision and confirm_send=true. Uses the original sender and thread. Unknown provider outcomes require reconciliation and are never automatically resent.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"text\": \"Thanks for your message. I will follow up shortly.\",\n  \"confirm_send\": true\n}"
        }
      }
    },
    {
      "name": "List connected sender metadata",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders?channel={{channel}}",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Inspect a sender and stored readiness",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/{{channel}}/{{sender_id}}",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Discover effective API permissions",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/capabilities",
        "description": "Required scope: `workspaces:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List active workspace teammates",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/members",
        "description": "Required scope: `team:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Discover reply notification owners",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/reply-routing/options?channel={{channel}}",
        "description": "Required scope: `team:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read workspace delivery totals",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/analytics?channel={{channel}}",
        "description": "Required scope: `analytics:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List recorded conversation outcomes",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/outcomes?channel={{channel}}",
        "description": "Required scope: `analytics:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List email templates",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/templates",
        "description": "Required scope: `templates:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create an email template",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/templates",
        "description": "Required scope: `templates:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Italian intro\",\n  \"subject\": \"A quick introduction\",\n  \"body\": \"<p>Hello</p>\",\n  \"goal\": \"Sales\"\n}"
        }
      }
    },
    {
      "name": "Retrieve an email template",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/templates/{{template_id}}",
        "description": "Required scope: `templates:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Update an email template",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/templates/{{template_id}}",
        "description": "Required scope: `templates:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"prompt\": \"Write a concise introduction.\"\n}"
        }
      }
    },
    {
      "name": "Resolve a bounded list of LinkedIn profiles",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/imports",
        "description": "Required scope: `campaigns:import`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and a campaign configuration revision; returns a queued durable operation without resolving profiles in the request.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"sender_id\": 903,\n  \"leads\": [\n    {\n      \"linkedin_url\": \"https://www.linkedin.com/in/example-person/\",\n      \"first_name\": \"Alex\",\n      \"company\": \"Example Studio\"\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "List durable campaign commands",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/operations",
        "description": "Required scope: `operations:read`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and operations:read, plus inbox:read for replies, contacts:read for People imports or campaigns:read for campaign operations."
      }
    },
    {
      "name": "Read durable command progress and results",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/operations/{{operation_id}}",
        "description": "Required scope: `operations:read`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and operations:read, plus inbox:read for replies, contacts:read for People imports or campaigns:read for campaign operations."
      }
    },
    {
      "name": "Cancel an eligible command before effects start",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/operations/{{operation_id}}/cancel",
        "description": "Required scope: `operations:write`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED, operations:write, the operation resource read grant and its original command grant. Cancellation succeeds only before processing begins.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Read import row outcomes",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/operations/{{operation_id}}/rows",
        "description": "Required scope: `operations:read`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and operations:read, plus inbox:read for replies, contacts:read for People imports or campaigns:read for campaign operations."
      }
    },
    {
      "name": "Preview a People selection",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/selection",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access. Read-only selection preview; requires an Idempotency-Key for safe request replay.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"channel\": \"email\",\n  \"filters\": {\n    \"company\": \"Example Studio\",\n    \"location\": \"Milano\"\n  }\n}"
        }
      }
    },
    {
      "name": "Review a manual LinkedIn draft for launch",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/reviews",
        "description": "Required scope: `campaigns:launch`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED. The review is local and short-lived; it does not verify provider health, quota or delivery.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Activate a reviewed LinkedIn campaign",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/launch",
        "description": "Required scope: `campaigns:launch`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and explicit confirm_launch=true. Activation uses native scheduled dispatch and does not initiate immediate outreach.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"review_id\": \"rev_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"confirm_launch\": true\n}"
        }
      }
    },
    {
      "name": "Review a paused LinkedIn campaign for resume",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/resume-reviews",
        "description": "Required scope: `campaigns:launch`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED. Supports paused, previously launched manual campaigns in normal mode. Blocks uncertain invitation attempts, import backlog and lost sender or plan access. The review is local and short-lived.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Resume a reviewed paused LinkedIn campaign",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/resume",
        "description": "Required scope: `campaigns:launch`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and explicit confirm_resume=true. Sets the campaign active for the periodic scheduler; it never dispatches a launch, resets progress or retries uncertain attempts.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"review_id\": \"rev_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"confirm_resume\": true\n}"
        }
      }
    },
    {
      "name": "Read saved LinkedIn campaign progress",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/progress",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access. Progress reflects saved local state. Timestamps do not prove provider delivery or campaign-cycle completion."
      }
    },
    {
      "name": "Read one LinkedIn prospect and its saved state",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/prospects/{{prospect_id}}",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access. Progress reflects saved local state. Timestamps do not prove provider delivery or campaign-cycle completion."
      }
    },
    {
      "name": "Prepare bounded email preview tasks",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/preparation",
        "description": "Required scope: `campaigns:generate`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Generate explicitly selected email previews",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/generations",
        "description": "Required scope: `campaigns:generate`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"task_ids\": [\n    101\n  ],\n  \"confirm_credit_use\": true\n}"
        }
      }
    },
    {
      "name": "List email message tasks",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages",
        "description": "Required scope: `messages:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read an owned email message and its revision",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}",
        "description": "Required scope: `messages:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Edit a generated email message before approval",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}",
        "description": "Required scope: `messages:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"preview_id\": 301,\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"subject\": \"A reviewed subject\"\n}"
        }
      }
    },
    {
      "name": "Approve the exact current email message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}/approve",
        "description": "Required scope: `messages:approve`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"preview_id\": 301,\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Reject a message and cancel its later draft steps",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}/reject",
        "description": "Required scope: `messages:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"preview_id\": 301,\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Review approved email content for activation",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/reviews",
        "description": "Required scope: `campaigns:launch-email`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Activate a reviewed email campaign for scheduled sending",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/launch",
        "description": "Required scope: `campaigns:launch-email`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"review_id\": \"rev_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\",\n  \"confirm_launch\": true\n}"
        }
      }
    },
    {
      "name": "Read saved email task status counts",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/progress",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Preview a CSV or XLSX People import",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/imports/preview",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"file_base64\": \"RW1haWwKYWRhQGV4YW1wbGUudGVzdAo=\",\n  \"filename\": \"contacts.csv\",\n  \"mapping\": {\n    \"email\": \"Email\"\n  },\n  \"channel\": \"email\",\n  \"offset\": 0,\n  \"limit\": 25\n}"
        }
      }
    },
    {
      "name": "Queue a reviewed People contact import",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/imports",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"file_base64\": \"RW1haWwKYWRhQGV4YW1wbGUudGVzdAo=\",\n  \"filename\": \"contacts.csv\",\n  \"mapping\": {\n    \"email\": \"Email\"\n  },\n  \"channel\": \"email\",\n  \"expected_fingerprint\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"confirm_import\": true\n}"
        }
      }
    },
    {
      "name": "Read bounded People import row outcomes",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/imports/{{operation_id}}/rows",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List do-not-contact lists for a LinkedIn campaign",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusion-lists",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create a do-not-contact list",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusion-lists",
        "description": "Required scope: `exclusions:write`. Agency client access also requires `agency:read` and current workspace access. Database-only matching; no profile lookup. Matching queued leads are skipped immediately.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Current customers\",\n  \"scope\": \"workspace\",\n  \"mode\": \"companies\",\n  \"rows\": [\n    {\n      \"company\": \"Example Studio\"\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "Switch a workspace do-not-contact list on or off for a campaign",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusion-lists/{{list_id}}",
        "description": "Required scope: `exclusions:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"enabled\": false\n}"
        }
      }
    },
    {
      "name": "Delete a do-not-contact list",
      "request": {
        "method": "DELETE",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusion-lists/{{list_id}}",
        "description": "Required scope: `exclusions:write`. Agency client access also requires `agency:read` and current workspace access. Deleting a list does not restore leads it already skipped.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "List do-not-contact entries",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusion-lists/{{list_id}}/entries",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Replace typed LinkedIn exclusion rules",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/exclusions",
        "description": "Required scope: `campaigns:targeting`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"roles\": [\n    \"Recruiter\"\n  ],\n  \"companies\": [\n    \"Example Competitor\"\n  ]\n}"
        }
      }
    },
    {
      "name": "Update LinkedIn ICP and AI sourcing on a launched campaign",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/targeting",
        "description": "Required scope: `campaigns:targeting`. Agency client access also requires `agency:read` and current workspace access. Launched campaigns only. A new ICP clears saved search queries and re-scores queued prospects without history.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"icp_description\": \"Operations directors at Italian manufacturing companies\"\n}"
        }
      }
    },
    {
      "name": "Preview or remove queued LinkedIn prospects without history",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/prospects/removals",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access. Prospects with any outreach history or uncertain attempt are kept.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"prospect_ids\": [\n    901\n  ],\n  \"apply\": false\n}"
        }
      }
    },
    {
      "name": "Read saved LinkedIn invitation usage and limits",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/linkedin/{{sender_id}}/limits",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access. Saved usage only; the LinkedIn plan is not checked and remaining capacity is an estimate."
      }
    },
    {
      "name": "Read saved campaign activity",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/activity",
        "description": "Required scope: `campaigns:read`. Agency client access also requires `agency:read` and current workspace access. Events are derived from saved timestamps and do not prove provider delivery."
      }
    },
    {
      "name": "Copy a campaign setup into a new draft",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/duplicates",
        "description": "Required scope: `campaigns:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Example Studio outreach, second wave\"\n}"
        }
      }
    },
    {
      "name": "Cancel one unsent email message",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}/cancel",
        "description": "Required scope: `messages:write`. Agency client access also requires `agency:read` and current workspace access. Sending or sent messages are never cancelled; later steps for the same person halt.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Discard a draft preview so it can be generated again",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}/reset",
        "description": "Required scope: `messages:write`. Agency client access also requires `agency:read` and current workspace access. Inactive drafts only. No AI runs; generate again through the credit-confirmed generation endpoint.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"preview_id\": 301,\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Return an approved unsent message to review",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/messages/{{task_id}}/revoke-approval",
        "description": "Required scope: `messages:approve`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"preview_id\": 301,\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n}"
        }
      }
    },
    {
      "name": "Approve several exact email previews",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/email/{{campaign_id}}/approvals",
        "description": "Required scope: `messages:approve`. Agency client access also requires `agency:read` and current workspace access. Each item is approved or refused on its own; approval never activates a campaign.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"items\": [\n    {\n      \"task_id\": 101,\n      \"preview_id\": 301,\n      \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "Read the current reply draft",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/reply-draft",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access. Returns the newest pending draft, or null. Send it through the confirmed reply operation with the exact text."
      }
    },
    {
      "name": "Edit a pending reply draft",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/reply-draft",
        "description": "Required scope: `inbox:write`. Agency client access also requires `agency:read` and current workspace access. Refused when the conversation moved on after the draft was written.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"draft_id\": 55,\n  \"text\": \"Thanks Alex, Thursday at 10:00 works for me.\"\n}"
        }
      }
    },
    {
      "name": "Discard a pending reply draft",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/reply-draft/discard",
        "description": "Required scope: `inbox:write`. Agency client access also requires `agency:read` and current workspace access. Discards the draft only; nothing is sent and the conversation is kept.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"draft_id\": 55\n}"
        }
      }
    },
    {
      "name": "Read needs-reply state and outcome revision",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/reply-state",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Remove a reply from Needs your reply",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/dismissals",
        "description": "Required scope: `inbox:write`. Agency client access also requires `agency:read` and current workspace access. Revision-bound: a newer prospect message keeps the reply listed. Classification is unchanged.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": 3\n}"
        }
      }
    },
    {
      "name": "List knowledge entries",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge",
        "description": "Required scope: `knowledge:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Add a text knowledge entry",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge",
        "description": "Required scope: `knowledge:write`. Agency client access also requires `agency:read` and current workspace access. Saves text only; no AI runs until a profile refresh is requested.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"title\": \"Pricing overview\",\n  \"content\": \"Emailx plans start at...\",\n  \"scope\": \"workspace\"\n}"
        }
      }
    },
    {
      "name": "Read a knowledge entry",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge/{{knowledge_id}}",
        "description": "Required scope: `knowledge:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Edit a text knowledge entry",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge/{{knowledge_id}}",
        "description": "Required scope: `knowledge:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"content\": \"Updated pricing overview.\"\n}"
        }
      }
    },
    {
      "name": "Delete a knowledge entry",
      "request": {
        "method": "DELETE",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge/{{knowledge_id}}",
        "description": "Required scope: `knowledge:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Queue a profile refresh from knowledge (uses AI)",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge/profile-refreshes",
        "description": "Required scope: `knowledge:write`. Agency client access also requires `agency:read` and current workspace access. Requires confirm_ai_use=true. Queues one native refresh per workspace per hour; completion is not verified.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"confirm_ai_use\": true\n}"
        }
      }
    },
    {
      "name": "Read company and sender profiles",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/knowledge/profiles",
        "description": "Required scope: `knowledge:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read a sender's writing voice",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/{{channel}}/{{sender_id}}/voice",
        "description": "Required scope: `knowledge:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Update a sender's writing voice",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/{{channel}}/{{sender_id}}/voice",
        "description": "Required scope: `voice:write`. Agency client access also requires `agency:read` and current workspace access. Members can change only their own voice; owners and admins can change any sender.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"enabled\": true,\n  \"samples\": [\n    {\n      \"text\": \"Ciao Marco, grazie per la risposta.\",\n      \"language\": \"it\"\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "Read saved research for a contact",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/{{contact_id}}/research",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List custom contact fields",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contact-fields",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create a custom contact field",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contact-fields",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"label\": \"Deal stage\"\n}"
        }
      }
    },
    {
      "name": "Rename or hide a custom contact field",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contact-fields/{{field_id}}",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"label\": \"Pipeline stage\"\n}"
        }
      }
    },
    {
      "name": "Read a contact's custom field values",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/{{contact_id}}/fields",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Set a contact's custom field values",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/{{contact_id}}/fields",
        "description": "Required scope: `contacts:write`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"values\": {\n    \"deal_stage\": \"Qualified\"\n  }\n}"
        }
      }
    },
    {
      "name": "Check saved email sender readiness",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/email/{{sender_id}}/readiness",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read saved warmup state",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/email/{{sender_id}}/warmup",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access. Saved state only; live warmup metrics are not fetched."
      }
    },
    {
      "name": "Start, pause, resume or tune warmup",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/email/{{sender_id}}/warmup/commands",
        "description": "Required scope: `warmup:write`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and a mailbox already connected to warmup in Emailx. One provider change per operation; unknown outcomes need reconciliation.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"action\": \"pause\"\n}"
        }
      }
    },
    {
      "name": "Read saved totals for one campaign",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/{{channel}}/{{campaign_id}}/analytics",
        "description": "Required scope: `analytics:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "List pending team invitations",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/invitations",
        "description": "Required scope: `team:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Invite a teammate",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/invitations",
        "description": "Required scope: `team:invite`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED. Owner or admin only; sends one invitation email.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"email\": \"teammate@example.com\",\n  \"role\": \"member\"\n}"
        }
      }
    },
    {
      "name": "Revoke a pending invitation",
      "request": {
        "method": "DELETE",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/invitations/{{invitation_id}}",
        "description": "Required scope: `team:invite`. Agency client access also requires `agency:read` and current workspace access.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Change a teammate's role",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/members/{{member_id}}",
        "description": "Required scope: `team:manage`. Agency client access also requires `agency:read` and current workspace access. Owner or admin only; you cannot change your own role and agency access is managed by the agency.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"role\": \"admin\"\n}"
        }
      }
    },
    {
      "name": "List owned sending domains",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/domains",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read a domain and its mailboxes",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/domains/{{domain_id}}",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read a provisioned mailbox without credentials",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/infrastructure/mailboxes/{{mailbox_id}}",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access. Passwords, app passwords and authenticator secrets are never returned."
      }
    },
    {
      "name": "List infrastructure orders",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/infrastructure/orders",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read an infrastructure order",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/infrastructure/orders/{{order_id}}",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create an expiring price quote",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/infrastructure/quotes",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access. Read-only: prices come from current Emailx pricing; taxes and discounts are added at checkout.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"offer\": \"prewarmed_domains\",\n  \"quantity\": 2,\n  \"currency\": \"eur\"\n}"
        }
      }
    },
    {
      "name": "Hand a quote off to hosted checkout",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/infrastructure/checkouts",
        "description": "Required scope: `infrastructure:purchase`. Agency client access also requires `agency:read` and current workspace access. Owner or admin only. Returns a hosted Emailx page; the API never charges, spends a balance or provisions.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"quote_token\": \"quo_COPY_THE_QUOTE_TOKEN\",\n  \"confirm_purchase_intent\": true\n}"
        }
      }
    },
    {
      "name": "Check domain availability through a durable operation",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/domains/availability-checks",
        "description": "Required scope: `infrastructure:read`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED. Runs a provider lookup in a worker; results are not reservations.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"query\": \"examplestudio\"\n}"
        }
      }
    },
    {
      "name": "List agency client workspaces you can open",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/agency/workspaces",
        "description": "Required scope: `agency:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create an agency client workspace",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/agency/workspaces",
        "description": "Required scope: `agency:manage`. Agency client access also requires `agency:read` and current workspace access. Issue or extend an API key grant before using the new workspace ID.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"Example Client\",\n  \"website\": \"https://example.com\",\n  \"plan\": \"linkedin\",\n  \"senders\": 1\n}"
        }
      }
    },
    {
      "name": "Read an agency client workspace",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/agency/workspaces/{{client_workspace_id}}",
        "description": "Required scope: `agency:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Grant or remove a teammate's access to a client",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/agency/workspaces/{{client_workspace_id}}/access",
        "description": "Required scope: `agency:manage`. Agency client access also requires `agency:read` and current workspace access. Changes app access only; API key grants are managed separately.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"actor_type\": \"subclient\",\n  \"actor_id\": 42,\n  \"access\": true\n}"
        }
      }
    },
    {
      "name": "Find LinkedIn prospects with AI through a durable operation",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/lead-searches",
        "description": "Required scope: `prospecting:write`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_EXECUTION_ENABLED and confirm_ai_and_search_use=true. Read candidates from the operation result, then add chosen ones as prospects.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"icp_description\": \"Heads of operations at Italian manufacturing companies\",\n  \"language\": \"Italian\",\n  \"sender_id\": 903,\n  \"confirm_ai_and_search_use\": true\n}"
        }
      }
    },
    {
      "name": "Page through saved conversation messages",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/conversations/{{channel}}/{{conversation_id}}/messages",
        "description": "Required scope: `inbox:read`. Agency client access also requires `agency:read` and current workspace access. Pages over saved messages only; no provider refresh, and history can be incomplete."
      }
    },
    {
      "name": "Export contacts as CSV",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/contacts/exports",
        "description": "Required scope: `contacts:read`. Agency client access also requires `agency:read` and current workspace access. Read-only and bounded; cells that could run as spreadsheet formulas are prefixed with an apostrophe.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"unsubscribed\": false,\n  \"limit\": 1000\n}"
        }
      }
    },
    {
      "name": "Get the hosted page to connect a sender",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/sender-connections",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access. Returns a hosted Emailx page; passwords and provider tokens are never accepted through the API.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"channel\": \"email\"\n}"
        }
      }
    },
    {
      "name": "Preview what disconnecting a sender affects",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/senders/{{channel}}/{{sender_id}}/disconnect-preview",
        "description": "Required scope: `senders:read`. Agency client access also requires `agency:read` and current workspace access. Read-only impact preview; disconnecting stays in Emailx."
      }
    },
    {
      "name": "Edit message steps and schedule on a launched LinkedIn campaign",
      "request": {
        "method": "PUT",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/campaigns/linkedin/{{campaign_id}}/live-sequence",
        "description": "Required scope: `campaigns:edit-live`. Agency client access also requires `agency:read` and current workspace access. Launched campaigns only, with the configuration revision. Sent messages are never changed; due times for queued messages are recalculated.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"expected_revision\": \"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n  \"steps\": [\n    {\n      \"label\": \"Intro\",\n      \"message_template\": \"Thank them for connecting and ask one question about their operations.\",\n      \"wait_days\": 0\n    },\n    {\n      \"label\": \"Follow-up\",\n      \"message_template\": \"Share one short, relevant example.\",\n      \"wait_days\": 4\n    }\n  ]\n}"
        }
      }
    },
    {
      "name": "List webhook endpoints",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints",
        "description": "Required scope: `webhooks:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Create a webhook endpoint",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only. The signing secret is returned once. Deliveries are signed with webhook-id, webhook-timestamp and webhook-signature (v1, HMAC-SHA256) and may arrive more than once; dedupe on webhook-id.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"url\": \"https://hooks.example.com/emailx\",\n  \"event_types\": [\n    \"operation.succeeded\",\n    \"operation.failed\"\n  ],\n  \"description\": \"CRM sync\"\n}"
        }
      }
    },
    {
      "name": "Read a webhook endpoint",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints/{{endpoint_id}}",
        "description": "Required scope: `webhooks:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Change a webhook endpoint",
      "request": {
        "method": "PATCH",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints/{{endpoint_id}}",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"enabled\": false\n}"
        }
      }
    },
    {
      "name": "Delete a webhook endpoint",
      "request": {
        "method": "DELETE",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints/{{endpoint_id}}",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only. Pending deliveries stop.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Rotate a webhook signing secret",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints/{{endpoint_id}}/secret-rotations",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only. The new secret is returned once; the previous secret keeps signing for 24 hours.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "Send a test event",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-endpoints/{{endpoint_id}}/test-events",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only. Queues one webhook.test event; the worker posts it within a minute.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    },
    {
      "name": "List webhook deliveries",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-deliveries",
        "description": "Required scope: `webhooks:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Read a webhook delivery",
      "request": {
        "method": "GET",
        "header": [],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-deliveries/{{delivery_id}}",
        "description": "Required scope: `webhooks:read`. Agency client access also requires `agency:read` and current workspace access."
      }
    },
    {
      "name": "Redeliver a webhook event",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "Idempotency-Key",
            "value": "{{$guid}}"
          }
        ],
        "url": "{{base_url}}/api/v1/workspaces/{{workspace_id}}/webhook-deliveries/{{delivery_id}}/redeliver",
        "description": "Required scope: `webhooks:manage`. Agency client access also requires `agency:read` and current workspace access. Requires EMAILX_API_WEBHOOKS_ENABLED. Owner or admin only. Schedules up to seven new attempts with the same webhook-id.",
        "body": {
          "mode": "raw",
          "raw": "{}"
        }
      }
    }
  ]
}
