> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prophia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CREATE Custom Field

> Creates a Building Custom Field on the Account. A `MULTI` field is created with its options.

**Required capabilities:** `WRITE:CUSTOM_FIELD`



## OpenAPI

````yaml /api-reference/openapi.json post /rest/v2/accounts/{accountId}/custom-fields
openapi: 3.1.0
info:
  title: Prophia API Documentation
  license:
    name: Apache 2.0
    url: http://springdoc.org
  version: v2.495.0
servers:
  - url: https://api.prophia.com
    description: Prophia API
security:
  - apiKey: []
tags:
  - name: Accounts
    description: >-
      Accounts are the top-level scope for everything in the API. Start here:
      list your accounts to find the `accountId` every other path requires.
  - name: Properties
    description: >-
      Properties group one or more buildings under a single asset within an
      account.
  - name: Buildings
    description: Buildings are the physical structures where leases and spaces live.
  - name: Building Spaces
    description: >-
      Building spaces are the units inside a building — suites, floors, storage.
      A space's `suiteNumber` is the canonical name that tag `applicableSpaces`
      entries reference by string match.
  - name: Leases
    description: >-
      Leases are the agreements occupying building spaces. Each lease carries
      its source documents and the tags (structured terms) extracted from them.
  - name: Documents
    description: >-
      Documents are the source files attached to leases — original leases,
      amendments, memorandums, etc.
  - name: Tags
    description: >-
      Tags are the structured lease terms Prophia extracts from documents — a
      rent amount, a renewal option, a key date — each cited to its location in
      the source document. STANDARD tags carry a typed `value`; COMPLEX tags
      carry option details in `tagComponents`.
  - name: Custom Terms
    description: >-
      Custom terms are account-level definitions of extra lease terms your team
      tracks beyond Prophia's standard set. Tags created from them are ordinary
      tags with `isCustomTag: true` — the definition and its tag instances are
      separate resources.
  - name: Custom Fields
    description: >-
      Custom Fields are Account-level fields your team tracks on Buildings
      beyond Prophia's standard set. A `SINGLE` field holds free text per
      Building; a `MULTI` field holds one of a fixed list of options.
      Assignments set a field's value on a Building.
  - name: Loans
    description: >-
      Loans are the financing agreements secured by an account's buildings. Each
      loan carries its source documents and the terms read from them: summary
      terms, covenants and reporting deliverables. Loans is a Labs feature in
      beta, and its endpoints may change.
    x-beta: true
paths:
  /rest/v2/accounts/{accountId}/custom-fields:
    post:
      tags:
        - Custom Fields
      summary: CREATE Custom Field
      description: >-
        Creates a Building Custom Field on the Account. A `MULTI` field is
        created with its options.


        **Required capabilities:** `WRITE:CUSTOM_FIELD`
      operationId: createCustomField
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2CreateCustomFieldRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/V2CustomFieldModel'
        '400':
          description: Invalid input — request body failed validation or business rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Invalid Input
                errorCode: InvalidInput
                message: dba cannot be blank
                status: 400 BAD_REQUEST
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: dba cannot be blank
        '401':
          description: >-
            The credential was rejected before the request reached the endpoint
            — for example a JWT was presented where an API key is required. Only
            `error` is populated on this path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: JWT authentication is not supported. Use an API key.
        '403':
          description: >-
            The API key is valid but lacks a required capability or role, the
            account does not have the REST write module enabled, or the key's
            building permissions do not cover the requested resource. The
            message names the missing capabilities only in the first case
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Access Denied
                errorCode: AccessDenied
                message: 'Not authorized. Missing capabilities: WRITE:DOCUMENT'
                status: 403 FORBIDDEN
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: 'Not authorized. Missing capabilities: WRITE:DOCUMENT'
        '404':
          description: No such resource is visible to the account named in the path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Entity Not Found
                errorCode: EntityNotFound
                message: This entity is not found in the system.
                status: 404 NOT_FOUND
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: This entity is not found in the system.
components:
  schemas:
    V2CreateCustomFieldRequest:
      type: object
      description: Fields for creating a Building Custom Field on an Account.
      properties:
        fieldName:
          type: string
          description: >-
            Name of the field. Must be unique among the Account's Custom Fields,
            ignoring case, and cannot be `No Value`.
          minLength: 1
        fieldType:
          type: string
          description: >-
            `SINGLE` fields hold free text per Building. `MULTI` fields hold one
            of a fixed list of `options`.
          enum:
            - SINGLE
            - MULTI
        active:
          type: boolean
          description: Whether the field is shown on Buildings. Defaults to `true`.
        options:
          type: array
          description: >-
            The choices for a `MULTI` field; at least one is required, and
            values must be unique ignoring case. Not accepted for `SINGLE`
            fields, whose values are set through assignments.
          items:
            type: string
      required:
        - fieldName
        - fieldType
    V2CustomFieldModel:
      type: object
      description: >-
        An Account-level field your team tracks on Buildings beyond Prophia's
        standard set.
      properties:
        id:
          type: string
          description: Prophia internal Custom Field ID (UUID).
          readOnly: true
        accountId:
          type: string
          description: The UUID for the Account this Custom Field belongs to.
          readOnly: true
        fieldName:
          type: string
          description: Name of the field.
        fieldType:
          type: string
          description: >-
            `SINGLE` fields hold free text per Building. `MULTI` fields hold one
            of a fixed list of `options`.
          enum:
            - SINGLE
            - MULTI
          readOnly: true
        active:
          type: boolean
          description: Whether the field is shown on Buildings.
        options:
          type: array
          description: The field's current options.
          items:
            $ref: '#/components/schemas/V2CustomFieldOptionModel'
          readOnly: true
        createdBy:
          type: string
          description: The user who created the field.
          readOnly: true
        createdAt:
          type: string
          format: date-time
          description: When the field was created.
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          description: When the field was last modified.
          readOnly: true
    V2ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Stable error category
          example: Invalid Input
        errorCode:
          type: string
          description: Stable error code suitable for programmatic handling
          example: InvalidInput
        message:
          type: string
          description: Human-readable detail; may aggregate multiple field errors
        status:
          type: string
          description: >-
            HTTP status of the response as code and reason phrase, matching the
            response's own status line
          example: 404 NOT_FOUND
        timestamp:
          type: string
          format: date-time
          description: When the error was produced, as an ISO-8601 UTC instant
          example: '2026-09-02T20:41:03.118Z'
        localizedMessage:
          type: string
          description: >-
            Same text as `message`; present because the body is a serialized
            exception. Prefer `message`
    V2CustomFieldOptionModel:
      type: object
      description: >-
        A value of a Building Custom Field. On `MULTI` fields these are the
        fixed choices; on `SINGLE` fields they are the distinct values assigned
        to Buildings.
      properties:
        id:
          type: string
          description: Prophia internal Custom Field Option ID (UUID).
          readOnly: true
        value:
          type: string
          description: The option's value.
        createdAt:
          type: string
          format: date-time
          description: When the option was created.
          readOnly: true
        updatedAt:
          type: string
          format: date-time
          description: When the option was last modified.
          readOnly: true
  securitySchemes:
    apiKey:
      type: apiKey
      description: >-
        Prophia API key — either an account key (grants admin level permissions)
        or a user key with the REST scope. Send it in the `X-API-Key` header, or
        equivalently as `Authorization: Bearer <api-key>`. JWTs are rejected on
        /rest endpoints with 401.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.