---
title: "Create a lead"
method: POST
path: "/api/partner/leads"
tags: ["partner-api"]
---

# Create a lead

`POST /api/partner/leads`

Create a new lead tagged to the calling partner.
Upserts on contact_email — returns existing lead if already created by this partner.

## Request body

- CreateLeadRequest
  - `contact_name` string, required — Full name of the lead's primary contact.
  - `contact_email` string, required — Contact email. Used as the upsert key — a repeated email returns the existing lead.
  - `company_name` string, required — Legal or trading name of the lead's company.
  - `phone` string, nullable — Contact phone number in E.164 or local format.
  - `industry` string, nullable — Industry or sector of the company.
  - `notes` string, nullable — Free-form internal notes about the lead.

## Response `201`

Successful Response

- LeadResponse
  - `success` boolean
  - `data` LeadData, required
    - `lead_id` string, required — Unique identifier for the lead.
    - `contact_name` string, required
    - `contact_email` string, required
    - `company_name` string, required
    - `stage` string, required — Pipeline stage the lead is in.
    - `created_at` string, required
    - `is_existing` boolean, required — True if a lead with this email already existed and was returned instead of created.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/riskcube/apis/slack-lead-manager.md) · [All operations](https://skmtc.dev/riskcube/apis/slack-lead-manager/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/riskcube/slack-lead-manager/revisions/4442bbae8296/schema)
