Skip to main content
The Custom Objects API allows you to manage company-defined entity types with dynamic fields and relationships. Custom object types are configured per company — use the List Types endpoint to discover available types. Key Concepts:
  • Discovery: Call GET /custom-objects to list available types, then use the type value as the objectType path parameter for all other endpoints.
  • Configuration: Call GET /custom-objects/{objectType}/configuration to get a JSON Schema for data fields and metadata about relationship fields.
  • Data vs relationships: Responses include separate data (regular field values) and relationships (linked entity IDs) objects. Create and update only accept data — relationship fields are rejected with a clear error directing you to the relationship management endpoints.
  • Relationship management: Dedicated PUT / DELETE endpoints for linking and unlinking entities. Use the fieldRefId from the configuration endpoint.
  • Object type format: Object types use snake_case in URLs and responses.

Discovery

Call GET /v1/custom-objects to list the custom object types configured for your company:
Use the type value (e.g., vehicle) as the {objectType} path parameter in all other endpoints.

Configuration

Call GET /v1/custom-objects/{objectType}/configuration to get:
  • data: JSON Schema (draft 2020-12) describing the available fields, their types, and which are required.
  • relationships: Array of relationship metadata, each with fieldRefId, label, targetType, and cardinality.

Data vs Relationships

GET responses split the object’s data into two sections:
  • data: Regular field values. Can be set via create/update.
  • relationships: Linked entity IDs keyed by fieldRefId. Single-cardinality relationships have a string value; multi-cardinality relationships have an array of strings. Managed via the relationship endpoints only.

Relationship Management

Use the dedicated relationship endpoints to link and unlink entities:
  • Add: PUT /custom-objects/{objectType}/{objectId}/relationships/{fieldRefId}/{targetId}
  • Remove: DELETE /custom-objects/{objectType}/{objectId}/relationships/{fieldRefId}/{targetId}
Cardinality behavior: Both operations are idempotent — adding an existing link returns created: false, removing a non-existent link returns removed: false.

API Endpoints


Permissions


Sorting (List Custom Objects)