Product activity log via the External API
The Luminous External V1 activity-log endpoint now supports product as a subject type, giving you a paginated, time-ordered log of every create, update, and delete event for any SKU.
Endpoint
GET /external/api/v1/activity-logs
Authentication: External API key — Authorization: Bearer <token>
Required parameters
| Parameter | Type | Description |
|---|---|---|
subjectType | string | Must be product |
subjectId | integer | The Luminous product ID |
Optional parameters
| Parameter | Description |
|---|---|
userType | user (human actions only) or system (automated only). Omit for both. |
dateSort | asc or desc — sort direction on created_at. |
limit | Pagination (default to 25 ,max 100). |
Example request
GET /external/api/v1/activity-logs?subjectType=product&subjectId=4201&dateSort=desc&limit=25
Understanding the response
Each entry in data represents one discrete change:
{
"data": [
{
"id": 9910,
"description": "created",
"createdAt": "2026-01-15T09:30:00.000000Z",
"properties": {
"via": "import",
"attributes": { "name": "Blue Widget", "sku": "WIDGET-BLU" }
},
"causer": null
},
{
"id": 10452,
"description": "updated",
"createdAt": "2026-09-28T14:02:00.000000Z",
"properties": {
"via": "user",
"attributes": { "retail_price": 29.99 },
"old": { "retail_price": 24.99 }
},
"causer": { "id": 7, "name": "Jane Smith", "email": "jane@example.com" }
}
]
}
Key fields:
description—created,updated, ordeleted.properties.via— the source channel for this event (user,api,import,auto_create_sku,job,system).properties.attributes— field values after the change.properties.old— field values before the change (present onupdatedevents).causer— the user who made the change;nullfor automated/system events.
Ask an AI question about a product's history
For a plain-language summary of what happened to a product, use the AI endpoint:
POST /external/api/v1/activity-logs/ask-ai
{
"subjectType": "product",
"subjectId": 4201,
"question": "Who changed the retail price, and when?"
}
The AI reviews up to the 100 most recent activity entries for the product and returns a plain-text answer. Questions can be up to 1,000 characters.
Tips
- Use
dateSort=ascto read the history in chronological order from creation. - Use
userType=systemto isolate automated changes (imports, jobs, API writes). - Paginate with
links.nextfor SKUs with long histories — the max page size is 100 entries. - A
deletedevent logs a soft-delete (the product was discontinued or removed), not a hard database delete.