curl "https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50" \
-H "Authorization: Bearer dm_sk_live_xxx"
const response = await fetch(
'https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50',
{
headers: {
'Authorization': `Bearer ${apiKey}`,
},
}
);
const { data, pagination } = await response.json();
for (const field of data) {
console.log(`${field.field_id}: ${field.name} (${field.type})`);
}
import requests
response = requests.get(
'https://api.v2.dealmachine.com/v1/fields',
params={'source_type': 'properties', 'per_page': 50},
headers={'Authorization': f'Bearer {api_key}'}
)
body = response.json()
for f in body['data']:
print(f"{f['field_id']}: {f['name']} ({f['type']})")
{
"data": [
{
"field_id": "estimated_value",
"name": "Estimated Value",
"description": "Current estimated market value of the property",
"type": "NUMBER",
"source_type": "properties",
"group_id": "financial",
"is_filterable": true,
"is_sortable": true
},
{
"field_id": "property_address_city",
"name": "Property Address City",
"description": "City where the property is located",
"type": "STRING",
"source_type": "properties",
"group_id": "location",
"is_filterable": true,
"is_sortable": true
}
],
"pagination": {
"page": 1,
"per_page": 50,
"total_results": 180,
"total_pages": 4,
"has_next_page": true,
"has_previous_page": false
}
}
{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key",
"request_id": "req_abc123"
}
}
Fields
List Fields
GET
/
v1
/
fields
curl "https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50" \
-H "Authorization: Bearer dm_sk_live_xxx"
const response = await fetch(
'https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50',
{
headers: {
'Authorization': `Bearer ${apiKey}`,
},
}
);
const { data, pagination } = await response.json();
for (const field of data) {
console.log(`${field.field_id}: ${field.name} (${field.type})`);
}
import requests
response = requests.get(
'https://api.v2.dealmachine.com/v1/fields',
params={'source_type': 'properties', 'per_page': 50},
headers={'Authorization': f'Bearer {api_key}'}
)
body = response.json()
for f in body['data']:
print(f"{f['field_id']}: {f['name']} ({f['type']})")
{
"data": [
{
"field_id": "estimated_value",
"name": "Estimated Value",
"description": "Current estimated market value of the property",
"type": "NUMBER",
"source_type": "properties",
"group_id": "financial",
"is_filterable": true,
"is_sortable": true
},
{
"field_id": "property_address_city",
"name": "Property Address City",
"description": "City where the property is located",
"type": "STRING",
"source_type": "properties",
"group_id": "location",
"is_filterable": true,
"is_sortable": true
}
],
"pagination": {
"page": 1,
"per_page": 50,
"total_results": 180,
"total_pages": 4,
"has_next_page": true,
"has_previous_page": false
}
}
{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key",
"request_id": "req_abc123"
}
}
Discover all available fields for properties and people. Returns field metadata including data types, capabilities, and grouping information.
Use this endpoint to understand what data is available via the API before requesting property or contact records.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
source_type | string | Filter by source type: properties or people |
group_id | string | Filter by group ID (e.g., financial, property_details, ownership) |
search | string | Search fields by name or description |
page | integer | Page number (default: 1, min: 1) |
per_page | integer | Results per page (default: 25, min: 1, max: 250) |
curl "https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50" \
-H "Authorization: Bearer dm_sk_live_xxx"
const response = await fetch(
'https://api.v2.dealmachine.com/v1/fields?source_type=properties&per_page=50',
{
headers: {
'Authorization': `Bearer ${apiKey}`,
},
}
);
const { data, pagination } = await response.json();
for (const field of data) {
console.log(`${field.field_id}: ${field.name} (${field.type})`);
}
import requests
response = requests.get(
'https://api.v2.dealmachine.com/v1/fields',
params={'source_type': 'properties', 'per_page': 50},
headers={'Authorization': f'Bearer {api_key}'}
)
body = response.json()
for f in body['data']:
print(f"{f['field_id']}: {f['name']} ({f['type']})")
{
"data": [
{
"field_id": "estimated_value",
"name": "Estimated Value",
"description": "Current estimated market value of the property",
"type": "NUMBER",
"source_type": "properties",
"group_id": "financial",
"is_filterable": true,
"is_sortable": true
},
{
"field_id": "property_address_city",
"name": "Property Address City",
"description": "City where the property is located",
"type": "STRING",
"source_type": "properties",
"group_id": "location",
"is_filterable": true,
"is_sortable": true
}
],
"pagination": {
"page": 1,
"per_page": 50,
"total_results": 180,
"total_pages": 4,
"has_next_page": true,
"has_previous_page": false
}
}
{
"error": {
"code": "invalid_api_key",
"message": "Invalid API key",
"request_id": "req_abc123"
}
}
Response Fields
The response follows the standard response envelope with adata array and pagination object.
Each field object in data contains:
| Field | Type | Description |
|---|---|---|
field_id | string | Unique identifier for the field (e.g., estimated_value) |
name | string | Display name |
description | string | null | Human-readable description |
type | string | null | Data type (e.g., NUMBER, STRING, DATE, MULTI_SELECT, BOOLEAN) |
source_type | string | null | properties or people |
group_id | string | null | Field group identifier (e.g., financial, property_details) |
is_filterable | boolean | Whether this field can be used as a filter |
is_sortable | boolean | Whether this field can be used for sorting results |
Only fields marked as available for the public API are returned. Internal-only fields are excluded. Use
is_filterable to determine which fields can be used with the List Filters endpoint. Use is_sortable to determine which fields can be used for sorting in list endpoints.⌘I