DrillPlan Activity Log Download API

Introduction

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 Unauthorized response.

See How to access DrillPlan APIs for prerequisites (AppKey, Client_Id, Secret, slb-partition-id, and token generation).

Query parameters

before

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.

after

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 before and after must not exceed 90 days. Requests exceeding this limit will receive a 400 Bad Request response 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).

page

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.

Response

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).

Response object

PropertyTypeDescription
itemsarrayActivity log objects for the current page (up to 100 records).
pageintegerCurrent 1-based page number.
page_sizeintegerMaximum number of records per page (100).
has_morebooleantrue if additional pages are available; false on the last page.

Activity log object

Each element in the items array has the following properties:

PropertyTypeDescription
idstringUnique identifier of the activity log record.
ownerobjectUser who performed the activity.
owner.full_namestringDisplay name of the user.
owner.image_urlstringProfile image URL of the user.
owner.aliasstringUser alias.
activitiesarrayOne or more activity entries associated with this log record.
plan_namestringName of the related plan, if applicable.
project_namestringName of the related project, if applicable.

Activity object

Each item in the activities array has the following properties:

PropertyTypeDescription
typestringActivity type (for example, Create, Update, Delete).
entity_idstringIdentifier of the entity affected by the activity.
entity_namestringName of the entity affected by the activity.
activity_timestringTimestamp when the activity occurred (ISO 8601).
commentsstringOptional comments associated with the activity.
project_idstringProject identifier, if the activity is project-scoped.
activity_entity_typestringEntity type of the affected object.
is_customer_databooleanWhether the activity relates to customer data.
changed_property_namesarrayNames of properties changed during an update activity.
extension_propertys_dicobjectAdditional extension properties as key-value pairs.
parentobjectPrimary parent of the entity in the data model (recursive parent chain).
old_namestringPrevious name of the entity, if renamed.
changed_propertiesarrayDetailed change records for update activities.

Example response

{
  "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
}

Error responses

StatusCondition
400 Bad Requestbefore or after is missing.
400 Bad RequestDate range between before and after exceeds 90 days.
401 UnauthorizedRequest is not authenticated with a service token.

Pagination workflow

To download all activity logs within a time range:

  1. Call GET /v1/download?before={before}&after={after}&page=1.
  2. Read activity logs from the items array in the response.
  3. If has_more is true, call again with page=2, then page=3, and so on.
  4. Stop when has_more is false.