Records
Create a CRM Record
Creates a new record for a custom CRM object.
Pass attribute values as a flat object using attribute slugs as keys.
Required scope: crm:write
POST
Create a CRM record
Creates a new record for a custom CRM object and returns it with a generated UUID.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.
Path parameter
| Parameter | Type | Description |
|---|---|---|
objectSlug | string | The slug of the custom CRM object to create a record in (e.g. products, deals). The object must exist. |
Request body
Pass a flat JSON object where each key is an attribute slug and each value is the attribute value. You only need to include attributes you want to set — omitted attributes default tonull.
GET /v2/crm/objects/{slug} to discover the available attribute slugs and their types before writing records.
Attribute types
Values are validated against the type defined on the object. Passing the wrong type returns a400 error.
| Type | Expected value | Example |
|---|---|---|
text | String, max 255 characters | "DRESS-001" |
number | Integer | 29 |
checkbox | Boolean | true or false |
date | ISO 8601 date string | "2025-06-01" |
select | Object with an id key matching a valid option ID | { "id": "opt_abc123" } |
multiselect | Array of objects, each with an id key | [{ "id": "opt_abc" }, { "id": "opt_def" }] |
relation | Array of record UUIDs from the related object | ["c1d2e3f4-...", "a2b3c4d5-..."] |
user | Array of organization member UUIDs | ["member-uuid-1"] |
select and multiselect attributes are returned when you fetch the object schema via GET /v2/crm/objects/{slug}.
Unique attributes
If an attribute is marked asisUnique, submitting a value that already exists on another record returns a 400 error. Check for uniqueness constraints in the object schema before creating records in bulk.
Minimal record creation
You can create a record with no attributes at all — useful when you want to allocate an ID first and fill in data later:When to use this endpoint
- Single record creation — a user fills a form and submits a new product, deal, or custom entry.
- One-off imports — create a small number of known records programmatically.
- Initial seeding — populate a new object with a handful of records before bulk operations.
For bulk imports where records may already exist, prefer Assert (upsert) instead. It creates when no match is found and updates when one is found — eliminating the need to pre-check for duplicates.
Last modified on May 7, 2026