---
title: "Add Project Discussion"
method: POST
path: "/projects/{projectId}/discussions"
tags: ["Discussions"]
---

# Add Project Discussion

`POST /projects/{projectId}/discussions`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/projects/{projectId}/discussions`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-api-v2/docs/projects/:projectId/discussions/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `project.discussion` (Read and Write).

Starts a new project discussion with a description. Every project member is notified about the new discussion, and the users mentioned in the description are notified about the mention.

__Note:__ Only project members can start discussions

## Path parameters

- `projectId` integer, required

## Request body

- DiscussionCreateForm
  - `title` string, required: Discussion title, up to 255 characters
  - `text` string, required: Description of the discussion in Markdown, up to 16000 characters, posted as its first reply. Mention a project member with `@username` to notify them
  - `languageId` string, nullable: ID of the target language the discussion is about. Get via [Project Target Languages](#operation/api.projects.get). `null` or omitted for a discussion about all languages

## Response `201`

Discussion created

- DiscussionResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` Discussion, required
    - `id` integer: ID of the discussion
    - `projectId` integer: ID of the project the discussion belongs to
    - `title` string: Discussion title
    - `status` 'open' | 'closed': Discussion status. One of: `open`, `closed`
    - `languageId` string, nullable: ID of the target language the discussion is about. `null` when the discussion is about all languages
    - `userId` integer: ID of the user who started the discussion
    - `user` DiscussionUser: Author of a discussion or reply
      - `id` integer, nullable: ID of the user
      - `username` string, nullable: Username of the user
      - `fullName` string, nullable: Full name of the user, or the username when the full name is not set
      - `avatarUrl` string, nullable: URL of the user avatar
    - `repliesCount` integer: Number of replies in the discussion, `system` replies included. The description is not counted
    - `isMuted` boolean: If `true`, the authenticated user muted the discussion and is not notified about new replies in it
    - `createdAt` string, date-time: Date the discussion was started, in ISO 8601 format
    - `updatedAt` string, date-time: Date of the latest reply, reply edit, title or status change, in ISO 8601 format

## Other responses

- `400`: Invalid Request Body
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project with specified id was not found

---

[API](https://skmtc.dev/crowdin/apis/crowdin-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-api-v2/revisions/27aae7751699?raw)
