lemlist · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Lemlist Leads API

23 actions 23 updates phrasing extends openapi/lemlist-leads-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for lemlist's API. It is a proposal applied on top of the contract, not a document lemlist publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 23 · first 16 shown; the file carries all of them

$.info
$.paths['/leads/start/{leadId}'].post
$.paths['/leads/pause/{leadId}'].post
$.paths['/leads/interested/{leadIdOrEmail}'].post
$.paths['/leads/notinterested/{leadIdOrEmail}'].post
$.paths['/campaigns/{campaignId}/leads/{leadIdOrEmail}/interested'].post
$.paths['/campaigns/{campaignId}/leads/{leadIdOrEmail}/notinterested'].post
$.paths['/leads/{email}'].get
$.paths['/leads'].get
$.paths['/campaigns/{campaignId}/leads/{email}'].post
$.paths['/campaigns/{campaignId}/leads/{email}'].delete
$.paths['/campaigns/{campaignId}/leads/{leadId}'].delete
$.paths['/campaigns/{campaignId}/leads/{leadId}'].patch
$.paths['/leads/{leadId}/variables'].post
$.paths['/leads/{leadId}/variables'].delete
$.paths['/leads/{leadId}/variables'].patch

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Lemlist Leads API
  version: 1.0.0
extends: openapi/lemlist-leads-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 22
- target: $.paths['/leads/start/{leadId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Resume a paused lead
      effect: write
      questions:
      - How do I let a paused lead continue through the campaign sequence?
      - Can I unpause one lead without restarting the whole campaign?
      instructions:
      - text: Resume paused lead {leadId}.
        slots:
          leadId: path.leadId
      - text: Unpause lead {leadId} so their sequence continues.
        slots:
          leadId: path.leadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/pause/{leadId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Pause a lead's sequence
      effect: write
      questions:
      - Can I stop sending to one lead while the campaign keeps running?
      - How do I pause a lead in only one specific campaign?
      instructions:
      - text: Pause lead {leadId}.
        slots:
          leadId: path.leadId
      - text: Pause lead {leadId} in campaign {campaignId} only.
        slots:
          leadId: path.leadId
          campaignId: query.campaignId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/interested/{leadIdOrEmail}'].post
  update:
    x-apievangelist-phrasing:
      intent: Mark a lead interested in all campaigns
      effect: write
      questions:
      - How do I flag a lead as interested across every campaign they're in?
      - Can I mark someone interested using just their email?
      instructions:
      - text: Mark {leadIdOrEmail} as interested everywhere.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
      - text: Flag lead {leadIdOrEmail} as interested across all campaigns.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/notinterested/{leadIdOrEmail}'].post
  update:
    x-apievangelist-phrasing:
      intent: Mark a lead not interested in all campaigns
      effect: write
      questions:
      - How do I record that a prospect said no, across all campaigns?
      - Can I mark a lead as not interested by email address?
      instructions:
      - text: Mark {leadIdOrEmail} as not interested everywhere.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
      - text: Flag lead {leadIdOrEmail} as not interested in all campaigns.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{leadIdOrEmail}/interested'].post
  update:
    x-apievangelist-phrasing:
      intent: Mark a lead interested in one campaign
      effect: write
      questions:
      - Can I mark a lead interested in just one campaign and not the others?
      - How do I set interest for a lead within a single campaign?
      instructions:
      - text: Mark {leadIdOrEmail} as interested in campaign {campaignId} only.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
          campaignId: path.campaignId
      - text: In campaign {campaignId}, flag lead {leadIdOrEmail} as interested.
        slots:
          campaignId: path.campaignId
          leadIdOrEmail: path.leadIdOrEmail
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{leadIdOrEmail}/notinterested'].post
  update:
    x-apievangelist-phrasing:
      intent: Mark a lead not interested in one campaign
      effect: write
      questions:
      - Can I mark a lead not interested for one campaign while keeping them in others?
      - How do I record a campaign-specific rejection from a lead?
      instructions:
      - text: Record that {leadIdOrEmail} declined campaign {campaignId}, leaving their other campaigns untouched.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
          campaignId: path.campaignId
      - text: Lead {leadIdOrEmail} rejected our pitch in campaign {campaignId}; set them to not interested there.
        slots:
          leadIdOrEmail: path.leadIdOrEmail
          campaignId: path.campaignId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/{email}'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up a lead by email in the path
      effect: read
      questions:
      - Which campaigns is a given email address enrolled in as a lead?
      - Can I fetch a lead's record by putting their email in the URL?
      instructions:
      - text: Find the lead whose email is {email}.
        slots:
          email: path.email
      - text: Get lead {email} using API version {version}.
        slots:
          email: path.email
          version: query.version
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up a lead by id or email query
      effect: read
      questions:
      - How do I retrieve a lead when I only have its lead id?
      - Can I search for a lead with an id or email query parameter?
      instructions:
      - text: Retrieve the lead with id {id}.
        slots:
          id: query.id
      - text: Query leads by email {email} with version {version}.
        slots:
          email: query.email
          version: query.version
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{email}'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a lead to a campaign by email in the path
      effect: write
      questions:
      - Can I add a lead to a campaign by putting their email in the URL?
      - Will deduplication skip a lead whose email is already in another campaign?
      instructions:
      - text: Add {email} to campaign {campaignId} as {firstName} {lastName} via the email-in-path endpoint.
        slots:
          email: path.email
          campaignId: path.campaignId
          firstName: requestBody.firstName
          lastName: requestBody.lastName
      - text: Insert lead {email} into campaign {campaignId} with icebreaker {icebreaker}, deduplicate {deduplicate}.
        slots:
          email: path.email
          campaignId: path.campaignId
          icebreaker: requestBody.icebreaker
          deduplicate: query.deduplicate
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{email}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unsubscribe one lead email from a campaign
      effect: destructive
      questions:
      - How do I take a single email address out of a campaign?
      - Can I unsubscribe one lead from a campaign by their email?
      instructions:
      - text: Unsubscribe {email} from campaign {campaignId}.
        slots:
          email: path.email
          campaignId: path.campaignId
      - text: Remove lead email {email} from campaign {campaignId}'s sending.
        slots:
          email: path.email
          campaignId: path.campaignId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{leadId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a lead from a campaign by id
      effect: destructive
      questions:
      - Can I delete a lead record from a campaign entirely using its lead id?
      - Is there a way to force-remove a lead from a campaign?
      instructions:
      - text: Delete lead {leadId} from campaign {campaignId}.
        slots:
          leadId: path.leadId
          campaignId: path.campaignId
      - text: Force-delete lead {leadId} in campaign {campaignId} with action {action}.
        slots:
          leadId: path.leadId
          campaignId: path.campaignId
          action: query.action
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/{leadId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a lead's preferred contact method
      effect: write
      questions:
      - How do I change whether a lead is reached by email or phone in a campaign?
      - Can I update a lead's preferred contact channel?
      instructions:
      - text: Set lead {leadId} in campaign {campaignId} to prefer {preferredContactMethod}.
        slots:
          leadId: path.leadId
          campaignId: path.campaignId
          preferredContactMethod: requestBody.preferredContactMethod
      - text: Update the campaign {campaignId} lead {leadId} contact method to {preferredContactMethod}.
        slots:
          campaignId: path.campaignId
          leadId: path.leadId
          preferredContactMethod: requestBody.preferredContactMethod
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/{leadId}/variables'].post
  update:
    x-apievangelist-phrasing:
      intent: Add custom variables to a lead
      effect: write
      questions:
      - How do I add new personalization variables to a lead?
      - Can I attach a custom company variable to one lead for my templates?
      instructions:
      - text: Add the variable company={company} to lead {leadId}.
        slots:
          company: query.company
          leadId: path.leadId
      - text: Add a preferredContactMethod variable of {preferredContactMethod} on lead {leadId}.
        slots:
          preferredContactMethod: query.preferredContactMethod
          leadId: path.leadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/{leadId}/variables'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete custom variables from a lead
      effect: destructive
      questions:
      - Can I remove a personalization variable I no longer need from a lead?
      - How do I clear specific custom variables on one lead?
      instructions:
      - text: Delete the {company} variable from lead {leadId}.
        slots:
          company: query.company
          leadId: path.leadId
      - text: Remove variable {favoriteColor} from lead {leadId}.
        slots:
          favoriteColor: query.favoriteColor
          leadId: path.leadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/{leadId}/variables'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change values of a lead's existing variables
      effect: write
      questions:
      - How do I change the value of a variable already set on a lead?
      - Can I overwrite a lead's existing custom company value?
      instructions:
      - text: Change lead {leadId}'s existing company variable to {company}.
        slots:
          leadId: path.leadId
          company: query.company
      - text: Update the favoriteColor variable on lead {leadId} to {favoriteColor}.
        slots:
          leadId: path.leadId
          favoriteColor: query.favoriteColor
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/audio'].post
  update:
    x-apievangelist-phrasing:
      intent: Upload a voice message audio for a lead
      effect: write
      questions:
      - How do I attach a recorded voice note to a lead's voice message step?
      - Can I upload a custom audio file for one lead in a sequence?
      instructions:
      - text: Upload this audio for lead {leadId} on voice step {stepId}.
        slots:
          leadId: query.leadId
          stepId: query.stepId
      - text: Attach my recorded voice message to step {stepId} for lead {leadId}.
        slots:
          stepId: query.stepId
          leadId: query.leadId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/crm/filters'].get
  update:
    x-apievangelist-phrasing:
      intent: List filters from a connected CRM
      effect: read
      questions:
      - Which saved CRM views or reports can I import leads from?
      - Can I list Salesforce report filters for importing into a campaign?
      instructions:
      - text: List the {crm} filters for connected user {userId}.
        slots:
          crm: query.crm
          userId: query.userId
      - text: Show Salesforce filters of type {type}.
        slots:
          type: query.type
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/import'].post
  update:
    x-apievangelist-phrasing:
      intent: Import leads from a CRM into a campaign
      effect: write
      questions:
      - How do I pull leads from my CRM straight into a campaign?
      - Can a CRM import skip people already in other campaigns?
      instructions:
      - text: Import leads from {crm} filter {filterId} into campaign {campaignId}.
        slots:
          crm: requestBody.crm
          filterId: requestBody.filterId
          campaignId: path.campaignId
      - text: Import {filterType} {filterId} into campaign {campaignId} with deduplicate {deduplicate}.
        slots:
          filterType: requestBody.filterType
          filterId: requestBody.filterId
          campaignId: path.campaignId
          deduplicate: requestBody.deduplicate
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/'].get
  update:
    x-apievangelist-phrasing:
      intent: List the leads in a campaign
      effect: read
      questions:
      - Who are all the leads in a particular campaign?
      - Can I list only the leads in a campaign that are marked interested?
      - What's the most leads I can fetch from a campaign in one call?
      instructions:
      - text: List the leads in campaign {campaignId}.
        slots:
          campaignId: path.campaignId
      - text: Show up to {limit} leads in campaign {campaignId} with state {state}.
        slots:
          limit: query.limit
          campaignId: path.campaignId
          state: query.state
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a lead to a campaign with email in the body
      effect: write
      questions:
      - How do I add a new prospect to a campaign with their details and timezone?
      - Can I find and verify a lead's email while adding them to a campaign?
      instructions:
      - text: Add a lead to campaign {campaignId} with email {email}, timezone {timezone}.
        slots:
          campaignId: path.campaignId
          email: requestBody.email
          timezone: requestBody.timezone
      - text: Add {firstName} from {companyDomain} to campaign {campaignId} and find their email ({findEmail}).
        slots:
          firstName: requestBody.firstName
          companyDomain: requestBody.companyDomain
          campaignId: path.campaignId
          findEmail: query.findEmail
      method: generated
      generated: '2026-10-01'
- target: $.paths['/campaigns/{campaignId}/leads/'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unsubscribe leads from a campaign in bulk
      effect: destructive
      questions:
      - Can I unsubscribe several leads from a campaign in a single request?
      - How do I remove a batch of leads from one campaign?
      instructions:
      - text: Unsubscribe a batch of leads from campaign {campaignId}.
        slots:
          campaignId: path.campaignId
      - text: Bulk-remove these leads from campaign {campaignId}.
        slots:
          campaignId: path.campaignId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/leads/review/{leadId}'].post
  update:
    x-apievangelist-phrasing:
      intent: Launch a lead waiting for review
      effect: write
      questions:
      - How do I approve and launch a single lead that's stuck awaiting review?
      - Can I launch one reviewed lead without turning on auto-review for the campaign?
      instructions:
      - text: Launch lead {leadId}, which is waiting for review.
        slots:
          leadId: path.leadId
      - text: Approve the review of lead {leadId} and start sending.
        slots:
          leadId: path.leadId
      method: generated
      generated: '2026-10-01'