Resources
Records
Records are the core objects in Dreamteam CRM. Contacts, companies, deals, meetings, notes, and tasks are all records, as is every custom object you define. These endpoints work the same way for each: you change the object type in the path, and the request and response shapes stay the same. The examples below use contacts, companies, and deals.
Some object types add their own rules or endpoints
The routes here cover every object type, and you create, edit, and delete each one the same way. A few types layer extra behaviour on top: tasks, for example, must be linked to a record and are handed over through a dedicated reassignment endpoint - see Tasks. Records of your own custom objects use these same routes with the custom object's slug in the path - see Custom objects.
The record model
A record has a stable numeric id, an object type it belongs to (like contact or deal), and a bag of properties whose shape depends on the object type. Optionally, a record can carry an associations block that embeds linked records grouped by type.
AI-generated fields live inside properties, next to the schema fields. Text-heavy ones are prefixed ai_ (e.g. ai_about, ai_exec_summary) and come back as a JSON string encoding a card - { "title", "icon_category", "content": [...], "metadata" } - which some fields return as an array. Scalar signals such as engagement, confidence, risk, and icp are plain values. All are read-only and populated asynchronously, so a freshly-created record returns them empty or absent.
Properties
| Attribute | Description |
|---|---|
id | Numeric identifier for the record. Stable across the record's lifetime. |
type | The object type - contact, company, deal, meeting, note, or task, plus any custom object type you define. |
properties | Object of key-value pairs. Keys are property names from the object's schema; values match the property's data type. |
ai_* read-only | AI-generated fields, nested inside properties. Text fields (prefixed ai_) are JSON-string cards; scalar signals (e.g. engagement, icp, confidence) are plain values. Populated asynchronously - empty or absent on a new record. |
associations | Optional. Present when the request opts into embedding. Grouped by object type, with a records array and per-type metadata. |
created_at | ISO 8601 timestamp when the record was created. |
updated_at | ISO 8601 timestamp of the last property change. |
created_by | User id of the record's creator. |
{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"owner_id": 1000052,
"engagement": "Medium",
"ai_exec_summary": "[{\"title\":\"Executive Summary\",\"icon_category\":\"executive_summary\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"},{\"icon_category\":\"target\",\"value\":\"Next best step: a discovery call to confirm needs and timeline.\"}]}]",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd, reachable at ada@example.com.\"}],\"metadata\":{\"tags\":[{\"icon_category\":\"map_pin\",\"value\":\"Cambridge, UK\"}],\"links\":[]}}"
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-06-29T10:23:35.757096Z",
"created_by": 1000052
}List records
Lists the contacts, companies, deals, meetings or notes you have access to, a page at a time. Pass the object type in the URL path. Pass associations query parameters (repeatable) to embed linked records under each returned record's associations block. Omit them to get properties only.
Path parameters
object string · required | Object type - one of contact, company, deal, meeting, note, task, or a custom object. |
Query parameters
page integer | Page number, starts at 1. Defaults to 1. |
page_size integer | Records per page, up to 100. Defaults to 20. |
associations string[] | Object types to embed under each record. Repeatable - e.g. ?associations=company&associations=note. Omit to skip embedding. |
Returns
A paginated list of records under results, plus a metadata object with page, page_size, total_elements, total_pages, has_next, and has_previous.
curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records?page=1&page_size=20&associations=company&associations=note' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records?page=1&page_size=20&associations=contact&associations=deal' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records?page=1&page_size=20&associations=company&associations=contact' \
-H 'Authorization: Bearer <YOUR_TOKEN>'{
"results": [
{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"source": "Email",
"owner_id": 1000052,
"contact_activity_status": "New",
"engagement": "Medium",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"}]}"
},
"associations": {
"company": {
"records": [
{
"id": 1011597,
"association_name": "company_contact_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
},
"note": {
"records": [
{
"id": 1005567,
"association_name": "contact_notes_assoc"
},
{
"id": 1005568,
"association_name": "contact_notes_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
}
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-06-29T10:23:35.757096Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware",
"owner_id": 1000052,
"icp": "Strong Fit",
"ai_about": "{\"title\":\"About Analytical Engines Ltd\",\"icon_category\":\"company_overview\",\"content\":[{\"icon_category\":\"building\",\"value\":\"Hardware company; mid-market; UK-based.\"}]}"
},
"associations": {
"contact": {
"records": [
{
"id": 1015634,
"association_name": "company_contact_assoc"
},
{
"id": 1015635,
"association_name": "company_contact_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
},
"deal": {
"records": [
{
"id": 1011624,
"association_name": "company_deal_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
}
},
"created_at": "2026-05-20T11:00:00Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"stage_id": 1000003,
"pipeline_id": 1000000,
"owner_id": 1000052,
"confidence": "Medium",
"ai_deal_qualification": "{\"qualification_framework\":{\"framework_type\":\"MEDDPICC\",\"overall_score\":42,\"components\":[{\"title\":\"Metrics\",\"status\":\"Identified\",\"score\":60},{\"title\":\"Economic Buyer\",\"status\":\"Unknown\",\"score\":0}]}}"
},
"associations": {
"company": {
"records": [
{
"id": 1011597,
"association_name": "company_deal_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
},
"contact": {
"records": [
{
"id": 1015634,
"association_name": "contact_deal_assoc"
},
{
"id": 1015635,
"association_name": "contact_deal_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
}
},
"created_at": "2026-05-20T13:00:55.857056Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"source": "Email",
"owner_id": 1000052,
"contact_activity_status": "New",
"engagement": "Medium",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"}]}"
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-06-29T10:23:35.757096Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware",
"owner_id": 1000052,
"icp": "Strong Fit",
"ai_about": "{\"title\":\"About Analytical Engines Ltd\",\"icon_category\":\"company_overview\",\"content\":[{\"icon_category\":\"building\",\"value\":\"Hardware company; mid-market; UK-based.\"}]}"
},
"created_at": "2026-05-20T11:00:00Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"stage_id": 1000003,
"pipeline_id": 1000000,
"owner_id": 1000052,
"confidence": "Medium",
"ai_deal_qualification": "{\"qualification_framework\":{\"framework_type\":\"MEDDPICC\",\"overall_score\":42,\"components\":[{\"title\":\"Metrics\",\"status\":\"Identified\",\"score\":60},{\"title\":\"Economic Buyer\",\"status\":\"Unknown\",\"score\":0}]}}"
},
"created_at": "2026-05-20T13:00:55.857056Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}
],
"metadata": {
"page": 1,
"page_size": 20,
"total_elements": 1,
"total_pages": 1,
"has_next": false,
"has_previous": false
}
}{
"results": [
{
"id": "integer",
"type": "string",
"properties": "object",
"associations": "object",
"created_at": "string",
"updated_at": "string",
"created_by": "integer"
}
],
"metadata": {
"page": "integer",
"page_size": "integer",
"total_elements": "integer",
"total_pages": "integer",
"has_next": "boolean",
"has_previous": "boolean"
}
}Create a record
Creates a single record - pass the object type in the URL path. You can create the standard CRM record types contact, company, deal, note, and task, plus records of any custom object type. A note needs only its content (optional) and can be created with or without a linked record. The request body's properties object must satisfy that type's schema for required fields; unknown property keys are rejected. Some types are read-only through this API - recording records, for instance, are ingested by call and meeting integrations and reject direct creation.
Associations at create time
Link the new record to existing records by setting the object's lookup fields inside properties - there is no separate associations array. A lookup field is named <object>_ids and takes the target record id(s); a deal, for example, accepts company_ids and contact_ids. Call the Schema endpoint to see which lookup fields an object supports.
Naming heads-up: the lookup field you write (e.g. company_ids) maps to an association whose full identifier surfaces elsewhere as association_name (e.g. "company_deal_assoc"). To read a record's linked records back, pass the associations query parameter on Find Records or Retrieve.
Path parameters
object string · required | Object type to create the record under. |
Request body
properties object · required | Object matching the target object's schema. Required fields must be present. To link related records, set the object's lookup fields here (e.g. company_ids, contact_ids). |
Returns
The created record, including its assigned id, created_at, and created_by.
curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records' \
-X POST \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com"
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records' \
-X POST \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware"
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records' \
-X POST \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000,
"expected_close_date": "2026-09-19",
"company_ids": [1011597],
"contact_ids": [1015634],
"stage_id": 1000003,
"pipeline_id": 1000000
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records' \
-X POST \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"properties": {
"content": "Met Ada at the Cambridge conference; wants a follow-up demo.",
"contact_ids": [1015634]
}
}'{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"owner_id": 1000052,
"contact_activity_status": "New"
},
"created_at": "2026-06-30T10:58:41.740762Z",
"updated_at": "2026-06-30T10:58:41.740762Z",
"created_by": 1000052
}{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware",
"owner_id": 1000052
},
"created_at": "2026-06-30T10:58:41.740762Z",
"updated_at": "2026-06-30T10:58:41.740762Z",
"created_by": 1000052
}{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"expected_close_date": "2026-09-19T00:00:00Z",
"stage_id": 1000003,
"pipeline_id": 1000000,
"owner_id": 1000052
},
"created_at": "2026-06-30T10:58:41.740762Z",
"updated_at": "2026-06-30T10:58:41.740762Z",
"created_by": 1000052
}{
"id": 1021044,
"type": "note",
"properties": {
"content": "Met Ada at the Cambridge conference; wants a follow-up demo."
},
"created_at": "2026-11-05T10:00:00.000000Z",
"updated_at": "2026-11-05T10:00:00.000000Z",
"created_by": 1000052
}{
"id": "integer",
"type": "string",
"properties": "object",
"associations": "object",
"created_at": "string",
"updated_at": "string",
"created_by": "integer"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'email' must be unique.",
"errors": [
{
"code": "DUPLICATE_VALUE",
"field": "email",
"message": "Value 'ada@example.com' already exists for this contact (conflicting record ID: 1012888)."
}
],
"path": "/api/v1/objects/contact/records",
"timestamp": "2026-07-02T08:48:05.199294005"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'domain' must be unique.",
"errors": [
{
"code": "DUPLICATE_VALUE",
"field": "domain",
"message": "Value 'analytical-engines.com' already exists for this company (conflicting record ID: 1011590)."
}
],
"path": "/api/v1/objects/company/records",
"timestamp": "2026-07-02T08:48:05.199294005"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'stage_id' is invalid.",
"errors": [
{
"code": "INVALID_FIELD",
"field": "stage_id",
"message": "Stage 9999 does not belong to pipeline 1000000."
}
],
"path": "/api/v1/objects/deal/records",
"timestamp": "2026-07-02T08:48:05.199294005"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'email' is required",
"errors": [
{
"code": "REQUIRED_FIELD_MISSING",
"field": "email",
"message": "Field 'email' is required"
}
],
"path": "/api/v1/objects/contact/records",
"timestamp": "2026-07-02T08:48:05.199294005"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'name' is required",
"errors": [
{
"code": "REQUIRED_FIELD_MISSING",
"field": "name",
"message": "Field 'name' is required"
}
],
"path": "/api/v1/objects/company/records",
"timestamp": "2026-07-02T08:48:05.199294005"
}{
"code": "VALIDATION_FAILED",
"message": "Field 'expected_close_date' is required",
"errors": [
{
"code": "REQUIRED_FIELD_MISSING",
"field": "expected_close_date",
"message": "Field 'expected_close_date' is required"
}
],
"path": "/api/v1/objects/deal/records",
"timestamp": "2026-08-11T09:26:41.025999781"
}{
"code": "string",
"message": "string",
"errors": [
{
"code": "string",
"field": "string",
"message": "string"
}
]
}errors array for specifics.Retrieve a record
Fetches a single contact, company, deal, meeting, or note by its id. By default the sample request embeds linked company and contact records - omit the associations query params to get a plain record with only its properties.
Path parameters
object string · required | Object type of the record. |
id integer · required | Numeric identifier of the record. |
Query parameters
associations string[] | Object types to embed under associations. Repeatable. Omit to skip embedding. |
Returns
The record. If associations was requested, a matching associations block is embedded - grouped by object type, each with a records array and per-type metadata (total, has_more). Embedded associations return ids only - see Hydrate by IDs for turning them into full records.
Paging associations past 100
Embedded associations are capped at 100 per type. If has_more: true, paginate the rest with the dedicated endpoint:
GET /api/v1/objects/{object}/records/{id}/associations/{target_type}?page=1&page_size=50
Read-only. Writing new association links is not available yet.
Fetching note content
Notes come back as {id, association_name} pairs. To get the actual note text, call Retrieve a Record with object=note and the note's id.
curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records/1015634' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records/1011597' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records/1011624' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records/1015634?associations=company&associations=note' \
-H 'Authorization: Bearer <YOUR_TOKEN>'
# Fetch a linked note's content (a note is a record like any other)
curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records/1016384' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records/1011597?associations=contact&associations=deal' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records/1011624?associations=company&associations=contact' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records/1021044' \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records/1021044?associations=contact' \
-H 'Authorization: Bearer <YOUR_TOKEN>'{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"source": "Email",
"owner_id": 1000052,
"contact_activity_status": "New",
"criticality": "Yes",
"engagement": "Medium",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"}]}"
},
"associations": {
"company": {
"records": [
{
"id": 1011597,
"association_name": "company_contact_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
},
"note": {
"records": [
{
"id": 1005567,
"association_name": "contact_notes_assoc"
},
{
"id": 1005568,
"association_name": "contact_notes_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
}
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-06-29T10:23:35.757096Z",
"created_by": 1000052
}{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware",
"owner_id": 1000052,
"icp": "Strong Fit",
"ai_about": "{\"title\":\"About Analytical Engines Ltd\",\"icon_category\":\"company_overview\",\"content\":[{\"icon_category\":\"building\",\"value\":\"Hardware company; mid-market; UK-based.\"}]}"
},
"associations": {
"contact": {
"records": [
{
"id": 1015634,
"association_name": "company_contact_assoc"
},
{
"id": 1015635,
"association_name": "company_contact_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
},
"deal": {
"records": [
{
"id": 1011624,
"association_name": "company_deal_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
}
},
"created_at": "2026-05-20T11:00:00Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"expected_close_date": "2026-07-18T18:30:00Z",
"stage_id": 1000003,
"owner_id": 1000052,
"pipeline_id": 1000000,
"confidence": "Medium",
"forecast_category": "Pipeline",
"risk": "Medium",
"status": "Red Flag",
"last_activity_date": "2026-06-08T16:45:52Z",
"ai_deal_qualification": "{\"qualification_framework\":{\"framework_type\":\"MEDDPICC\",\"overall_score\":42,\"components\":[{\"title\":\"Metrics\",\"status\":\"Identified\",\"score\":60},{\"title\":\"Economic Buyer\",\"status\":\"Unknown\",\"score\":0}]}}"
},
"associations": {
"company": {
"records": [
{
"id": 1011597,
"association_name": "company_deal_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
},
"contact": {
"records": [
{
"id": 1015634,
"association_name": "contact_deal_assoc"
},
{
"id": 1015635,
"association_name": "contact_deal_assoc"
}
],
"metadata": {
"total": 2,
"has_more": false
}
}
},
"created_at": "2026-05-20T13:00:55.857056Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}{
"id": 1021044,
"type": "note",
"properties": {
"content": "Met Ada at the Cambridge conference; wants a follow-up demo."
},
"associations": {
"contact": {
"records": [
{
"id": 1015634,
"association_name": "contact_notes_assoc"
}
],
"metadata": {
"total": 1,
"has_more": false
}
}
},
"created_at": "2026-11-05T10:00:00.000000Z",
"updated_at": "2026-11-05T10:00:00.000000Z",
"created_by": 1000052
}{
"id": 1021044,
"type": "note",
"properties": {
"content": "Met Ada at the Cambridge conference; wants a follow-up demo."
},
"created_at": "2026-11-05T10:00:00.000000Z",
"updated_at": "2026-11-05T10:00:00.000000Z",
"created_by": 1000052
}{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"source": "Email",
"owner_id": 1000052,
"contact_activity_status": "New",
"criticality": "Yes",
"engagement": "Medium",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"}]}"
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-06-29T10:23:35.757096Z",
"created_by": 1000052
}{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Hardware",
"owner_id": 1000052,
"icp": "Strong Fit",
"ai_about": "{\"title\":\"About Analytical Engines Ltd\",\"icon_category\":\"company_overview\",\"content\":[{\"icon_category\":\"building\",\"value\":\"Hardware company; mid-market; UK-based.\"}]}"
},
"created_at": "2026-05-20T11:00:00Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"expected_close_date": "2026-07-18T18:30:00Z",
"stage_id": 1000003,
"owner_id": 1000052,
"pipeline_id": 1000000,
"confidence": "Medium",
"forecast_category": "Pipeline",
"risk": "Medium",
"status": "Red Flag",
"last_activity_date": "2026-06-08T16:45:52Z",
"ai_deal_qualification": "{\"qualification_framework\":{\"framework_type\":\"MEDDPICC\",\"overall_score\":42,\"components\":[{\"title\":\"Metrics\",\"status\":\"Identified\",\"score\":60},{\"title\":\"Economic Buyer\",\"status\":\"Unknown\",\"score\":0}]}}"
},
"created_at": "2026-05-20T13:00:55.857056Z",
"updated_at": "2026-06-12T08:13:25.348504Z",
"created_by": 1000052
}{
"id": "integer",
"type": "string",
"properties": "object",
"associations": "object",
"created_at": "string",
"updated_at": "string",
"created_by": "integer"
}{
"code": "NOT_FOUND",
"message": "Custom object data not found with id: 24 and objectName: contact"
}{
"code": "NOT_FOUND",
"message": "Custom object data not found with id: 24 and objectName: company"
}{
"code": "NOT_FOUND",
"message": "Custom object data not found with id: 24 and objectName: deal"
}{
"code": "NOT_FOUND",
"message": "Custom object data not found with id: 24 and objectName: note"
}{
"code": "NOT_FOUND",
"message": "Unknown object type: contacts"
}{
"code": "NOT_FOUND",
"message": "Unknown object type: companies"
}{
"code": "NOT_FOUND",
"message": "Unknown object type: deals"
}{
"code": "string",
"message": "string",
"errors": [
{
"code": "string",
"field": "string",
"message": "string"
}
]
}contacts instead of contact).Update a record
Updates a record by merging the properties object in the request body into the record. Keys omitted from the body are left unchanged. Set a value to null to explicitly clear that field. Use Content-Type: application/merge-patch+json.
PATCH merges — the safe default
PATCH merges - only the fields you send change; everything else is left alone. Safe for partial updates.
About application/merge-patch+json: it's plain JSON with one rule the server enforces - only the keys you send actually change. Everything you leave out is untouched. Setting a value to null clears that field.
Path parameters
object string · required | Object type of the record. |
id integer · required | Numeric identifier of the record. |
Request body
properties object · required | Partial property map. Keys present overwrite the record's current values; keys omitted are unchanged. |
Returns
The updated record with its refreshed updated_at timestamp.
curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records/1015634' \
-X PATCH \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"properties": {
"email": "ada@example.com"
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records/1011597' \
-X PATCH \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"properties": {
"industry": "Software"
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records/1011624' \
-X PATCH \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"properties": {
"stage_id": 1000004
}
}'curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records/1021044' \
-X PATCH \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
-H 'Content-Type: application/merge-patch+json' \
-d '{
"properties": {
"content": "Met Ada at the Cambridge conference; demo booked for Nov 12."
}
}'{
"id": 1015634,
"type": "contact",
"properties": {
"first_name": "Ada",
"last_name": "Chen",
"email": "ada@example.com",
"owner_id": 1000052,
"contact_activity_status": "New",
"engagement": "Medium",
"ai_about": "{\"title\":\"About Ada Chen\",\"icon_category\":\"contact_overview\",\"content\":[{\"icon_category\":\"briefcase\",\"value\":\"Contact at Analytical Engines Ltd; captured from an inbound email.\"}]}"
},
"created_at": "2026-06-29T10:23:27.444871Z",
"updated_at": "2026-07-10T09:15:22.501234Z",
"created_by": 1000052
}{
"id": 1011597,
"type": "company",
"properties": {
"name": "Analytical Engines Ltd",
"domain": "analytical-engines.com",
"industry": "Software",
"owner_id": 1000052,
"icp": "Strong Fit",
"ai_about": "{\"title\":\"About Analytical Engines Ltd\",\"icon_category\":\"company_overview\",\"content\":[{\"icon_category\":\"building\",\"value\":\"Hardware company; mid-market; UK-based.\"}]}"
},
"created_at": "2026-05-20T11:00:00Z",
"updated_at": "2026-07-10T09:15:22.501234Z",
"created_by": 1000052
}{
"id": 1011624,
"type": "deal",
"properties": {
"name": "Analytical Engines - Q3",
"amount": 100000.0,
"expected_close_date": "2026-07-18T18:30:00Z",
"stage_id": 1000004,
"owner_id": 1000052,
"pipeline_id": 1000000,
"confidence": "Medium",
"forecast_category": "Pipeline",
"ai_deal_qualification": "{\"qualification_framework\":{\"framework_type\":\"MEDDPICC\",\"overall_score\":42,\"components\":[{\"title\":\"Metrics\",\"status\":\"Identified\",\"score\":60},{\"title\":\"Economic Buyer\",\"status\":\"Unknown\",\"score\":0}]}}"
},
"created_at": "2026-05-20T13:00:55.857056Z",
"updated_at": "2026-07-10T09:15:22.501234Z",
"created_by": 1000052
}{
"id": 1021044,
"type": "note",
"properties": {
"content": "Met Ada at the Cambridge conference; demo booked for Nov 12."
},
"created_at": "2026-11-05T10:00:00.000000Z",
"updated_at": "2026-11-05T14:30:00.000000Z",
"created_by": 1000052
}{
"id": "integer",
"type": "string",
"properties": "object",
"associations": "object",
"created_at": "string",
"updated_at": "string",
"created_by": "integer"
}Delete a record
Permanently deletes a record by id. On success the endpoint returns 204 No Content with an empty body - and it returns the same 204 even when no record with that id exists, so a delete is safe to repeat. The URL is the same as Retrieve and Update; only the object slug and id change.
Deleting is permanent
There is no recycle bin and no restore endpoint - a deleted record cannot be recovered through the API. Records that exist only inside the one you delete, such as its notes, are removed with it.
A company with deals can't be deleted
Deleting a company that still has one or more deals attached returns 409 Conflict. Delete or move those deals first, then delete the company. Deleting a contact or a deal is never blocked this way.
Path parameters
object string · required | Object type of the record - contact, company, deal, note, task, or a custom object. |
id integer · required | Numeric identifier of the record to delete. |
Returns
204 No Content with an empty response body - there is no JSON to parse, so check the status code. Deleting a contact or a deal always returns 204. The one error you can hit is on a company: 409 Conflict while it still has deals attached (see below).
curl 'https://api.dreamteamcrm.ai/api/v1/objects/contact/records/1015634' \
-X DELETE \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/company/records/1011597' \
-X DELETE \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/deal/records/1011624' \
-X DELETE \
-H 'Authorization: Bearer <YOUR_TOKEN>'curl 'https://api.dreamteamcrm.ai/api/v1/objects/note/records/1021044' \
-X DELETE \
-H 'Authorization: Bearer <YOUR_TOKEN>'# 204 No Content
# The record was deleted. The response body is empty.
# You also get 204 if no record with that id exists.{
"code": "CONFLICT",
"message": "Cannot delete company: one or more deals still reference this company. Delete or move the deals first.",
"errors": [],
"path": "/api/v1/objects/company/records/1011597",
"timestamp": "2026-09-24T09:09:12.212132149"
}