---
title: "Create message draft"
method: POST
path: "/v1/drafts"
tags: ["LinkedIn"]
---

# Create message draft

`POST /v1/drafts`

## Request

- Base URL: `https://api.talktohumans.app`
- URL: `https://api.talktohumans.app/v1/drafts`
- Auth: HTTP bearer

Create or replace a message or connection request draft

## Request body

- union
  - object
    - `account_id` string, required: LinkedIn account ID returned by `GET /v1/accounts`.
    - `conversation_id` string, required: Existing conversation ID returned by `GET /v1/conversations`. Provide exactly one target.
    - `contact_id` string: Contact ID returned by `POST /v1/contacts` or `GET /v1/contacts`. Provide exactly one target.
    - `draft_message` string, required: Plain-text draft. Surrounding whitespace is trimmed and the existing draft for the selected compose context is replaced.
  - object
    - `account_id` string, required: LinkedIn account ID returned by `GET /v1/accounts`.
    - `conversation_id` string: Existing conversation ID returned by `GET /v1/conversations`. Provide exactly one target.
    - `contact_id` string, required: Contact ID returned by `POST /v1/contacts` or `GET /v1/contacts`. Provide exactly one target.
    - `draft_message` string, required: Plain-text draft. Surrounding whitespace is trimmed and the existing draft for the selected compose context is replaced.

## Response `200`

Draft saved in TalkToHumans. The message was not sent.

- CreateMessageDraftEnvelope
  - `data` CreateMessageDraftResponse, required
    - `draft` union, required
      - object
        - `conversation_id` string, required: Existing TalkToHumans conversation ID when the draft targets a conversation.
        - `contact_id` string: TalkToHumans contact ID when the draft targets that contact's compose context.
        - `account` AccountSummary, required
          - `account_id` string, required: TalkToHumans account ID.
          - `display_name` string, required
          - `provider_account_id` string, required: LinkedIn provider account ID.
          - `owner_user_id` string, required: TalkToHumans user ID that owns the account.
        - `draft_message` string, required: Normalized plain-text content saved in the composer.
        - `app_url` string, uri, required: Opens the existing conversation or the new-message composer with the contact selected.
        - `updated_at` string, date-time, required
      - object
        - `conversation_id` string: Existing TalkToHumans conversation ID when the draft targets a conversation.
        - `contact_id` string, required: TalkToHumans contact ID when the draft targets that contact's compose context.
        - `account` AccountSummary, required
          - `account_id` string, required: TalkToHumans account ID.
          - `display_name` string, required
          - `provider_account_id` string, required: LinkedIn provider account ID.
          - `owner_user_id` string, required: TalkToHumans user ID that owns the account.
        - `draft_message` string, required: Normalized plain-text content saved in the composer.
        - `app_url` string, uri, required: Opens the existing conversation or the new-message composer with the contact selected.
        - `updated_at` string, date-time, required

## Other responses

- `400`: Invalid request parameters.
- `401`: Missing, malformed, invalid, or retired local API key.
- `403`: API access is not enabled for the organization, the API key cannot resolve to an active organization user, or the credential cannot access the requested LinkedIn account.
- `404`: Requested resource was not found.
- `429`: Rate limit exceeded. Public routes allow 50 requests per 10 seconds per IP and endpoint.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/talktohumans/apis/talktohumans-public-api.md) · [All operations](https://skmtc.dev/talktohumans/apis/talktohumans-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/talktohumans/apis/talktohumans-public-api/revisions/4551ad2f26af?raw)
