Create a custom object
Creates a new custom object type in the workspace and returns its generated JSON Schema. The name is normalized to a c_-prefixed identifier (for example "Sales Order" becomes c_sales_order).
API key authentication. Send your key in the Authorization header as: api-key <your-api-key>.
In: header
Path Parameters
The workspace slug — the {slug} segment of your Clarify workspace URL.
Query Parameters
When true, suppresses in-app and Slack notifications for this mutation and batches its live updates, so open views can lag by up to 20 seconds.
Header Parameters
The API version for this request. Send 2026-11 to get the behavior documented here. Omit it to use your API key's version, which this header can raise but not lower.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/workspaces/string/schemas/objects" \ -H "clarify-version: 2026-11" \ -H "Content-Type: application/json" \ -d '{ "name": "Project", "plural": "Projects", "description": "A customer project tracked alongside deals and companies.", "icon": "Briefcase", "backgroundColor": "blue" }'{ "data": { "type": "schema", "id": "https://getclarify.ai/schemas/entities/c_project", "attributes": { "$schema": "https://json-schema.org/draft/2020-12/clarify", "$id": "https://getclarify.ai/schemas/entities/c_project", "title": "Project", "type": "object", "xClarifyNamespace": "objects", "xClarifyLabel": { "singular": "Project", "plural": "Projects" }, "xClarifyAIDescription": "A customer project tracked alongside deals and companies.", "properties": { "name": { "type": "string", "title": "Name", "xClarifyPrimary": true }, "status": { "type": [ "string", "null" ], "title": "Status", "enum": [ "Planning", "In progress", "Complete" ] }, "company_id": { "type": [ "string", "null" ], "title": "Company", "xClarifyRelationship": { "kind": "many-to-one", "entity": "company", "field": "projects" } } } } }}List resources
Returns a paginated JSON:API collection of an object’s resources. Use `include` to embed related resources and `filter` to narrow results by field — a bare value is an exact match, including on collection fields (`filter[email_addresses]=jane@acme.com`); shorthand operators are parsed from the value (`filter[status]=active,pending`, `filter[amount]=>100`, `filter[name]=*Smith*`, `filter[assigned]=null`), or name them explicitly (`filter[start][Is on or after]=2025-01-01`, `filter[domains][Contains]=acme`). To filter on a relationship field, include that relationship: `filter[author.name]=John&include=author`.
Add object fields
Adds one or more non-relationship fields to an object type. Each key in `attributes` is a new field name mapped to its JSON Schema, and every type except `boolean` must include `"null"` — declare `["string", "null"]` rather than `"string"`, because the column behind such a field is nullable and a non-nullable declaration would reject its own stored values. Fields that already exist are rejected — this endpoint never overwrites. The change is applied asynchronously and the response body is empty.