Skip to main content
POST
/
inbox
/
{contactId}
/
drafts
Create Draft
curl --request POST \
  --url https://api.lemlist.com/api/inbox/{contactId}/drafts \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "channel": "email",
  "content": "<p>Hello John, I wanted to follow up on our conversation.</p>"
}
'
{
  "draftId": "drf_abc123def456789"
}
The draftOwner query parameter is required and identifies the draft owner. It accepts either:
  • A userId (e.g., usr_abc123def456789) — used directly
  • A login email (e.g., john@acme.com) — resolved to userId via email lookup
This follows the same pattern as contactOwner in the Lead API. Team membership is verified in both cases.
Validations:
  • content must not be empty and has a max size of 30KB (30,000 characters)
  • channel must be one of: email, linkedin, whatsapp, sms
  • Maximum of 10 drafts per conversation
  • content and subject are sanitized for security

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Path Parameters

contactId
string
required

Contact ID

Query Parameters

draftOwner
string
required

Draft owner identifier. Accepts either a userId (e.g., usr_abc123def456789) or a login email (e.g., john@acme.com).

Body

application/json
channel
enum<string>
required

Communication channel

Available options:
email,
linkedin,
whatsapp,
sms
content
string
required

Draft content (max 30KB)

subject
string

Draft subject (optional)

cc
string[]

CC email addresses (optional)

attachments
object[]

File attachments (optional)

replyToActivityId
string

Activity ID to reply to (optional)

sourceMetadata
object

Additional metadata (optional)

Response

Draft created successfully

draftId
string

ID of the created draft