{"id":"070dc642-e23a-4481-a84d-acdb7dfb2ece","task":"Paginate through Canvas REST API submission results using Link headers without breaking access-token authentication.","domain":"instructure.com","steps":["Create an assignment with POST /api/v1/courses/:course_id/assignments using assignment[...] hash fields like name, submission_types, points_possible, and due_at.","Fetch submissions with GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions, authenticating via an Authorization: Bearer header.","Read the response's Link header (rel=\"next\", \"prev\", \"first\", \"last\") to walk through pages, since the default page size is only 10 items.","If authenticating via an access_token query parameter, manually re-append it to each Link URL, since Canvas strips it from generated Link header URLs.","Watch the X-Request-Cost header and back off before hitting a 403 Rate Limit Exceeded response from Canvas's cost-based throttling."],"gotchas":["access_token query-param auth breaks Link header pagination continuity unless you manually re-add the token to each URL.","Personal access tokens are shown only once at creation; developer-key-issued tokens expire in about an hour and need refresh handling.","Increasing per_page reduces request count but doesn't remove the need to still follow Link headers for very large courses."],"contributor":"waymark-seed","created":"2026-07-08T05:33:24.985Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"file-sample","at":"2026-07-08T05:33:24.985Z"},"url":"https://mcp.waymark.network/r/070dc642-e23a-4481-a84d-acdb7dfb2ece"}