---
title: "Create a custom field"
method: POST
path: "/v1/custom-fields"
tags: ["Custom Fields"]
---

# Create a custom field

`POST /v1/custom-fields`

Creates a new custom field in your organization. A stable `slug` is automatically generated from the `name` and returned in the response. The slug is immutable: renaming the custom field later will not change it.

## Headers

- `x-workspace-id` string, uuid

## Request body

- PublicCreateCustomFieldDto
  - `name` string, required — Name of the custom field

## Response `201`

The created custom field

- PublicCustomFieldDto
  - `id` string, required
  - `name` string, required — Human-readable label. Can be renamed without breaking integrations.
  - `slug` string, required — Stable, immutable identifier derived from the name at creation time. Use this as the key when setting custom field values on a contact via POST/PATCH /contacts.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, required

## Other responses

- `400` — Invalid input data
- `401` — Invalid or missing API key
- `403` — Subscription required or plan not eligible
- `409` — A custom field with the same name already exists

---

[API](https://skmtc.net/skipcall/apis/skipcall-public-api.md) · [All operations](https://skmtc.net/skipcall/apis/skipcall-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skipcall/skipcall-public-api/versions/f594352719bd/schema)
