---
title: "Create draft"
method: POST
path: "/channels/{channel_id}/drafts"
tags: ["Drafts"]
---

# Create draft

`POST /channels/{channel_id}/drafts`

Create a draft message which is the first message of a new [conversation](https://dev.frontapp.com/reference/conversations).

Required scope: `drafts:write`

## Path parameters

- `channel_id` string, required

## Request body

- CreateDraft
  - `author_id` string — ID of the teammate on behalf of whom the draft will be created. Alternatively, you can supply the author ID as a [resource alias](https://dev.frontapp.com/docs/resource-aliases-1). If omitted, will post as the API Token or Application making the request.
  - `to` string[] — List of recipient handles who will receive the message once the draft is sent
  - `cc` string[] — List of recipient handles who will receive a copy of the message once the draft is sent
  - `bcc` string[] — List of the recipient handles who will receive a blind copy of the message once the draft is sent
  - `subject` string — Subject of the draft.
  - `body` string, required — Body of the draft
  - `quote_body` string — Body for the quote that the message is referencing. Only available on email channels.
  - `attachments` string[] — Binary data of attached files. Must use `Content-Type: multipart/form-data` if specified. See [example](https://gist.github.com/hdornier/e04d04921032e98271f46ff8a539a4cb) or read more about [Attachments](https://dev.frontapp.com/docs/attachments-1). Max 25 MB.
  - `mode` 'private' | 'shared' — Mode of the draft to create. Can be 'private' (draft is visible to the author only) or 'shared' (draft is visible to all teammates with access to the conversation).
  - `signature_id` string — ID of the signature to attach to this draft. If null, no signature is attached.
  - `should_add_default_signature` boolean — Whether or not Front should try to resolve a signature for the message. Is ignored if signature_id is included. Default false;

## Response `200`

A message

- MessageResponse
  - `_links` object
    - `self` string — Link to resource
    - `related` object
      - `conversation` string — Link to message conversation
      - `message_replied_to` string — Link to message this message replied to
      - `message_seen` string — Link to message seen information
  - `id` string — Unique identifier of the message
  - `message_uid` string — Secondary unique identifier of a message. Generated by Front on message creation. Learn more at about the [message UID](https://dev.frontapp.com/reference/messages#creating-a-new-message).
  - `type` 'call' | 'custom' | 'email' | 'facebook' | 'front_chat' | 'googleplay' | 'intercom' | 'internal' | 'phone-call' | 'sms' | 'tweet' | 'tweet_dm' | 'whatsapp' | 'yalo_wha' — Type of the message
  - `is_inbound` boolean — Whether or not the message has been received or sent
  - `draft_mode` 'shared' | 'private', nullable — If the message is a draft, describes the draft mode. Can be 'private' (draft is visible to the author only) or 'shared' (draft is visible to all teammates with access to the conversation).
  - `error_type` string — Type of the error when the draft failed to be sent
  - `version` string — The current version of the message in Front
  - `created_at` number — The timestamp when the message was sent or received
  - `subject` string — Subject of the message
  - `blurb` string — Preview of the message body
  - `author` TeammateResponse — A teammate is a user in Front.
    - `_links` object, required
      - `self` string — Link to resource
      - `related` object
        - `inboxes` string — Link to teammate's inboxes
        - `conversations` string — Link to teammate's conversations
        - `botSource` string — Link to the source resource of the bot (e.g. rule)
    - `id` string, required — Unique identifier of the teammate
    - `email` string, required — Email address of the teammate
    - `username` string, required — Username of the teammate (used for "@" mentions)
    - `first_name` string, required — First name of the teammate
    - `last_name` string, required — Last name of the teammate
    - `is_admin` boolean, required — Whether or not the teammate is an admin in your company
    - `is_available` boolean, required — Whether or not the teammate is available
    - `is_blocked` boolean, required — Whether or not the teammate account has been blocked
    - `type` 'user' | 'visitor' | 'ai' | 'api' | 'application' | 'bulk_reply' | 'csat' | 'integration' | 'macro' | 'rule' | 'smart_csat', required — Type of the teammate, normal teammates are denoted as "user", while visitors are denoted as "visitor". Bot users are denoted by their parent resource type. The following bot types are available: * ai: acting on behalf of an AI * api: acting on behalf of OAuth clients * application: acting on behalf of an Application * bulk_reply: acting on behalf of a Bulk Reply * csat: used for authoring CSAT response comments * integration: acting on behalf of an Integration * macro: acting on behalf of a Macro, author of comments and drafts * rule: acting on behalf of a Rule, author of comments and drafts * smart_csat: acting on behalf of a Smart CSAT
    - `custom_fields` CustomFieldParameter, required — An object whose key is the `name` property defined for the custom field in the Front UI. The value of the key must use the same `type` specified for the custom field, as described in https://dev.frontapp.com/reference/custom-fields
  - `recipients` RecipientResponse[]
    - `_links` object, required
      - `related` object
        - `contact` string, nullable — Link to recipient contact
    - `name` string, nullable, required — Name of the recipient.
    - `handle` string, required — Handle of the contact. Can be any string used to uniquely identify the contact
    - `role` 'from' | 'to' | 'cc' | 'bcc' | 'reply-to', required — Role of the recipient
  - `body` string — Body of the message
  - `text` string — Text version of the body for email messages
  - `attachments` Attachment[] — List of files attached to the message
    - `id` string, required — The unique identifier of the attachment.
    - `filename` string, required — Name of the attached file
    - `url` string, required — URL to download the attached file
    - `content_type` string, required — Content type of the attached file in [MIME format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types). Note that some attachments types may not be supported.
    - `size` integer, required — Size (in byte) of the attached file
    - `metadata` object, required — Attachment metadata
      - `is_inline` boolean — Whether or not the attachment is part of the message body
      - `cid` string — Unique identifier used to link an attachment to where it is used in the message body
  - `signature` SignatureResponse
    - `_links` object, required
      - `self` string — Link to resource
      - `related` object
        - `owner` string — Link to signature's owner (either a team or teammate)
    - `id` string, required — Unique identifier of the signature
    - `name` string, nullable, required — Name of the signature
    - `body` string, required — Body of the signature
    - `sender_info` string, nullable, required — Sender info of the signature
    - `is_visible_for_all_teammate_channels` boolean, required — Whether or not the signature is available in teammate channels.
    - `is_default` boolean, required — Whether the signature is the default signature for the team or teammate.
    - `is_private` boolean, required — Whether the signature is private to the teammate.
    - `channel_ids` string[], nullable, required
  - `metadata` object — Optional metadata about the message
    - `intercom_url` string — For `intercom` messages only. URL of the Intercom conversation the message is coming from.
    - `duration` integer — For `truly-call` messages only. Length of the call in seconds.
    - `have_been_answered` boolean — For `truly-call` messages only. Whether or not the call have been answered.
    - `external_id` string — For `tweet` or 'custom' (partner channel token authenticated) messages only. Unique message identifier in the underlying provider (Twitter or Partner). For custom messages, only present for partner channel token authenticated requests.
    - `twitter_url` string — For `tweet` messages only. URL of the tweet.
    - `is_retweet` boolean — For `tweet` messages only. Whether or not the tweet is a retweet.
    - `have_been_retweeted` boolean — For `tweet` messages only. Whether or not the tweet have been retweeted.
    - `have_been_favorited` boolean — For `tweet` messages only. Whether or not the tweet have been favorited.
    - `thread_ref` string — For `custom` messages only. Custom reference which is used to thread messages.
    - `headers` object — For `custom` messages only. Custom object holding internal information.
    - `chat_visitor_url` string — For `front_chat` messages only. Source URL from the chat widget when sending a message.

---

[API](https://skmtc.net/frontapp/apis/core-api.md) · [All operations](https://skmtc.net/frontapp/apis/core-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/frontapp/core-api/revisions/76d1eaa2d0eb/schema)
