Skip to main content
PATCH
/
crm
/
objects
/
{slug}
/
attributes
/
{attributeKey}
Update an attribute on a CRM object
curl --request PATCH \
  --url https://api.zeeg.me/v2/crm/objects/{slug}/attributes/{attributeKey} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "label": "Status",
  "isRequired": true,
  "isArchived": false,
  "options": [
    {
      "value": "Active",
      "color": "success",
      "id": 1
    }
  ],
  "relatedObjectLabel": "Contact Person",
  "currencyDisplay": "code",
  "currencyDecimal": false,
  "currencyGrouping": false
}
'
{
  "success": true,
  "status": 200,
  "attribute": {
    "key": "customer_status",
    "label": "Status",
    "type": "select",
    "isRequired": true,
    "isStandard": false,
    "isUnique": false,
    "isArchived": false,
    "options": [
      {
        "id": 1,
        "value": "Lead",
        "color": "warning"
      },
      {
        "id": 2,
        "value": "Active",
        "color": "success"
      },
      {
        "id": 3,
        "value": "Churned",
        "color": "red"
      }
    ],
    "createdAt": "2025-06-15T10:00:00+00:00",
    "updatedAt": "2025-06-20T14:00:00+00:00"
  }
}

Documentation Index

Fetch the complete documentation index at: https://developer.zeeg.me/llms.txt

Use this file to discover all available pages before exploring further.

Partially updates a single attribute definition. Only the fields you include are changed.

Updatable fields

FieldApplies toNotes
labelAll types
isRequiredAll types
isArchivedAll typesArchived attributes are hidden in the UI but data is retained
optionsselect, multiselect, statusFull replacement — see below
relatedObjectLabelrelationDisplay label shown in the UI for the linked object
currencyDisplaycurrencycode, name, or symbol
currencyDecimalcurrencyShow decimal places
currencyGroupingcurrencyUse thousands separator

Immutable fields

FieldReason
typeChanging type would corrupt existing record data
keyUsed as the stable identifier in all record values
relatedObjectSlugChanging the target would orphan existing linked records
currencyChanging the currency code would make stored amounts misleading

Updating options (select / multiselect / status)

When you send options, the list fully replaces the current options:
  • Include id on existing options you want to keep — existing record values are preserved.
  • Omit id for new options — the server assigns a new ID.
  • Exclude an option entirely to delete it — existing records that held that value will have the value cleared.
{
  "options": [
    { "id": 12, "value": "Active",   "color": "success" },
    { "id": 13, "value": "On Hold",  "color": "warning" },
    {           "value": "Churned",  "color": "gray"    }
  ]
}

Standard attributes

Standard attributes (e.g. first_name, emails on people) cannot be updated and return 400.

Authorizations

Authorization
string
header
required

Path Parameters

slug
string
required

The object slug.

Example:

"people"

attributeKey
string
required

The attribute key (slug) to update. Retrieve available keys from GET /crm/objects/{slug}.

Example:

"customer_status"

Body

application/json
label
string

New display label.

Maximum string length: 255
Example:

"Status"

isRequired
boolean

Whether a value is required when creating a record.

Example:

true

isArchived
boolean

Set to true to hide this attribute from the UI without deleting data.

Example:

false

options
object[]

Replacement options list for select, multiselect, and status types. Include existing option id values to preserve them.

relation only — updated display label for the linked object. The target object (relatedObjectSlug) cannot change.

Maximum string length: 255
Example:

"Contact Person"

currencyDisplay
enum<string>

currency only — how the currency value is shown: code, name, or symbol.

Available options:
code,
name,
symbol
Example:

"code"

currencyDecimal
boolean

currency only — show decimal places.

Example:

false

currencyGrouping
boolean

currency only — use a thousands separator.

Example:

false

Response

OK

success
boolean
Example:

true

status
integer
Example:

200

attribute
object

Definition of a single attribute on a CRM object.

Last modified on May 14, 2026