Students can attach supporting files — most commonly PDFs — to a submission directly from the assignment view. Uploads are scanned, stored against the student's record, and surfaced to reviewers alongside the rest of the submission. Each file is capped at 25 MB and retained for the lifetime of the enrollment.
PR #83
Show context
API reference
Transcript · Jun 24
Upload an attachment for a given submission. The request must be sent as multipart/form-data.
POST /v1/submissions/{id}/attachments
fileThe binary file to upload. PDF, PNG, or JPG. Required.
visibilityEither private or shared. Defaults to private.
Show context
Edge case log
Best effort — no source
Generated without a source signal — no ticket or transcript context was found for this section. Review carefully before approving.
When an attachment is deleted, references to it are not removed outright — video previews that embedded the file fall back to a placeholder thumbnail, and goal entries drop it from their evidence list without notifying the goal owner. Shared attachments follow the same pattern: any collaborator with access loses it silently on their next page load rather than being notified in real time. There is currently no confirmation step before a shared attachment is removed for all parties.
Show context
ChangesPR #1290Updated 2h ago
Payments API — Idempotency Keys
Triggered by PR #1290 merged Jun 25 · Varshitha Daggolu
Idempotency keys let clients safely retry payment requests without creating duplicate charges. A key is supplied per request and cached server-side for 24 hours.
Idempotency keys let clients safely retry payment requests without creating duplicate charges. A key is supplied per request and cached server-side for 24 hours.
API reference2 changes
The Idempotency-Key header is optional. Keys are retained for 24 hours before expiring.
Removed
The Idempotency-Key header is required for all POST requests. Keys are retained for 48 hours before expiring.
Added
Show context
Error codesNew section
—
A duplicate request with a reused key returns the original response with status: