REST API
Save a recording's summary
PUT
Saves a summary and key terms you wrote from the transcript, replacing the ones the recording had. Chapters stay as they are. The recording page shows them as it shows the ones WorkRoad's AI writes.
Use this to save content you wrote yourself. It uses none of the user's WorkRoad AI uses.
Required scopes: notes:update
header
AuthorizationBearer <token>recordingId*stringRecording id from GET /notes/{noteId}/recordings.
Match
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Format
uuidapplication/json- body
summary*stringWhat the lecture covered, in plain text, up to 4000 characters.
Length
1 <= length <= 4000keyTerms?array<>Up to 40 terms the lecture defines, each once. The app can make a study set from them.
Items
items <= 40Default
[]OK
application/json- response
data*curl -X PUT 'https://workroad.app/api/v1/recordings/497f6eca-6276-4993-bfeb-53cbbbba6f08/summary' \ -H 'Authorization: Bearer $WORKROAD_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "summary": "string"}'Example Response
{ "data": { "id": "5e4d3c2b-1a09-4f8e-9d7c-6b5a49382716", "noteId": "2f1e0d9c-8b7a-4c6d-9e5f-4a3b2c1d0e9f", "title": "Lecture 7: CPU scheduling", "status": "finished", "summaryStatus": "done", "createdAt": "2026-01-15T09:30:00.000Z", "transcript": [ "Today we look at how the scheduler picks the next process.", "Round robin gives each process a fixed time slice, in turn." ], "summary": "How a CPU scheduler chooses the next process, with round robin as the main example.", "keyTerms": [ { "term": "Round robin", "definition": "Each process runs for a fixed time slice, in turn." } ], "chapters": [ { "startMs": 0, "title": "Scheduling", "summary": "Why the CPU needs a scheduler." } ] }}