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

# Create a custom field

`POST /v1/businesses/{client_id}/custom-fields`

Creates a new custom field for the given business. The `created_by` value will be set to `PUBLIC_API`.

## Path parameters

- `client_id` integer, required

## Request body

- CreateCustomFieldRequest
  - `name` string, required — The display name for the custom field. Must be unique within the business.
  - `field_type` 'LIST' | 'FREE_TEXT', required — The type of the custom field.
  - `budget_setting` 'NONE' | 'SOME' | 'ALL_CURRENT_AND_NEW' — Controls which budgets this custom field is assigned to.

## Response `201`

Created

- CustomField
  - `id` string, uuid — The unique identifier for this custom field.
  - `name` string — The display name of the custom field.
  - `field_type` 'LIST' | 'FREE_TEXT' — The type of the custom field.
  - `budget_setting` 'NONE' | 'SOME' | 'ALL_CURRENT_AND_NEW' — Controls which budgets this custom field is assigned to.
  - `is_manager_only` boolean — Whether this custom field is visible only to managers. Cannot be changed after creation.
  - `created_by` 'MANUAL' | 'PUBLIC_API' | 'XERO' | 'MYOB' | 'QUICKBOOKS' | 'NETSUITE' | 'BUSINESS_CENTRAL' — The source that created this custom field.
  - `created` string, date-time — The date and time when this custom field was created.
  - `updated` string, date-time — The date and time when this custom field was last updated.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/letsweel/apis/weel-openapi.md) · [All operations](https://skmtc.net/letsweel/apis/weel-openapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/letsweel/weel-openapi/revisions/55da5fa350fb/schema)
