---
title: "Create contacts"
method: POST
path: "/contacts"
tags: ["Customers"]
---

# Create contacts

`POST /contacts`

## Request

- Base URL: `https://app.pencil.ink/api/v1`
- URL: `https://app.pencil.ink/api/v1/contacts`
- Auth: HTTP bearer

Requires a `write` key.

## Request body

- DurableObjectInput: Writable fields depend on the endpoint. Requirements accept kind, personaId, storyActor, storyGoal, storyBenefit, and acceptanceCriteria. Unknown fields are ignored by the server-side allow-list.

## Response `201`

The resource.

- object
  - `data` DurableObject: Stable public shape for newly exposed durable objects. Internal workspace ids, deletion markers, sync data, storage credentials, and secrets are omitted.
    - `id` string
    - `displayId` union
      - string
      - number
    - `name` string
    - `title` string
    - `status` string
    - `kind` 'requirement' | 'user_story': Requirement subtype. Legacy rows are returned as requirement.
    - `personaId` string, nullable
    - `storyActor` string, nullable
    - `storyGoal` string, nullable
    - `storyBenefit` string, nullable
    - `acceptanceCriteria` string[]
    - `storySentence` string, nullable
    - `createdAt` integer, nullable: Epoch ms.
    - `updatedAt` integer, nullable: Epoch ms.

## Other responses

- `400`: Malformed request or invalid field (`validation_error`).
- `401`: Missing or invalid API key (`unauthorized`).
- `403`: The key is read-only and may not write (`forbidden`).

---

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