---
title: "POST /api/memos"
method: POST
path: "/api/memos"
tags: ["MemoService"]
---

# POST /api/memos

`POST /api/memos`

## Request

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

CreateMemo creates a memo owned by the authenticated user. The request body
 is a Memo; set its Markdown content and visibility (defaults to PRIVATE).
 Requires authentication.

## Query parameters

- `memoId` 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/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)
