lemlist · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Lemlist Inbox API
16 actions
16 updates
phrasing
extends
openapi/lemlist-inbox-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.
What the actions change
x-apievangelist-phrasing
Targets 16
$.info
$.paths['/inbox'].get
$.paths['/inbox/{contactId}'].get
$.paths['/inbox/email'].post
$.paths['/inbox/linkedin'].post
$.paths['/inbox/whatsapp'].post
$.paths['/inbox/labels'].get
$.paths['/inbox/labels'].post
$.paths['/inbox/labels/{labelId}'].get
$.paths['/inbox/conversations/labels/{contactId}'].post
$.paths['/inbox/conversations/labels/{contactId}'].delete
$.paths['/inbox/{contactId}/drafts'].get
$.paths['/inbox/{contactId}/drafts'].post
$.paths['/inbox/{contactId}/drafts/{draftId}'].get
$.paths['/inbox/{contactId}/drafts/{draftId}'].delete
$.paths['/inbox/{contactId}/drafts/{draftId}'].patch
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Lemlist Inbox API
version: 1.0.0
extends: openapi/lemlist-inbox-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: 15
- target: $.paths['/inbox'].get
update:
x-apievangelist-phrasing:
intent: List my inbox conversations
effect: read
questions:
- Which conversations are waiting in my lemlist unified inbox?
- Can I page through the inbox for one teammate?
instructions:
- text: List my inbox conversations.
- text: Show page {page} of the inbox for user {userId}, {limit} at a time.
slots:
page: query.page
userId: requestBody.userId
limit: query.limit
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}'].get
update:
x-apievangelist-phrasing:
intent: Read the message thread with a contact
effect: read
questions:
- How do I read the full conversation history with one contact?
- Can I mark a conversation as read when I fetch its messages?
instructions:
- text: Show the messages exchanged with contact {contactId}.
slots:
contactId: path.contactId
- text: Open the conversation with {contactId} and set markAsRead to {markAsRead}.
slots:
contactId: path.contactId
markAsRead: query.markAsRead
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/email'].post
update:
x-apievangelist-phrasing:
intent: Send an email to a contact from the inbox
effect: write
questions:
- How do I send a one-off email reply to a lead from the inbox?
- Can I CC someone when emailing a contact directly?
instructions:
- text: Email contact {contactId} with subject {subject} and message {message}.
slots:
contactId: requestBody.contactId
subject: requestBody.subject
message: requestBody.message
- text: Send lead {leadId} an email saying {message}, CC {cc}, from {sendUserEmail}.
slots:
leadId: requestBody.leadId
message: requestBody.message
cc: requestBody.cc
sendUserEmail: requestBody.sendUserEmail
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/linkedin'].post
update:
x-apievangelist-phrasing:
intent: Send a LinkedIn message to a contact
effect: write
questions:
- Can I send a LinkedIn DM to a lead through the API?
- How do I reply to a prospect on LinkedIn from lemlist?
instructions:
- text: 'Send a LinkedIn message to contact {contactId}: {message}.'
slots:
contactId: requestBody.contactId
message: requestBody.message
- text: Message lead {leadId} on LinkedIn as user {sendUserId} saying {message}.
slots:
leadId: requestBody.leadId
sendUserId: requestBody.sendUserId
message: requestBody.message
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/whatsapp'].post
update:
x-apievangelist-phrasing:
intent: Send a WhatsApp message to a contact
effect: write
questions:
- Is it possible to text a prospect on WhatsApp from lemlist?
- Which WhatsApp account will my message go out from?
instructions:
- text: 'Send a WhatsApp message to contact {contactId}: {message}.'
slots:
contactId: requestBody.contactId
message: requestBody.message
- text: WhatsApp lead {leadId} from account {sendUserWhatsappAccountId} saying {message}.
slots:
leadId: requestBody.leadId
sendUserWhatsappAccountId: requestBody.sendUserWhatsappAccountId
message: requestBody.message
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/labels'].get
update:
x-apievangelist-phrasing:
intent: List my team's inbox labels
effect: read
questions:
- What labels can I use to tag inbox conversations?
- Which conversation tags has my team already created?
instructions:
- text: List all inbox labels.
- text: Show the labels my team uses for conversations.
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/labels'].post
update:
x-apievangelist-phrasing:
intent: Create an inbox label
effect: write
questions:
- How do I add a new label for sorting conversations?
- Can I create a team-wide tag like 'Hot lead' for the inbox?
instructions:
- text: Create an inbox label called {labelName}.
slots:
labelName: requestBody.labelName
- text: Add a new conversation label named {labelName} for the team.
slots:
labelName: requestBody.labelName
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/labels/{labelId}'].get
update:
x-apievangelist-phrasing:
intent: Get details of one inbox label
effect: read
questions:
- What's stored on a particular inbox label?
- Can I look up a label's name from its id?
instructions:
- text: Show inbox label {labelId}.
slots:
labelId: path.labelId
- text: Get the name and info of label {labelId}.
slots:
labelId: path.labelId
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/conversations/labels/{contactId}'].post
update:
x-apievangelist-phrasing:
intent: Tag a conversation with labels
effect: write
questions:
- How do I tag a conversation with one or more labels?
- Can I replace a conversation's existing labels instead of adding to them?
instructions:
- text: Attach labels {labelIds} to the conversation with {contactId}, appendLabels {appendLabels}.
slots:
labelIds: requestBody.labelIds
contactId: path.contactId
appendLabels: requestBody.appendLabels
- text: Label conversation {contactId} with {labelIds} on top of its current labels, appendLabels {appendLabels}.
slots:
contactId: path.contactId
labelIds: requestBody.labelIds
appendLabels: requestBody.appendLabels
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/conversations/labels/{contactId}'].delete
update:
x-apievangelist-phrasing:
intent: Remove labels from a conversation
effect: destructive
questions:
- How do I untag a conversation that was labeled by mistake?
- Can I strip specific labels off one conversation?
instructions:
- text: Remove labels {labelIds} from the conversation with {contactId}.
slots:
labelIds: requestBody.labelIds
contactId: path.contactId
- text: Untag conversation {contactId} of {labelIds}.
slots:
contactId: path.contactId
labelIds: requestBody.labelIds
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts'].get
update:
x-apievangelist-phrasing:
intent: List message drafts for a contact
effect: read
questions:
- Which unsent drafts do I have for a given contact?
- Can I see the drafts a teammate wrote for a prospect?
instructions:
- text: List drafts for contact {contactId} owned by {draftOwner}.
slots:
contactId: path.contactId
draftOwner: query.draftOwner
- text: Show {draftOwner}'s pending drafts to {contactId}.
slots:
draftOwner: query.draftOwner
contactId: path.contactId
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts'].post
update:
x-apievangelist-phrasing:
intent: Create a message draft for a contact
effect: write
questions:
- How do I prepare a draft reply for a contact without sending it?
- What's the size limit on a draft's content?
instructions:
- text: 'Draft a {channel} message to {contactId} for {draftOwner}: {content}.'
slots:
channel: requestBody.channel
contactId: path.contactId
draftOwner: query.draftOwner
content: requestBody.content
- text: Create an email draft for {contactId} as {draftOwner} with subject {subject}, channel {channel}, body {content}.
slots:
contactId: path.contactId
draftOwner: query.draftOwner
subject: requestBody.subject
channel: requestBody.channel
content: requestBody.content
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].get
update:
x-apievangelist-phrasing:
intent: Get one draft with its full content
effect: read
questions:
- Can I read the full text and attachments of a single draft?
- Where do I open a specific saved draft for a contact?
instructions:
- text: Open draft {draftId} for contact {contactId} owned by {draftOwner}.
slots:
draftId: path.draftId
contactId: path.contactId
draftOwner: query.draftOwner
- text: Show the content of {draftOwner}'s draft {draftId} to {contactId}.
slots:
draftOwner: query.draftOwner
draftId: path.draftId
contactId: path.contactId
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a draft
effect: destructive
questions:
- How do I throw away a draft I don't want to send?
- Is a deleted draft actually erased or just marked deleted?
instructions:
- text: Delete draft {draftId} for contact {contactId} owned by {draftOwner}.
slots:
draftId: path.draftId
contactId: path.contactId
draftOwner: query.draftOwner
- text: Discard {draftOwner}'s draft {draftId} to {contactId}.
slots:
draftOwner: query.draftOwner
draftId: path.draftId
contactId: path.contactId
method: generated
generated: '2026-10-01'
- target: $.paths['/inbox/{contactId}/drafts/{draftId}'].patch
update:
x-apievangelist-phrasing:
intent: Edit an existing draft
effect: write
questions:
- Can I change the subject or body of a draft I already saved?
- How do I add a CC to an existing draft?
instructions:
- text: Change the subject of draft {draftId} for {contactId} (owner {draftOwner}) to {subject}.
slots:
draftId: path.draftId
contactId: path.contactId
draftOwner: query.draftOwner
subject: requestBody.subject
- text: Rewrite {draftOwner}'s draft {draftId} to {contactId} as {content}.
slots:
draftOwner: query.draftOwner
draftId: path.draftId
contactId: path.contactId
content: requestBody.content
method: generated
generated: '2026-10-01'