---
title: "POST /api/memos/{memo}/comments"
method: POST
path: "/api/memos/{memo}/comments"
tags: ["MemoService"]
---

# POST /api/memos/{memo}/comments

`POST /api/memos/{memo}/comments`

## Request

- The document declares no server URL.
- Auth: none declared

CreateMemoComment atomically creates an independent memo plus one immutable
 COMMENT context relation to the named memo. The new memo keeps its own
 placement, visibility, authorship, and lifecycle. The named memo must be
 readable by the caller and not archived.

## Path parameters

- `memo` string, required

## Query parameters

- `commentId` string

## Request body

- Memo: Memo is a Markdown note written by a user.
  - `name` string: Identifier. The resource name of the memo, where memo is the user-defined UID. Format: memos/{memo}
  - `creator` string: Output only. The resource name of the creator. Format: users/{user}
  - `space` string: Optional. The space in which the memo is placed. Every memo, including a comment, owns its placement independently. Format: spaces/{space}
  - `content` string, required: Required. The content of the memo in Markdown. Must not exceed the instance's content length limit.
  - `location` Location: Location is a geographic location attached to a memo.
    - `placeholder` string: Optional. A human-readable label for the location.
    - `latitude` number, double: Optional. The latitude of the location.
    - `longitude` number, double: Optional. The longitude of the location.
  - `visibility` 'VISIBILITY_UNSPECIFIED' | 'PRIVATE' | 'PROTECTED' | 'PUBLIC' | 'SPACE', enum, required: Required. The visibility of the memo. Defaults to PRIVATE on creation when unspecified. SPACE requires the memo to be placed in a space.
  - `state` 'STATE_UNSPECIFIED' | 'NORMAL' | 'ARCHIVED', enum, required: Required. The state of the memo. New memos are always NORMAL; change it with UpdateMemo.
  - `pinned` boolean: Optional. Whether the memo is pinned. Ignored on creation; change it with UpdateMemo.
  - `attachments` Attachment[]: Optional. The attachments of the memo. Setting it replaces the full set.
    - `name` string: Identifier. The resource name of the attachment. Format: attachments/{attachment}
    - `creator` string: Output only. The user who uploaded the attachment, which may differ from the creator of the linked memo. Format: users/{user}
    - `filename` string, required: Required. The filename of the attachment.
    - `type` string, required: Required. The MIME type of the attachment. If empty on create, the service detects it from the filename and content.
    - `content` string, bytes: Input only. The content of the attachment.
    - `externalLink` string: Optional. The external link of the attachment. Set only for externally stored attachments; ignored on create.
    - `motionMedia` MotionMedia: MotionMedia links the parts of a motion photo.
      - `family` 'MOTION_MEDIA_FAMILY_UNSPECIFIED' | 'APPLE_LIVE_PHOTO' | 'ANDROID_MOTION_PHOTO', enum: The motion photo format.
      - `role` 'MOTION_MEDIA_ROLE_UNSPECIFIED' | 'STILL' | 'VIDEO' | 'CONTAINER', enum: The part this attachment plays in the motion photo.
      - `groupId` string: Groups the attachments that belong to one motion photo. Required for client-supplied Apple Live Photo metadata; for an Android motion photo it is the attachment's own ID.
      - `presentationTimestampUs` string: Presentation timestamp of the still frame within the video, in microseconds.
      - `hasEmbeddedVideo` boolean: Whether the file embeds the motion video, as in an Android motion photo container.
    - `mediaMetadata` MediaMetadata: MediaMetadata contains normalized metadata explicitly supplied by a client. The service validates and stores this data but does not extract it from the media file.
      - `width` integer: Display-oriented width in pixels. Must be provided with height.
      - `height` integer: Display-oriented height in pixels. Must be provided with width.
      - `photo` PhotoMetadata: PhotoMetadata is metadata recorded by the source of a photo.
        - `captureTime` MediaCaptureTime: MediaCaptureTime is the local time at which media was captured.
          - `localDateTime` string: Local date and time without a time zone, formatted as YYYY-MM-DDTHH:mm:ss[.fraction].
          - `utcOffset` string: UTC offset formatted as Z or +/-HH:MM.
        - `location` MediaLocation: MediaLocation is the geographic location at which media was captured.
          - `latitude` number, double: WGS84 latitude in decimal degrees. Must be provided with longitude.
          - `longitude` number, double: WGS84 longitude in decimal degrees. Must be provided with latitude.
          - `altitudeMeters` number, double: Signed altitude in meters relative to sea level.
        - `sourceExifOrientation` integer: EXIF orientation value from 1 through 8 as recorded by the source file. This value is informational and must not be reapplied to the stored attachment; width and height already describe its display-oriented dimensions.
        - `cameraMake` string: The camera manufacturer.
        - `cameraModel` string: The camera model.
        - `lensModel` string: The lens model.
        - `fNumber` number, double: The aperture f-number.
        - `exposureTimeSeconds` number, double: The exposure time in seconds.
        - `iso` integer: The ISO sensitivity.
        - `focalLengthMm` number, double: The focal length in millimeters.
      - `video` VideoMetadata: VideoMetadata is metadata recorded by the source of a video.
        - `durationSeconds` number, double: The duration of the video in seconds.
    - `memo` string: Optional. The memo the attachment is linked to. On create, the caller must be able to manage the memo. Format: memos/{memo}
    - `size` string: Output only. The size of the stored content in bytes.
    - `createTime` string, date-time: Output only. The creation time.
  - `relations` MemoRelation[]: Optional. The relations of the memo in both directions. Only REFERENCE relations can be set; COMMENT relations are output only.
    - `memo` MemoRelationMemoRef, required: MemoRef identifies a memo in a relation.
      - `name` string, required: Required. The resource name of the memo. Format: memos/{memo}
      - `snippet` string: Output only. A plain-text snippet of the memo content. Empty in ListMemos and ListMemoComments responses.
    - `relatedMemo` MemoRelationMemoRef, required: MemoRef identifies a memo in a relation.
      - `name` string, required: Required. The resource name of the memo. Format: memos/{memo}
      - `snippet` string: Output only. A plain-text snippet of the memo content. Empty in ListMemos and ListMemoComments responses.
    - `type` 'TYPE_UNSPECIFIED' | 'REFERENCE' | 'COMMENT', enum, required: Required. The type of the relation.
  - `reactions` Reaction[]: Output only. The reactions to the memo.
    - `name` string: Identifier. The resource name of the reaction. Format: memos/{memo}/reactions/{reaction}
    - `creator` string: Output only. The resource name of the creator. Format: users/{user}
    - `reactionType` string, required: Required. The reaction, such as an emoji ("👍", "❤️", "😄").
    - `createTime` string, date-time: Output only. The creation time.
  - `parent` string: Output only. The context memo of this COMMENT relation, if any. Its identity is returned even when the caller cannot read the parent. Fetch the parent independently; this field does not grant read access. Format: memos/{memo}
  - `tags` string[]: Output only. The tags extracted from the content.
  - `property` MemoProperty: Property holds properties computed from the memo content.
    - `title` string: The text of the H1 heading when it is the first block of the content.
    - `hasLink` boolean: Whether the content contains a link.
    - `hasCode` boolean: Whether the content contains inline code or a code block.
    - `hasTaskList` boolean: Whether the content contains a task list.
    - `hasIncompleteTasks` boolean: Whether the content contains an unchecked task.
    - `hasInlineImage` boolean: Whether the content contains a Markdown image.
  - `snippet` string: Output only. A plain-text snippet of the content.
  - `createTime` string, date-time: Optional. The creation time. Defaults to the current time when unset on creation.
  - `updateTime` string, date-time: Optional. The last update time. Defaults to the current time when unset on creation.

## Response `200`

OK

- Memo: Memo is a Markdown note written by a user.
  - `name` string: Identifier. The resource name of the memo, where memo is the user-defined UID. Format: memos/{memo}
  - `creator` string: Output only. The resource name of the creator. Format: users/{user}
  - `space` string: Optional. The space in which the memo is placed. Every memo, including a comment, owns its placement independently. Format: spaces/{space}
  - `content` string, required: Required. The content of the memo in Markdown. Must not exceed the instance's content length limit.
  - `location` Location: Location is a geographic location attached to a memo.
    - `placeholder` string: Optional. A human-readable label for the location.
    - `latitude` number, double: Optional. The latitude of the location.
    - `longitude` number, double: Optional. The longitude of the location.
  - `visibility` 'VISIBILITY_UNSPECIFIED' | 'PRIVATE' | 'PROTECTED' | 'PUBLIC' | 'SPACE', enum, required: Required. The visibility of the memo. Defaults to PRIVATE on creation when unspecified. SPACE requires the memo to be placed in a space.
  - `state` 'STATE_UNSPECIFIED' | 'NORMAL' | 'ARCHIVED', enum, required: Required. The state of the memo. New memos are always NORMAL; change it with UpdateMemo.
  - `pinned` boolean: Optional. Whether the memo is pinned. Ignored on creation; change it with UpdateMemo.
  - `attachments` Attachment[]: Optional. The attachments of the memo. Setting it replaces the full set.
    - `name` string: Identifier. The resource name of the attachment. Format: attachments/{attachment}
    - `creator` string: Output only. The user who uploaded the attachment, which may differ from the creator of the linked memo. Format: users/{user}
    - `filename` string, required: Required. The filename of the attachment.
    - `type` string, required: Required. The MIME type of the attachment. If empty on create, the service detects it from the filename and content.
    - `content` string, bytes: Input only. The content of the attachment.
    - `externalLink` string: Optional. The external link of the attachment. Set only for externally stored attachments; ignored on create.
    - `motionMedia` MotionMedia: MotionMedia links the parts of a motion photo.
      - `family` 'MOTION_MEDIA_FAMILY_UNSPECIFIED' | 'APPLE_LIVE_PHOTO' | 'ANDROID_MOTION_PHOTO', enum: The motion photo format.
      - `role` 'MOTION_MEDIA_ROLE_UNSPECIFIED' | 'STILL' | 'VIDEO' | 'CONTAINER', enum: The part this attachment plays in the motion photo.
      - `groupId` string: Groups the attachments that belong to one motion photo. Required for client-supplied Apple Live Photo metadata; for an Android motion photo it is the attachment's own ID.
      - `presentationTimestampUs` string: Presentation timestamp of the still frame within the video, in microseconds.
      - `hasEmbeddedVideo` boolean: Whether the file embeds the motion video, as in an Android motion photo container.
    - `mediaMetadata` MediaMetadata: MediaMetadata contains normalized metadata explicitly supplied by a client. The service validates and stores this data but does not extract it from the media file.
      - `width` integer: Display-oriented width in pixels. Must be provided with height.
      - `height` integer: Display-oriented height in pixels. Must be provided with width.
      - `photo` PhotoMetadata: PhotoMetadata is metadata recorded by the source of a photo.
        - `captureTime` MediaCaptureTime: MediaCaptureTime is the local time at which media was captured.
          - `localDateTime` string: Local date and time without a time zone, formatted as YYYY-MM-DDTHH:mm:ss[.fraction].
          - `utcOffset` string: UTC offset formatted as Z or +/-HH:MM.
        - `location` MediaLocation: MediaLocation is the geographic location at which media was captured.
          - `latitude` number, double: WGS84 latitude in decimal degrees. Must be provided with longitude.
          - `longitude` number, double: WGS84 longitude in decimal degrees. Must be provided with latitude.
          - `altitudeMeters` number, double: Signed altitude in meters relative to sea level.
        - `sourceExifOrientation` integer: EXIF orientation value from 1 through 8 as recorded by the source file. This value is informational and must not be reapplied to the stored attachment; width and height already describe its display-oriented dimensions.
        - `cameraMake` string: The camera manufacturer.
        - `cameraModel` string: The camera model.
        - `lensModel` string: The lens model.
        - `fNumber` number, double: The aperture f-number.
        - `exposureTimeSeconds` number, double: The exposure time in seconds.
        - `iso` integer: The ISO sensitivity.
        - `focalLengthMm` number, double: The focal length in millimeters.
      - `video` VideoMetadata: VideoMetadata is metadata recorded by the source of a video.
        - `durationSeconds` number, double: The duration of the video in seconds.
    - `memo` string: Optional. The memo the attachment is linked to. On create, the caller must be able to manage the memo. Format: memos/{memo}
    - `size` string: Output only. The size of the stored content in bytes.
    - `createTime` string, date-time: Output only. The creation time.
  - `relations` MemoRelation[]: Optional. The relations of the memo in both directions. Only REFERENCE relations can be set; COMMENT relations are output only.
    - `memo` MemoRelationMemoRef, required: MemoRef identifies a memo in a relation.
      - `name` string, required: Required. The resource name of the memo. Format: memos/{memo}
      - `snippet` string: Output only. A plain-text snippet of the memo content. Empty in ListMemos and ListMemoComments responses.
    - `relatedMemo` MemoRelationMemoRef, required: MemoRef identifies a memo in a relation.
      - `name` string, required: Required. The resource name of the memo. Format: memos/{memo}
      - `snippet` string: Output only. A plain-text snippet of the memo content. Empty in ListMemos and ListMemoComments responses.
    - `type` 'TYPE_UNSPECIFIED' | 'REFERENCE' | 'COMMENT', enum, required: Required. The type of the relation.
  - `reactions` Reaction[]: Output only. The reactions to the memo.
    - `name` string: Identifier. The resource name of the reaction. Format: memos/{memo}/reactions/{reaction}
    - `creator` string: Output only. The resource name of the creator. Format: users/{user}
    - `reactionType` string, required: Required. The reaction, such as an emoji ("👍", "❤️", "😄").
    - `createTime` string, date-time: Output only. The creation time.
  - `parent` string: Output only. The context memo of this COMMENT relation, if any. Its identity is returned even when the caller cannot read the parent. Fetch the parent independently; this field does not grant read access. Format: memos/{memo}
  - `tags` string[]: Output only. The tags extracted from the content.
  - `property` MemoProperty: Property holds properties computed from the memo content.
    - `title` string: The text of the H1 heading when it is the first block of the content.
    - `hasLink` boolean: Whether the content contains a link.
    - `hasCode` boolean: Whether the content contains inline code or a code block.
    - `hasTaskList` boolean: Whether the content contains a task list.
    - `hasIncompleteTasks` boolean: Whether the content contains an unchecked task.
    - `hasInlineImage` boolean: Whether the content contains a Markdown image.
  - `snippet` string: Output only. A plain-text snippet of the content.
  - `createTime` string, date-time: Optional. The creation time. Defaults to the current time when unset on creation.
  - `updateTime` string, date-time: Optional. The last update time. Defaults to the current time when unset on creation.

## Other responses

- `default`: Default error response

## Changes

- **2026-10-22** `5bf4947d4d29`: 2 info
  - added the new optional request property `property/allOf[#/components/schemas/Memo_Property]/hasInlineImage`
  - added the optional property `property/allOf[#/components/schemas/Memo_Property]/hasInlineImage` to the response with the `200` status
- **2026-10-08** `1846a777b0ef`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usememos/apis/untitled-api/changes/api/memos/:memo/comments/post.md)

---

[API](https://skmtc.dev/usememos/apis/untitled-api.md) - [All operations](https://skmtc.dev/usememos/apis/untitled-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usememos/apis/untitled-api/revisions/f587355e35b4?raw)
