Skip to main content
POST
/
crm
/
{objectSlug}
Create a CRM record
curl --request POST \
  --url https://api.zeeg.me/v2/crm/{objectSlug} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "sku": "DRESS-001",
  "price": 29,
  "inventory_count": 150
}
'
{
  "success": true,
  "status": 201,
  "record": {
    "id": "c1d2e3f4-a5b6-7890-cdef-123456789012",
    "objectSlug": "products",
    "attributes": {
      "sku": "DRESS-001",
      "price": 29,
      "inventory_count": 150
    },
    "createdAt": "2025-06-01T10:00:00+00:00",
    "updatedAt": "2025-06-01T12: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.

Creates a new record for a custom CRM object and returns it with a generated UUID.

Path parameter

ParameterTypeDescription
objectSlugstringThe 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 to null.
{
  "sku": "DRESS-001",
  "price": 29,
  "inventory_count": 150,
  "in_stock": true,
  "launched_at": "2025-06-01",
  "category": { "id": "opt_abc123" }
}
Use 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 a 400 error.
TypeExpected valueExample
textString, max 255 characters"DRESS-001"
numberInteger29
checkboxBooleantrue or false
dateISO 8601 date string"2025-06-01"
selectObject with an id key matching a valid option ID{ "id": "opt_abc123" }
multiselectArray of objects, each with an id key[{ "id": "opt_abc" }, { "id": "opt_def" }]
relationArray of record UUIDs from the related object["c1d2e3f4-...", "a2b3c4d5-..."]
userArray of organization member UUIDs["member-uuid-1"]
Option IDs for 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 as isUnique, 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.

Authorizations

Authorization
string
header
required

Path Parameters

objectSlug
string
required

Slug of the custom CRM object.

Body

application/json

Flat object of attribute slug → value pairs.

Response

Created

success
boolean
Example:

true

status
integer
Example:

201

record
object

A record for a custom CRM object.

Last modified on May 7, 2026