curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "is_completed": true }'
curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "property_id": "prop_12345" }'
const response = await fetch(
`https://api.v2.dealmachine.com/v1/tasks/${taskId}`,
{
method: "PATCH",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ is_completed: true }),
}
);
const { data } = await response.json();
console.log(`Task "${data.title}" completed at ${data.completed_at}`);
import requests
response = requests.patch(
f"https://api.v2.dealmachine.com/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {api_key}"},
json={"is_completed": True},
)
data = response.json()["data"]
print(f"Task '{data['title']}' completed at {data['completed_at']}")
{
"data": {
"id": "task_001",
"organization_id": 1,
"opportunity_id": "42",
"property_id": "prop_12345",
"person_id": null,
"created_by_user_id": 5,
"assigned_to_user_id": 12,
"assigned_to_agent_id": null,
"title": "Schedule property walkthrough",
"description": "Contact seller to arrange a visit",
"is_completed": true,
"completed_at": "2026-03-05T10:30:00Z",
"completed_by_user_id": 5,
"due_date": "2026-03-10T00:00:00Z",
"sort_order": 0,
"created_at": "2026-03-01T09:00:00Z",
"updated_at": "2026-03-05T10:30:00Z"
}
}
{
"error": {
"code": "task_not_found",
"message": "Task not found"
}
}
Tasks
Update Task
Update a task
PATCH
/
v1
/
tasks
/
{id}
curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "is_completed": true }'
curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "property_id": "prop_12345" }'
const response = await fetch(
`https://api.v2.dealmachine.com/v1/tasks/${taskId}`,
{
method: "PATCH",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ is_completed: true }),
}
);
const { data } = await response.json();
console.log(`Task "${data.title}" completed at ${data.completed_at}`);
import requests
response = requests.patch(
f"https://api.v2.dealmachine.com/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {api_key}"},
json={"is_completed": True},
)
data = response.json()["data"]
print(f"Task '{data['title']}' completed at {data['completed_at']}")
{
"data": {
"id": "task_001",
"organization_id": 1,
"opportunity_id": "42",
"property_id": "prop_12345",
"person_id": null,
"created_by_user_id": 5,
"assigned_to_user_id": 12,
"assigned_to_agent_id": null,
"title": "Schedule property walkthrough",
"description": "Contact seller to arrange a visit",
"is_completed": true,
"completed_at": "2026-03-05T10:30:00Z",
"completed_by_user_id": 5,
"due_date": "2026-03-10T00:00:00Z",
"sort_order": 0,
"created_at": "2026-03-01T09:00:00Z",
"updated_at": "2026-03-05T10:30:00Z"
}
}
{
"error": {
"code": "task_not_found",
"message": "Task not found"
}
}
Update a task’s details. Set
is_completed to true to mark a task as done — this automatically records the completion timestamp and the completing user. You can also update the linked opportunity, property, or person references.
string
required
Task ID.
string
Task title (1-500 characters).
string | null
Task description (max 5,000 characters). Set to
null to clear.string | null
Link to a CRM opportunity. Set to
null to unlink.string | null
Link to a property. Set to
null to unlink.string | null
Link to a person. Set to
null to unlink.integer | null
User ID to assign. Set to
null to unassign.boolean
Set to
true to complete, false to reopen.string | null
Due date (ISO 8601). Set to
null to clear.integer
Display order.
curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "is_completed": true }'
curl -X PATCH "https://api.v2.dealmachine.com/v1/tasks/task_001" \
-H "Authorization: Bearer dm_sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{ "property_id": "prop_12345" }'
const response = await fetch(
`https://api.v2.dealmachine.com/v1/tasks/${taskId}`,
{
method: "PATCH",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ is_completed: true }),
}
);
const { data } = await response.json();
console.log(`Task "${data.title}" completed at ${data.completed_at}`);
import requests
response = requests.patch(
f"https://api.v2.dealmachine.com/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {api_key}"},
json={"is_completed": True},
)
data = response.json()["data"]
print(f"Task '{data['title']}' completed at {data['completed_at']}")
{
"data": {
"id": "task_001",
"organization_id": 1,
"opportunity_id": "42",
"property_id": "prop_12345",
"person_id": null,
"created_by_user_id": 5,
"assigned_to_user_id": 12,
"assigned_to_agent_id": null,
"title": "Schedule property walkthrough",
"description": "Contact seller to arrange a visit",
"is_completed": true,
"completed_at": "2026-03-05T10:30:00Z",
"completed_by_user_id": 5,
"due_date": "2026-03-10T00:00:00Z",
"sort_order": 0,
"created_at": "2026-03-01T09:00:00Z",
"updated_at": "2026-03-05T10:30:00Z"
}
}
{
"error": {
"code": "task_not_found",
"message": "Task not found"
}
}
⌘I