---
title: "Send Outreach By Kol Route"
method: POST
path: "/api/crm/kols/{username}/send-outreach"
tags: ["CRM"]
---

# Send Outreach By Kol Route

`POST /api/crm/kols/{username}/send-outreach`

## Request

- Base URL: `https://api.kolens.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kolens.ai/api/crm/kols/{username}/send-outreach`
- Auth: HTTP bearer

Find-or-create a conversation for ``username`` and send the email.

Convenience endpoint for the KOL detail page's Outreach panel where
the user composes a draft against a KOL handle, not against an
existing conversation. Find-or-create on (workspace, platform,
username) so repeated sends pile up on the same conversation
timeline instead of fragmenting it.

Credits are charged by the Vercel BFF *before* it calls us — if
SendGrid rejects, we surface 502 and the BFF refunds. Keeping the
debit on the BFF side avoids cross-system distributed-transaction
pain (Supabase Postgres vs Railway Postgres are not the same DB).

## Path parameters

- `username` string, required

## Headers

- `x-kolens-user-id` string, nullable
- `x-kolens-workspace-id` string, nullable
- `x-kolens-user-name` string, nullable

## Request body

- SendOutreachByKolRequest
  - `to_addr` string, required
  - `subject` string, required
  - `body_text` string, required
  - `body_html` string, nullable
  - `kol_platform` string

## Response `201`

Successful Response

- SendOutreachByKolResponse
  - `event_id` string, required
  - `conversation_id` string, required
  - `reply_to` string, required
  - `is_new_conversation` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kolens/apis/kolens-api.md) · [All operations](https://skmtc.dev/kolens/apis/kolens-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kolens/apis/kolens-api/revisions/5d6865ab0a24?raw)
