| name | studium |
| description | Interact with Uppsala University's Studium (Canvas LMS) via REST API. Use for managing courses, viewing assignments, checking submissions, grading, posting announcements, and viewing student rosters. Requires STUDIUM_API_KEY environment variable. |
Studium (Canvas LMS) Skill
Uppsala University's learning management system, based on Canvas LMS.
Setup
The skill will automatically find your API key from multiple sources:
- Environment variable (if set):
export STUDIUM_API_KEY="your-api-key-here"
.env.studium file in your workspace (recommended):
STUDIUM_API_KEY=your-api-key-here
- Command line (for one-off usage):
scripts/studium.py courses --token your-api-key-here
The skill automatically searches for .env.studium in:
- Current directory
~/.openclaw/workspace/
- The skill's workspace directory
Base URL
All requests go to: https://uppsala.instructure.com/api/v1/
Quick Reference
List your courses
scripts/studium.py courses
Get course details
scripts/studium.py course <course_id>
List assignments in a course
scripts/studium.py assignments <course_id>
List submissions for an assignment
scripts/studium.py submissions <course_id> <assignment_id>
Get student roster
scripts/studium.py students <course_id>
Post an announcement
scripts/studium.py announce <course_id> "Title" "Message body"
List ungraded submissions
scripts/studium.py ungraded <course_id>
Grade a submission
scripts/studium.py grade <course_id> <assignment_id> <user_id> <score> ["comment"]
Download all submissions for an assignment
scripts/studium.py download <course_id> <assignment_id> [output_dir]
Common Workflows
Check what needs grading
scripts/studium.py courses
scripts/studium.py ungraded <course_id>
Bulk download submissions
scripts/studium.py download <course_id> <assignment_id> ./submissions/
View upcoming deadlines
scripts/studium.py assignments <course_id> --upcoming
API Authentication
All requests use Bearer token auth:
Authorization: Bearer <STUDIUM_API_KEY>
Rate Limits
Canvas has rate limits. The script handles pagination automatically. For bulk operations, expect ~10 requests/second max.
Troubleshooting
- 401 Unauthorized: Check API key is valid and not expired
- 403 Forbidden: You don't have permission for this course/resource
- 404 Not Found: Course/assignment ID doesn't exist or you lack access