activity_id from Search Activity results.path activity_idstringrequiredact_r7s8t9u0).query entity_pageintegerdefault: 1entity_ids array. Since a single search can return thousands of entities,
the IDs are paginated separately.query entity_per_pageintegerdefault: 2501, max: 250).data| Field | Type | Description |
activity_id | string | Unique activity identifier |
type | string | Activity type. See Activity Types. |
created_at | string | ISO 8601 timestamp of when the request was made |
api_key_id | string | Stable identifier for the API key or OAuth token that made the request |
api_key_name | string or null | Current API key name. null when the key record is unavailable |
request | object | The complete original request parameters (see below) |
result_summary | object | Full result and credit breakdown (see below) |
entity_ids | object | Paginated entity IDs returned by this activity (see below) |
requestrequest_summary shows in Search Activity.| Field | Type | Description |
locations | array | Location objects used |
filters | array | Filter objects with filter_id, operator, value |
fields | string[] | Requested field IDs |
property_match | string | Person-to-property relationship (if set) |
page | integer | Page number requested |
per_page | integer | Results per page |
sort | array | Sort configuration |
| Field | Type | Description |
enrichment_type | string | The enrichment method |
items | array | The input items submitted (email addresses, phone numbers, addresses, etc.) |
fields | string[] | Requested field IDs |
include_properties | boolean | Whether properties were included |
request object contains the exact parameters you can copy-paste to re-run the same query.
For search types, pass it directly to the corresponding search endpoint. For enrichment types,
wrap the items array back into a data field.result_summary| Field | Type | Description |
total_results | integer | Total matching records |
total_pages | integer | Total pages available (search types only) |
pages_retrieved | integer | Pages you actually fetched (search types only) |
items_submitted | integer | Items in the request (enrichment types only) |
items_matched | integer | Items that matched (enrichment types only) |
items_unmatched | integer | Items that didn't match (enrichment types only) |
credits_used | integer | Total credits consumed |
credits_breakdown | object | Breakdown of credit charges |
credits_breakdown.new_people | integer | New people accessed (charged) |
credits_breakdown.new_properties | integer | New properties accessed (charged) |
credits_breakdown.repeat | integer | Previously accessed entities (free) |
entity_count.people | integer | Unique people returned |
entity_count.properties | integer | Unique properties returned |
entity_idsper_page: 25 will only have up to 25 entity IDs in its activity detail. When an activity captured more IDs, they are paginated with the entity_page and entity_per_page query parameters.| Field | Type | Description |
people | string[] | Array of dm_person_id values (e.g., "per_x1y2z3") |
properties | string[] | Array of dm_property_id values (e.g., "prop_a1b2c3") |
pagination.page | integer | Current entity page |
pagination.per_page | integer | Entity IDs per page |
pagination.total_people | integer | Total unique people across all pages |
pagination.total_properties | integer | Total unique properties across all pages |
pagination.has_next_page | boolean | Whether more entity IDs exist |
entity_ids section paginates those captured IDs separately so the activity detail response stays fast.123456789101112131415161718192021const activityId = 'act_r7s8t9u0'; const allPeople: string[] = []; const allProperties: string[] = []; let page = 1; let hasMore = true; while (hasMore) { const res = await fetch( `https://api.v2.dealmachine.com/v1/activity/${activityId}?entity_page=${page}&entity_per_page=250`, { headers: { Authorization: `Bearer ${apiKey}` } } ); const { data } = await res.json(); allPeople.push(...data.entity_ids.people); allProperties.push(...data.entity_ids.properties); hasMore = data.entity_ids.pagination.has_next_page; page++; } console.log(`Total people: ${allPeople.length}`); console.log(`Total properties: ${allProperties.length}`);
request object contains everything you need to replay a search:123456789101112131415// 1. Get the activity detail const activityRes = await fetch(`https://api.v2.dealmachine.com/v1/activity/${activityId}`, { headers: { Authorization: `Bearer ${apiKey}` }, }); const { data: activity } = await activityRes.json(); // 2. Re-run the same search const searchRes = await fetch('https://api.v2.dealmachine.com/v1/people/search', { method: 'POST', headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json', }, body: JSON.stringify(activity.request), });
credits.breakdown.repeat in the search response to see how many were
free.count_people, count_properties) will have empty entity_ids since no entity data is returned.entity_ids includes only the entities from matched items.request.items array in enrichment activities is capped at the first 100 items in the response. For enrichments with more than 100 items, the full list is available but truncated in this view.12curl "https://api.v2.dealmachine.com/v1/activity/act_r7s8t9u0" \ -H "Authorization: Bearer dm_sk_live_xxx"
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354{ "data": { "activity_id": "act_r7s8t9u0", "type": "search_people", "created_at": "2025-06-28T14:22:00Z", "api_key_id": "key_def456", "api_key_name": "Data warehouse", "request": { "locations": [{ "type": "state", "code": "TX" }], "filters": [ { "filter_id": "estimated_value", "operator": "greater_than", "value": 500000 }, { "filter_id": "has_phone", "value": true } ], "fields": ["full_name", "phones", "estimated_value"], "property_match": "owner", "page": 1, "per_page": 25, "sort": [{ "field_id": "full_name", "direction": "asc" }] }, "result_summary": { "total_results": 1250, "total_pages": 50, "pages_retrieved": 3, "credits_used": 75, "credits_breakdown": { "new_people": 45, "new_properties": 22, "repeat": 8 }, "entity_count": { "people": 75, "properties": 68 } }, "entity_ids": { "people": ["per_x1y2z3", "per_a4b5c6", "per_d7e8f9", "per_g0h1i2"], "properties": ["prop_a1b2c3", "prop_d4e5f6", "prop_g7h8i9"], "pagination": { "page": 1, "per_page": 250, "total_people": 75, "total_properties": 68, "has_next_page": false } } } }