How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Canvas Discussion Topics API

The Discussion Topics API from Canvas — 36 operation(s) for discussion topics.

Canvas Discussion Topics API is one of 145 APIs that Canvas publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Discussion Topics. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, authentication docs, a GitHub repository, an API reference, and rate-limit docs.

This API exposes 58 operations across 36 paths, and defines 2 schemas. It is described by OpenAPI 3.2.0, at version v1.

Requests are made against 2 base URLs: https://canvas.instructure.com/api, https://{canvas_host}/api.

58 operations 36 paths 2 schemas 12 DELETE14 GET16 POST16 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.2.0
API Version
v1
Base URL
https://canvas.instructure.com/api/v1
Authentication
HTTP Bearer, OAuth 2.0
License
Resource Areas
1

Authentication & Security 2

Canvas Discussion Topics API declares 2 security schemes for authenticating requests. It accepts HTTP bearer tokens (bearerAuth). It supports OAuth 2.0 (oauth2) using the authorizationCode flow. By default, every request must be authenticated.

  • bearerAuth — Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html
  • oauth2 — Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauthendpoints.html

Paths & Operations 58

Across 36 paths, the API surfaces 58 operations — 12 DELETE, 14 GET, 16 POST, 16 PUT. Each is listed below with its method, path, parameters, and response codes.

Discussion Topics 58
GET
/v1/courses/{course_id}/discussion_topics
List discussion topics
list_discussion_topics_courses 8 params → 200
POST
/v1/courses/{course_id}/discussion_topics
Create a new discussion topic
create_new_discussion_topic_courses 1 param body → 200
GET
/v1/groups/{group_id}/discussion_topics
List discussion topics
list_discussion_topics_groups 8 params → 200
POST
/v1/groups/{group_id}/discussion_topics
Create a new discussion topic
create_new_discussion_topic_groups 1 param body → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}
Update a topic
update_topic_courses 2 params body → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}
Delete a topic
delete_topic_courses 2 params → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}
Get a single topic
get_single_topic_courses 3 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}
Update a topic
update_topic_groups 2 params body → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}
Delete a topic
delete_topic_groups 2 params → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}
Get a single topic
get_single_topic_groups 3 params → 200
POST
/v1/courses/{course_id}/discussion_topics/reorder
Reorder pinned topics
reorder_pinned_topics_courses 1 param body → 200
POST
/v1/groups/{group_id}/discussion_topics/reorder
Reorder pinned topics
reorder_pinned_topics_groups 1 param body → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{id}
Update an entry
update_entry_courses 3 params body → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{id}
Delete an entry
delete_entry_courses 3 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{id}
Update an entry
update_entry_groups 3 params body → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{id}
Delete an entry
delete_entry_groups 3 params → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}/summaries
Find Last Summary
find_last_summary_courses 2 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/summaries
Find or Create Summary
find_or_create_summary_courses 2 params body → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}/summaries
Find Last Summary
find_last_summary_groups 2 params → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/summaries
Find or Create Summary
find_or_create_summary_groups 2 params body → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/summaries/disable
Disable summary
disable_summary_courses 2 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/summaries/disable
Disable summary
disable_summary_groups 2 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/summaries/{summary_id}/feedback
Summary Feedback
summary_feedback_courses 3 params body → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/summaries/{summary_id}/feedback
Summary Feedback
summary_feedback_groups 3 params body → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}/view
Get the full topic
get_full_topic_courses 2 params → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}/view
Get the full topic
get_full_topic_groups 2 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries
Post an entry
post_entry_courses 2 params body → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries
List topic entries
list_topic_entries_courses 2 params → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries
Post an entry
post_entry_groups 2 params body → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries
List topic entries
list_topic_entries_groups 2 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/duplicate
Duplicate discussion topic
duplicate_discussion_topic_courses 2 params → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/duplicate
Duplicate discussion topic
duplicate_discussion_topic_groups 2 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies
Post a reply
post_reply_courses 3 params body → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies
List entry replies
list_entry_replies_courses 3 params → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies
Post a reply
post_reply_groups 3 params body → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/replies
List entry replies
list_entry_replies_groups 3 params → 200
GET
/v1/courses/{course_id}/discussion_topics/{topic_id}/entry_list
List entries
list_entries_courses 3 params → 200
GET
/v1/groups/{group_id}/discussion_topics/{topic_id}/entry_list
List entries
list_entries_groups 3 params → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/read
Mark topic as read
mark_topic_as_read_courses 2 params → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}/read
Mark topic as unread
mark_topic_as_unread_courses 2 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/read
Mark topic as read
mark_topic_as_read_groups 2 params → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}/read
Mark topic as unread
mark_topic_as_unread_groups 2 params → 200
PUT
/v1/courses/{course_id}/discussion_topics/read_all
Mark all topic as read
mark_all_topic_as_read_courses 1 param → 200
PUT
/v1/groups/{group_id}/discussion_topics/read_all
Mark all topic as read
mark_all_topic_as_read_groups 1 param → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/read_all
Mark all entries as read
mark_all_entries_as_read_courses 2 params body → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}/read_all
Mark all entries as unread
mark_all_entries_as_unread_courses 3 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/read_all
Mark all entries as read
mark_all_entries_as_read_groups 2 params body → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}/read_all
Mark all entries as unread
mark_all_entries_as_unread_groups 3 params → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/read
Mark entry as read
mark_entry_as_read_courses 3 params body → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/read
Mark entry as unread
mark_entry_as_unread_courses 4 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/read
Mark entry as read
mark_entry_as_read_groups 3 params body → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/read
Mark entry as unread
mark_entry_as_unread_groups 4 params → 200
POST
/v1/courses/{course_id}/discussion_topics/{topic_id}/entries/{entry_id}/rating
Rate entry
rate_entry_courses 3 params body → 200
POST
/v1/groups/{group_id}/discussion_topics/{topic_id}/entries/{entry_id}/rating
Rate entry
rate_entry_groups 3 params body → 200
PUT
/v1/courses/{course_id}/discussion_topics/{topic_id}/subscribed
Subscribe to a topic
subscribe_to_topic_courses 2 params → 200
DELETE
/v1/courses/{course_id}/discussion_topics/{topic_id}/subscribed
Unsubscribe from a topic
unsubscribe_from_topic_courses 2 params → 200
PUT
/v1/groups/{group_id}/discussion_topics/{topic_id}/subscribed
Subscribe to a topic
subscribe_to_topic_groups 2 params → 200
DELETE
/v1/groups/{group_id}/discussion_topics/{topic_id}/subscribed
Unsubscribe from a topic
unsubscribe_from_topic_groups 2 params → 200

Schemas 2

The contract defines 2 schemas that model the data the API accepts and returns. The most detailed are DiscussionTopic (38 properties), FileAttachment (4 properties). Each schema is shown below with its type and property counts.

FileAttachment
object
A file attachment
4 properties
DiscussionTopic
object
A discussion topic
38 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

canvas-discussion-topics-api-openapi.yml Raw ↑

Other APIs Canvas publishes across the network.

Canvas LMS GraphQL API
Canvas LTI Integrations
Canvas Courses API
Canvas Access Tokens API
Canvas Accessibility Course Scans API
Canvas Accessibility Course Statistics API
Canvas Account Calendars API
Canvas Account Domain Lookups API
Canvas Account Notifications API
Canvas Account Reports API
Canvas Accounts API
Canvas Accounts (Lti) API
Where this information came from

This is an independent, third-party profile of Canvas Discussion Topics API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.