ClarifyClarify APIBeta
API Reference

Schema and fields

Discover and manage object schemas and custom fields

Use "type": "date" for date fields, not "date-time"date-time fields become read-only in the UI. Enum values are case-sensitive: "Active" and "active" are treated as different values.

Get all schemas

GET /schemas

Returns every object schema in the workspace — standard and custom. The response contains two groups:

  • core/* — built-in object types: core/person, core/company, core/deal, core/meeting
  • entities/* — custom object types you've created
{
  "data": {
    "core/person": {
      "properties": {
        "name": { "type": "text" },
        "email_addresses": { "type": "collection" },
        "title": { "type": "text" },
        "stage": {
          "type": "select",
          "enum": ["Lead", "Qualified", "Customer"]
        }
      }
    },
    "entities/investor": {
      "properties": {
        "fund_size": { "type": "number" },
        "investment_stage": {
          "type": "select",
          "enum": ["Seed", "Series A", "Series B"]
        }
      }
    }
  }
}

Create schema properties

POST /schemas/{entity}/properties

Adds custom fields to an object type. entity is the full schema key, e.g. core/person or entities/investor.

{
  "properties": {
    "deal_source": {
      "type": "select",
      "title": "Deal Source",
      "enum": ["Inbound", "Outbound", "Referral", "Partner"]
    },
    "close_date": {
      "type": "date",
      "title": "Close Date"
    },
    "notes": {
      "type": "text",
      "title": "Notes"
    }
  }
}

Use "type": "date" (not "date-time") for user-editable date fields. "date-time" fields are read-only.

Update schema properties

PATCH /schemas

Updates existing field definitions across one or more schemas. Use the same property structure as create — only include fields you want to modify.

{
  "core/deal": {
    "properties": {
      "deal_source": {
        "enum": ["Inbound", "Outbound", "Referral", "Partner", "Event"]
      }
    }
  }
}

Adding values to an existing enum is safe. Removing values is destructive — any records currently set to a removed value will be nulled out, and those records will be dropped from any lists that filter on that field. Always check which records use a value before removing it.

Create a custom object

POST /schemas/objects

Creates a new custom object type with its own records, fields, and relationships.

{
  "name": "investor",
  "title": "Investor"
}

name is the slug used in API paths (e.g. /objects/investor/records). title is the display name shown in the UI.

Update a custom object

PUT /schemas/objects/{object}

Updates the display title of a custom object. The name (slug) cannot be changed after creation.

{
  "title": "LP Investor"
}

Create relationship properties

POST /schemas/{entity}/relationships

Defines a new relationship between two object types.

{
  "name": "funds",
  "title": "Funds",
  "target": "entities/fund",
  "cardinality": "many"
}

cardinality is either "one" or "many".

Delete relationship property

DELETE /schemas/{entity}/relationships/{fieldName}

Removes a relationship definition and all associated relationship data. Returns 204 No Content. This cannot be undone.