Record Course External Activity
Records an external activity completion against a course (LTI-style), optionally granting awards and an external certificate. Requires the `externalActivity` feature to be enabled
Record an external activity completion against a course (LTI-style), optionally granting awards and an external certificate.
POST
https://example.thoughtindustries.com/incoming/v2/courseExternalActivity:::note
Feature flag: Requires the externalActivity feature to be enabled on the company.
:::
Example request
curl -X POST "https://example.thoughtindustries.com/incoming/v2/courseExternalActivity" \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"courseId": "123e4567-e89b-12d3-a456-426614174000",
"userEmail": "[email protected]",
"completionDate": "2026-01-15T00:00:00.000Z"
}'You may alternatively pass the attributes in a signed jwt query param instead of a JSON body:
curl -X POST "https://example.thoughtindustries.com/incoming/v2/courseExternalActivity?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H 'Authorization: Bearer YOUR_API_KEY'Parameters
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
courseId | uuid | No | body | Course UUID. courseId or courseSku is required. |
courseSku | string | No | body | Course SKU. courseId or courseSku is required. |
userId | string | No | body | Learner ID. userId or userEmail is required. |
userEmail | string | No | body | Learner email. userId or userEmail is required. |
completionDate | ISO 8601 timestamp | No | body | Date and time the external activity was completed. |
awards | array | No | body | Award-claiming entries to grant the learner upon completion. |
certificateUrl | string | No | body | External certificate URL (only applied when transcriptFields are also supplied and external certificate uploads are enabled). |
transcriptFields | array | No | body | Transcript fields for the external certificate. |
Example response
On success the endpoint returns 200 with an empty body:
HTTP/1.1 200 OK
Validation errors
Validation failures return 400:
{
"errors": ["userId or userEmail is required"]
}Other validation messages include:
"courseSku or courseId is required""invalid completionDate. please use ISO 8601 format""Invalid course or user"
Response fields
| Field | Type | Description |
|---|---|---|
(empty) | 200 | On success, returns 200 with an empty body. |
errors | string[] | Validation error messages on 400. |