# Create a custom field template

URL: /en/docs/api/v1/custom-fields/post
Last Updated: 2026-07-30T21:15:44.939Z

## Description
No description available.

## Available Actions
- Execute POST request
- View request parameters
- View response schema
- Get code examples
- Navigate to related topics
- View step-by-step instructions
- Get best practices

## Content
### POST /api/v1/custom-fields

**Create a custom field template**

Create a new custom field template for the tenant.

**Authentication:** Bearer token (`Authorization: Bearer <token>`)

**Request body** (`application/json`) - required:

- `title` (string)
- `collection` (enum: accounts | contacts)
- `type` (enum: text | number | boolean | date | select | multi_select | checkbox)
- `always_ask` (boolean)
- `required` (boolean)
- `display` (array of enum: header | document)
- `default_value` (string)
- `order` (integer): Lower numbers are displayed first; defaults to the end of the list.
- `translations` (array of CustomFieldTranslation (object))
  - `languages_code` (enum: en-US | de-DE | fr-FR)
  - `title` (string)
- `options` (array of CustomFieldOption (object))
  - `value` (string)
  - `label` (array of CustomFieldOptionLabel (object))
    - `languages_code` (enum: en-US | de-DE | fr-FR)
    - `translation` (string)

Example (Select field with localized options):

```json
{
  "title": "Region",
  "collection": "accounts",
  "type": "select",
  "always_ask": false,
  "required": true,
  "display": [
    "header",
    "document"
  ],
  "translations": [
    {
      "languages_code": "en-US",
      "title": "Region"
    },
    {
      "languages_code": "fr-FR",
      "title": "Région"
    }
  ],
  "options": [
    {
      "value": "emea",
      "label": [
        {
          "languages_code": "en-US",
          "translation": "EMEA"
        },
        {
          "languages_code": "fr-FR",
          "translation": "Europe"
        }
      ]
    }
  ]
}
```

**Responses:**

- `201` - Custom field template created
  - `success` (boolean)
  - `data` (CustomFieldTemplate (object))
    - `title` (string)
    - `collection` (enum: accounts | contacts)
    - `type` (enum: text | number | boolean | date | select | multi_select | checkbox)
    - `always_ask` (boolean)
    - `required` (boolean)
    - `display` (array of enum: header | document)
    - `default_value` (string)
    - `order` (integer): Lower numbers are displayed first; defaults to the end of the list.
    - `translations` (array of CustomFieldTranslation (object))
      - `languages_code` (enum: en-US | de-DE | fr-FR)
      - `title` (string)
    - `options` (array of CustomFieldOption (object))
      - `value` (string)
      - `label` (array of CustomFieldOptionLabel (object))
        - `languages_code` (enum: en-US | de-DE | fr-FR)
        - `translation` (string)
- `400` - Bad Request - validation failed
  - `error` (string)
  - `details` (array of string)
- `401` - Unauthorized
- `403` - Forbidden - Admin role required
- `500` - Internal server error

**Code samples:**

cURL:

```bash
curl -X POST "https://app.orbiqhq.com/api/v1/custom-fields" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Region",
    "collection": "accounts",
    "type": "select",
    "always_ask": false,
    "required": true,
    "display": ["header", "document"],
    "translations": [
      { "languages_code": "en-US", "title": "Region" }
    ],
    "options": [
      { "value": "emea", "label": [{ "languages_code": "en-US", "translation": "EMEA" }] }
    ]
  }'

```

