DrillPlan's Activity Log Download API allows external applications to export activity logs from a data partition as a JSON file. The endpoint returns activity logs across all projects in the current data partition, including data-partition-scoped logs.
Example cURL GET Request (click to open)
curl -X GET '{baseURL}activity-log/v1/download?before={before}&after={after}&page=1' \
-H 'accept: application/json' \
-H 'slb-partition-id: {SlbPartitionId}' \
-H 'appkey: {appKey}' \
-H 'Authorization: Bearer {token}'Authentication
This endpoint requires a service token obtained via the Client Credentials Flow (CCG). User tokens from Authorization Code Flow are not accepted and will receive a
401 Unauthorizedresponse.See How to access DrillPlan APIs for prerequisites (
AppKey,Client_Id,Secret,slb-partition-id, and token generation).
The upper bound of the activity time range (inclusive). Activity logs with activity_time before or at this timestamp are included.
This parameter is required. Requests without before will receive a 400 Bad Request response.
The lower bound of the activity time range (inclusive). Activity logs with activity_time after or at this timestamp are included.
This parameter is required. Requests without after will receive a 400 Bad Request response.
Date range limit
The difference between
beforeandaftermust not exceed 90 days. Requests exceeding this limit will receive a400 Bad Requestresponse with the message:Date range between before and after must not exceed 90 days.Timestamps should be provided in ISO 8601 format (for example,
2026-07-09T00:00:00.0000000Z).
1-based page number (optional). Each page returns up to 100 activity log records. The page size is fixed and cannot be changed via query parameters.
When page is omitted, the first 100 matching records are returned. Use page=2, page=3, and so on to retrieve additional records within the same time range.
A successful request returns HTTP 200 OK with a JSON object containing the activity log records and pagination metadata:
Content-Type:application/json
Results are sorted in descending order of activity time (most recent first).
| Property | Type | Description |
|---|---|---|
items | array | Activity log objects for the current page (up to 100 records). |
page | integer | Current 1-based page number. |
page_size | integer | Maximum number of records per page (100). |
has_more | boolean | true if additional pages are available; false on the last page. |
Each element in the items array has the following properties:
| Property | Type | Description |
|---|---|---|
id | string | Unique identifier of the activity log record. |
owner | object | User who performed the activity. |
owner.full_name | string | Display name of the user. |
owner.image_url | string | Profile image URL of the user. |
owner.alias | string | User alias. |
activities | array | One or more activity entries associated with this log record. |
plan_name | string | Name of the related plan, if applicable. |
project_name | string | Name of the related project, if applicable. |
Each item in the activities array has the following properties:
| Property | Type | Description |
|---|---|---|
type | string | Activity type (for example, Create, Update, Delete). |
entity_id | string | Identifier of the entity affected by the activity. |
entity_name | string | Name of the entity affected by the activity. |
activity_time | string | Timestamp when the activity occurred (ISO 8601). |
comments | string | Optional comments associated with the activity. |
project_id | string | Project identifier, if the activity is project-scoped. |
activity_entity_type | string | Entity type of the affected object. |
is_customer_data | boolean | Whether the activity relates to customer data. |
changed_property_names | array | Names of properties changed during an update activity. |
extension_propertys_dic | object | Additional extension properties as key-value pairs. |
parent | object | Primary parent of the entity in the data model (recursive parent chain). |
old_name | string | Previous name of the entity, if renamed. |
changed_properties | array | Detailed change records for update activities. |
{
"items": [
{
"id": "abc123",
"owner": {
"full_name": "Jane Doe",
"image_url": "https://example.com/avatar.jpg",
"alias": "jdoe"
},
"activities": [
{
"type": "Update",
"entity_id": "plan-001",
"entity_name": "Well Plan A",
"activity_time": "2026-07-08T14:30:00.0000000Z",
"comments": "",
"project_id": "project-001",
"activity_entity_type": "plan",
"is_customer_data": false,
"changed_property_names": ["name"],
"extension_propertys_dic": {},
"parent": {
"id": "project-001",
"entity_type": "project",
"name": "Exploration Project",
"parent": null
},
"old_name": null,
"changed_properties": []
}
],
"plan_name": "Well Plan A",
"project_name": "Exploration Project"
}
],
"page": 1,
"page_size": 100,
"has_more": false
}| Status | Condition |
|---|---|
400 Bad Request | before or after is missing. |
400 Bad Request | Date range between before and after exceeds 90 days. |
401 Unauthorized | Request is not authenticated with a service token. |
To download all activity logs within a time range:
- Call
GET /v1/download?before={before}&after={after}&page=1. - Read activity logs from the
itemsarray in the response. - If
has_moreistrue, call again withpage=2, thenpage=3, and so on. - Stop when
has_moreisfalse.