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

# POST /api/v1/memos

`POST /api/v1/memos`

CreateMemo creates a memo. The request body is a Memo; set its content
 (Markdown) and visibility (PRIVATE | PROTECTED | PUBLIC | SPACE,
 default PRIVATE).
 The memo is owned by the authenticated user; requires authentication.

## Query parameters

- `memoId` string

## Request body

- Memo
  - `name` string — The resource name of the memo. Format: memos/{memo}, where memo is the user-defined UID.
  - `state` 'STATE_UNSPECIFIED' | 'NORMAL' | 'ARCHIVED', enum, required — The state of the memo.
  - `creator` string — The name of the creator. Format: users/{user}
  - `createTime` string, date-time — The creation timestamp. If not set on creation, the server will set it to the current time.
  - `updateTime` string, date-time — The last update timestamp. If not set on creation, the server will set it to the current time.
  - `content` string, required — Required. The content of the memo in Markdown format.
  - `visibility` 'VISIBILITY_UNSPECIFIED' | 'PRIVATE' | 'PROTECTED' | 'PUBLIC' | 'SPACE', enum, required — The visibility of the memo. One of PRIVATE (creator only), PROTECTED (signed-in users), PUBLIC (anonymous-eligible), or SPACE (active space members). Defaults to PRIVATE on creation when unspecified.
  - `tags` string[] — Output only. The tags extracted from the content.
  - `pinned` boolean — Whether the memo is pinned.
  - `attachments` Attachment[] — Optional. The attachments of the memo.
    - `name` string — The name of the attachment. Format: attachments/{attachment}
    - `createTime` string, date-time — Output only. The creation timestamp.
    - `filename` string, required — The filename of the attachment.
    - `content` string, bytes — Input only. The content of the attachment.
    - `externalLink` string — Optional. The external link of the attachment.
    - `type` string, required — The MIME type of the attachment.
    - `size` string — Output only. The size of the attachment in bytes.
    - `memo` string — Optional. The related memo. Refer to `Memo.name`. Format: memos/{memo}
    - `motionMedia` MotionMedia
      - `family` 'MOTION_MEDIA_FAMILY_UNSPECIFIED' | 'APPLE_LIVE_PHOTO' | 'ANDROID_MOTION_PHOTO', enum
      - `role` 'MOTION_MEDIA_ROLE_UNSPECIFIED' | 'STILL' | 'VIDEO' | 'CONTAINER', enum
      - `groupId` string
      - `presentationTimestampUs` string
      - `hasEmbeddedVideo` boolean
    - `mediaMetadata` MediaMetadata
      - `width` integer
      - `height` integer
      - `photo` PhotoMetadata
        - `captureTime` MediaCaptureTime
          - `localDateTime` string
          - `utcOffset` string
        - `location` MediaLocation
          - `latitude` number, double
          - `longitude` number, double
          - `altitudeMeters` number, double
        - `sourceExifOrientation` integer
        - `cameraMake` string
        - `cameraModel` string
        - `lensModel` string
        - `fNumber` number, double
        - `exposureTimeSeconds` number, double
        - `iso` integer
        - `focalLengthMm` number, double
      - `video` VideoMetadata
        - `durationSeconds` number, double
  - `relations` MemoRelation[] — Optional. The relations of the memo.
    - `memo` MemoRelationMemo, required — Memo reference in relations.
      - `name` string, required — The resource name of the memo. Format: memos/{memo}
      - `snippet` string — Output only. The snippet of the memo content. Plain text only.
    - `relatedMemo` MemoRelationMemo, required — Memo reference in relations.
      - `name` string, required — The resource name of the memo. Format: memos/{memo}
      - `snippet` string — Output only. The snippet of the memo content. Plain text only.
    - `type` 'TYPE_UNSPECIFIED' | 'REFERENCE' | 'COMMENT', enum, required
  - `reactions` Reaction[] — Output only. The reactions to the memo.
    - `name` string — The resource name of the reaction. Format: memos/{memo}/reactions/{reaction}
    - `creator` string — The resource name of the creator. Format: users/{user}
    - `reactionType` string, required — Required. The type of reaction (e.g., "👍", "❤️", "😄").
    - `createTime` string, date-time — Output only. The creation timestamp.
  - `property` MemoProperty — Computed properties of a memo.
    - `hasLink` boolean
    - `hasTaskList` boolean
    - `hasCode` boolean
    - `hasIncompleteTasks` boolean
    - `title` string — The title extracted from the first H1 heading, if present.
  - `parent` string — Output only. The readable context memo of this COMMENT relation, if any. This is omitted unless the caller may independently read both memos. Format: memos/{memo}
  - `snippet` string — Output only. The snippet of the memo content. Plain text only.
  - `location` Location
    - `placeholder` string — A placeholder text for the location.
    - `latitude` number, double — The latitude of the location.
    - `longitude` number, double — The longitude of the location.
  - `space` string — Optional. The space in which this memo is placed. Format: spaces/{space}. Every memo, including a comment, owns its placement independently.

## Response `200`

OK

- Memo
  - `name` string — The resource name of the memo. Format: memos/{memo}, where memo is the user-defined UID.
  - `state` 'STATE_UNSPECIFIED' | 'NORMAL' | 'ARCHIVED', enum, required — The state of the memo.
  - `creator` string — The name of the creator. Format: users/{user}
  - `createTime` string, date-time — The creation timestamp. If not set on creation, the server will set it to the current time.
  - `updateTime` string, date-time — The last update timestamp. If not set on creation, the server will set it to the current time.
  - `content` string, required — Required. The content of the memo in Markdown format.
  - `visibility` 'VISIBILITY_UNSPECIFIED' | 'PRIVATE' | 'PROTECTED' | 'PUBLIC' | 'SPACE', enum, required — The visibility of the memo. One of PRIVATE (creator only), PROTECTED (signed-in users), PUBLIC (anonymous-eligible), or SPACE (active space members). Defaults to PRIVATE on creation when unspecified.
  - `tags` string[] — Output only. The tags extracted from the content.
  - `pinned` boolean — Whether the memo is pinned.
  - `attachments` Attachment[] — Optional. The attachments of the memo.
    - `name` string — The name of the attachment. Format: attachments/{attachment}
    - `createTime` string, date-time — Output only. The creation timestamp.
    - `filename` string, required — The filename of the attachment.
    - `content` string, bytes — Input only. The content of the attachment.
    - `externalLink` string — Optional. The external link of the attachment.
    - `type` string, required — The MIME type of the attachment.
    - `size` string — Output only. The size of the attachment in bytes.
    - `memo` string — Optional. The related memo. Refer to `Memo.name`. Format: memos/{memo}
    - `motionMedia` MotionMedia
      - `family` 'MOTION_MEDIA_FAMILY_UNSPECIFIED' | 'APPLE_LIVE_PHOTO' | 'ANDROID_MOTION_PHOTO', enum
      - `role` 'MOTION_MEDIA_ROLE_UNSPECIFIED' | 'STILL' | 'VIDEO' | 'CONTAINER', enum
      - `groupId` string
      - `presentationTimestampUs` string
      - `hasEmbeddedVideo` boolean
    - `mediaMetadata` MediaMetadata
      - `width` integer
      - `height` integer
      - `photo` PhotoMetadata
        - `captureTime` MediaCaptureTime
          - `localDateTime` string
          - `utcOffset` string
        - `location` MediaLocation
          - `latitude` number, double
          - `longitude` number, double
          - `altitudeMeters` number, double
        - `sourceExifOrientation` integer
        - `cameraMake` string
        - `cameraModel` string
        - `lensModel` string
        - `fNumber` number, double
        - `exposureTimeSeconds` number, double
        - `iso` integer
        - `focalLengthMm` number, double
      - `video` VideoMetadata
        - `durationSeconds` number, double
  - `relations` MemoRelation[] — Optional. The relations of the memo.
    - `memo` MemoRelationMemo, required — Memo reference in relations.
      - `name` string, required — The resource name of the memo. Format: memos/{memo}
      - `snippet` string — Output only. The snippet of the memo content. Plain text only.
    - `relatedMemo` MemoRelationMemo, required — Memo reference in relations.
      - `name` string, required — The resource name of the memo. Format: memos/{memo}
      - `snippet` string — Output only. The snippet of the memo content. Plain text only.
    - `type` 'TYPE_UNSPECIFIED' | 'REFERENCE' | 'COMMENT', enum, required
  - `reactions` Reaction[] — Output only. The reactions to the memo.
    - `name` string — The resource name of the reaction. Format: memos/{memo}/reactions/{reaction}
    - `creator` string — The resource name of the creator. Format: users/{user}
    - `reactionType` string, required — Required. The type of reaction (e.g., "👍", "❤️", "😄").
    - `createTime` string, date-time — Output only. The creation timestamp.
  - `property` MemoProperty — Computed properties of a memo.
    - `hasLink` boolean
    - `hasTaskList` boolean
    - `hasCode` boolean
    - `hasIncompleteTasks` boolean
    - `title` string — The title extracted from the first H1 heading, if present.
  - `parent` string — Output only. The readable context memo of this COMMENT relation, if any. This is omitted unless the caller may independently read both memos. Format: memos/{memo}
  - `snippet` string — Output only. The snippet of the memo content. Plain text only.
  - `location` Location
    - `placeholder` string — A placeholder text for the location.
    - `latitude` number, double — The latitude of the location.
    - `longitude` number, double — The longitude of the location.
  - `space` string — Optional. The space in which this memo is placed. Format: spaces/{space}. Every memo, including a comment, owns its placement independently.

## Other responses

- `default` — Default error response

## Changes

> 63 revisions in range; 51 could not be searched.

- **2025-12-15** `d740073f088f` — 4 warning, 6 info
  - removed the request property `attachments/items/motionMedia`
  - removed the request property `property/allOf[#/components/schemas/Memo_Property]/title`
  - removed the optional property `attachments/items/motionMedia` from the response with the `200` status
  - removed the optional property `property/allOf[#/components/schemas/Memo_Property]/title` from the response with the `200` status
  - …6 more

[Change history](https://skmtc.dev/usememos/apis/untitled-api/changes/api/v1/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-service-production.skmtc.workers.dev/v1/apis/usememos/untitled-api/revisions/9f2688df7c2e/schema)
