---
title: "Add a person or a company to your contacts."
method: POST
path: "/strategy/contacts"
tags: ["Strategy"]
---

# Add a person or a company to your contacts.

`POST /strategy/contacts`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/strategy/contacts`
- Auth: HTTP bearer

A person (`primaryEmail`, `title`, `companyName`) or a company (`domain`, `description`), each with `notes` and `tags`; the other kind's fields are refused. A person whose email, or a company whose domain, you already have is that contact, updated, so the same contact twice never makes two. Requires `Idempotency-Key`. Free. Scope: `story:write`.

## Headers

- `Idempotency-Key` string, required

## Request body

- CreateStrategyContactRequest
  - `kind` 'person' | 'company', required
  - `name` string, required
  - `primaryEmail` string: A person's email.
  - `title` string: A person's job title.
  - `companyName` string: The company a person works for, in words.
  - `domain` string: A company's web domain.
  - `description` string: What a company does.
  - `notes` string
  - `tags` string[]

## Response `200`

The contact.

- StrategyContactEnvelope
  - `contact` union, required
    - StrategyPerson
      - `id` string, required
      - `kind` 'person', required
      - `name` string, required
      - `primaryEmail` string, nullable, required
      - `title` string, nullable, required
      - `companyName` string, nullable, required
      - `notes` string, nullable, required
      - `tags` string[], required
      - `interactionCount` integer, required
      - `updatedAt` string, date-time, required
    - StrategyCompany
      - `id` string, required
      - `kind` 'company', required
      - `name` string, required
      - `domain` string, nullable, required
      - `description` string, nullable, required
      - `notes` string, nullable, required
      - `tags` string[], required
      - `peopleCount` integer, required
      - `updatedAt` string, date-time, required

## Other responses

- `400`: `validation_failed`: the message names the field.
- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.
- `503`: `strategy_unavailable`: Strategy, or its watches, is switched off right now.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/4534f5d25540?raw)
