Create Discussion
create_discussionCreate a new discussion topic in a course, and return the created topic (id, title, message, discussion_type, published, is_announcement, posted_at).
Instructions
Create a new discussion topic in a course, and return the created topic (id, title, message, discussion_type, published, is_announcement, posted_at). Not idempotent: each call creates another topic — Canvas does not deduplicate by title, so check list_discussions first to avoid creating a duplicate. Setting is_announcement: true asks Canvas to create an announcement, but Canvas silently creates a plain discussion topic instead (HTTP 200, no error) if the caller lacks announcement-create permission in the course — this tool then throws instead of reporting success, naming the topic ID so you can check it with list_discussions or get_discussion. Use update_discussion to change an existing topic afterward, delete_discussion to remove one, and post_discussion_entry to reply to a topic instead of creating a new one. Requires instructor/TA permission to manage discussions in the course.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the discussion topic | |
| message | No | Body text of the discussion (supports HTML) | |
| course_id | Yes | The Canvas course ID | |
| published | No | Whether the topic is published | |
| delayed_post_at | No | ISO 8601 datetime to schedule the topic for future posting | |
| discussion_type | No | Discussion type: side_comment (flat) or threaded | |
| is_announcement | No | When true, requests an announcement instead of a discussion topic. Canvas silently downgrades this to a plain discussion topic (no error) if the caller lacks announcement permission in the course — check the response's own `is_announcement` field rather than assuming the request was honored. | |
| require_initial_post | No | Require students to post before seeing replies |