---
title: "Add String Comment"
method: POST
path: "/projects/{projectId}/comments"
tags: ["String Comments"]
---

# Add String Comment

`POST /projects/{projectId}/comments`

## Request

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

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

## Path parameters

- `projectId` integer, required

## Request body

- StringCommentCreateForm
  - `stringId` integer, required: String Identifier. Get via [List Strings](#operation/api.projects.strings.getMany)
  - `text` string, required
  - `type` 'comment' | 'issue', required: Defines comment or issue
  - `targetLanguageId` string: Target Language Identifier. Get via [List Supported Languages](#operation/api.languages.getMany)
  - `issueType` 'general_question' | 'translation_mistake' | 'context_request' | 'source_mistake': Defines issue type
  - `attachments` object[]: List of attachments to be added to the comment. Each object must contain id (Storage Identifier). Get via [List Storages](#operation/api.storages.getMany)
    - `id` integer: Storage Identifier. Get via [List Storages](#operation/api.storages.getMany)

## Response `201`

String Comment was successfully created

- StringCommentResource: 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` StringComment, required: Base Comment Response Model
    - `id` integer: Comment ID
    - `text` string: Comment text
    - `userId` integer: User ID
    - `user` object: User object
      - `id` integer: User ID
      - `username` string: User username
      - `fullName` string: User full name
      - `avatarUrl` string: User avatar URL
    - `projectId` integer: Project ID
    - `languageId` string: Language ID
    - `type` string: Comment type
    - `issueType` string: Issue type
    - `issueStatus` string: Issue status
    - `resolverId` integer: Resolver ID
    - `resolver` object: Resolver object
    - `resolvedAt` string: Resolved at
    - `createdAt` string: Created at
    - `attachments` object[]: List of attachments added to the comment
      - `id` integer: Attachment ID
      - `name` string: Original file name
      - `mime` string: MIME type
      - `size` integer: File size in bytes
      - `category` string: Attachment category (image, video, audio, document, other)
      - `thumbnailUrl` string, nullable: Thumbnail URL
      - `url` string: Preview URL
      - `downloadUrl` string: Download URL
    - `stringId` integer: String ID
    - `string` object: String object
      - `id` integer: String ID
      - `text` string: String text
      - `type` string: String type
      - `hasPlurals` boolean: Use fields `type` and `text` instead
      - `isIcu` boolean: Use field `type` instead
      - `context` string: String context
      - `fileId` integer: File ID

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project with specified id was not found
- `405`: Method Not Allowed
- `503`: Service Unavailable

---

[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)
