> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 取引メモ作成API

> Didit Management APIで、モニタリング対象取引のレビュータイムラインにプレーンテキストのメモを追加できます。メンバーのメンションにも対応し、自社システムから直接送信できます。



取引メモ作成APIプロンプト
        プロンプトをクリップボードにコピー



      
      

\<pre>

\`Add a note to a Didit monitored transaction through the Management API.

Endpoint:
POST https://verification.didit.me/v3/transactions/{transaction_id}/notes/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs transactions: write. Keys limited to specific workflows or to approved sessions cannot call this endpoint.

Goal:
\- Record context from my own systems (a support call, a manual check, an outcome from my case tool) on the transaction's review timeline, where Console reviewers see it.

Path parameter:
\- transaction_id: the Didit transaction uuid, not my own txn_id.

Request body (application/json):
\{
"note": "Customer confirmed the withdrawal by phone.",
"mentioned_emails": ["analyst@example.com"]
}
\- note: required. Plain text, no length limit. Leading and trailing whitespace is trimmed and a blank note is rejected.
\- mentioned_emails: optional list of emails of members of my organization to mention.

Behavior:
\- Returns 201 with the created note. actor_email and actor_name are null because the note comes from an API key, not a person.
\- Every mentioned email must belong to a member of my organization; one unknown address fails the whole request with 400. Mentions are stored lower-cased and de-duplicated in metadata.mentioned_emails. This endpoint does not notify the mentioned members.
\- Each call creates a new note. Retrying a request that timed out can add the same note twice, so check GET /v3/transactions/{transaction_id}/notes/ before retrying.
\- There is no API endpoint to edit or remove a note.

Example call:
curl -X POST "https://verification.didit.me/v3/transactions/{transaction_id}/notes/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"note": "Customer confirmed the withdrawal by phone.", "mentioned_emails": ["analyst@example.com"]}'

What to read from the response:
\- uuid: the note id.
\- created_at: when the note was stored.
\- metadata.mentioned_emails: the normalized mention list (empty when nobody was mentioned).

Failure modes:
\- 400: note missing ({"note": ["This field is required."]}) or blank, an invalid email in mentioned_emails, or a mentioned address outside my organization ({"mentioned_emails": ["Mentioned users must belong to this organization and have access to this application."]}).
\- 401: the API key has expired.
\- 403: missing API key (a wrong, revoked or expired key gets 401), a scoped key without transactions: write ({"detail": "This API key has no write access to transactions."}), a key with workflow or status limits, or a request from outside the key's IP allowlist.
\- 404: no transaction with this uuid in my application ({"detail": "No Transaction matches the given query."}).
\- 429: more than 300 write requests per minute with this key; wait Retry-After seconds and retry.

Side effects: creates the note and adds a TRANSACTION_NOTE_ADDED entry to the transaction's activities. The transaction's status, score and alerts do not change, no webhook is sent, and nothing is billed.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

貼り付け先

メモは判定ではなく補足情報です。取引の`status`、`score`、アラートを変更することはありません。レビュアーはConsoleの[取引詳細](https://docs.didit.me/ja/transaction-monitoring/console.md#取引の詳細)の**メモ**でメモを確認できます。また、取引の`activities`に`TRANSACTION_NOTE_ADDED`のエントリが追加され、[取引の取得](https://docs.didit.me/ja/management-api/transactions/get.md)で参照できます。メモはAPIキーから作成されるため、作成者情報を持ちません。`actor_email`と`actor_name`は`null`になります。作成者を表示する必要がある場合は、メモの本文に含めてください。タイムライン全体は[取引メモ一覧の取得](https://docs.didit.me/ja/management-api/transactions/list-notes.md)で取得できます。


## OpenAPI

````yaml ja/openapi-25.json POST /v3/transactions/{transaction_id}/notes/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: 本人確認API。x-api-keyヘッダーで認証します。
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/{transaction_id}/notes/:
    post:
      tags:
        - Transactions
      summary: 取引メモを作成
      description: >-
        監視対象の取引のレビュータイムラインに、Consoleのレビュアーが閲覧できるプレーンテキストのメモを追加します。メモは判定ではなく補足情報です。取引の`status`、`score`、アラートは変更されず、Webhookは送信されず、請求も発生しません。取引の`activities`に`TRANSACTION_NOTE_ADDED`エントリが追加されます。


        APIキーで作成したメモには作成者がありません。`actor_email`と`actor_name`は`null`になるため、作成者が必要な場合は本文に記載してください。`mentioned_emails`内のすべてのアドレスは組織のメンバーのものである必要があり、そうでない場合はリクエスト全体が`400`で失敗します。メンションは小文字に変換され、重複を除いて保存されます。このエンドポイントは、メンションされたメンバーに通知しません。


        呼び出すたびに新しいメモが作成されるため、タイムアウトしたリクエストを再試行するとメモが2件追加される可能性があります。再試行する前にメモの一覧を取得してください。メモを編集または削除するAPIエンドポイントはありません。スコープ付きAPIキーには`transactions:
        write`が必要です。一部のワークフローまたは承認済みセッションに限定されたキーでは、このエンドポイントを呼び出せません。
      operationId: create_transaction_note
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            Diditの取引UUIDで、`POST /v3/transactions/`および`GET
            /v3/transactions/`が返す`uuid`です。独自の`txn_id`は受け付けられません。
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - note
              properties:
                note:
                  type: string
                  minLength: 1
                  description: プレーンテキストのメモ。先頭と末尾の空白は削除され、空のメモは拒否されます。文字数の制限はありません。
                mentioned_emails:
                  type: array
                  items:
                    type: string
                    format: email
                  default: []
                  description: メンションする組織メンバーのメールアドレス。それぞれが組織メンバーの有効なメールアドレスである必要があります。
            examples:
              Note with a mention:
                value:
                  note: Customer confirmed the withdrawal by phone.
                  mentioned_emails:
                    - analyst@example.com
              Plain note:
                value:
                  note: Source of funds document requested by email.
      responses:
        '201':
          description: メモが作成されました。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionNote'
              examples:
                Created:
                  value:
                    uuid: c1111111-2222-4333-8444-555555555555
                    note: Customer confirmed the withdrawal by phone.
                    actor_email: null
                    actor_name: null
                    metadata:
                      mentioned_emails:
                        - analyst@example.com
                    created_at: '2026-10-16T10:05:12.481203Z'
        '400':
          description: >-
            ボディが無効です。`note`がない、null、または空白である、`mentioned_emails`に無効なアドレスがある（エラーはリスト内の位置をキーとします）、またはメンションされたアドレスが組織のメンバーではありません。何も作成されません。
          content:
            application/json:
              schema:
                type: object
                description: フィールド名をキーとしたフィールドエラー。
                additionalProperties: {}
              examples:
                Missing note:
                  value:
                    note:
                      - This field is required.
                Blank note:
                  value:
                    note:
                      - This field may not be blank.
                Invalid email:
                  value:
                    mentioned_emails:
                      '0':
                        - Enter a valid email address.
                Not an organization member:
                  value:
                    mentioned_emails:
                      - >-
                        Mentioned users must belong to this organization and
                        have access to this application.
        '401':
          description: >-
            APIキーの有効期限が切れています。期限切れになるのは有効期限を指定して作成されたキーのみで、その日以降、このキーを使ったすべてのリクエストは`401`を返します。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            リクエストは許可されていません。キーがない場合は汎用メッセージが返され、誤った、失効した、または期限切れのキーには`401`が返されます。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without transactions write:
                  value:
                    detail: This API key has no write access to transactions.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            このUUIDの取引がアプリケーションに存在しません(未作成、削除済み、または別のアプリケーションが所有)。UUIDではない`transaction_id`はAPIに到達せず、このJSONボディの代わりに`404`のHTMLページが返されます。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            このAPIキーで1分あたり300件を超える書き込みリクエストがありました。`Retry-After`に示された秒数だけ待ってから再試行してください。
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
          headers:
            Retry-After:
              description: 現在の1分間のウィンドウがリセットされるまでの秒数です。
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: この枠で1分あたりに許可されるリクエスト数。
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: 現在のウィンドウで残っているリクエスト数。
              schema:
                type: integer
            X-RateLimit-Reset:
              description: ウィンドウがリセットされるUnix時刻。
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/notes/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"note": "Customer confirmed the withdrawal by phone.", "mentioned_emails": ["analyst@example.com"]}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.transactions.notes.create(
                "abcdef12-3456-7890-abcd-ef1234567890",
                note="Customer confirmed the withdrawal by phone.",
                mentioned_emails=["analyst@example.com"],
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const result = await
            didit.transactions.notes.create("abcdef12-3456-7890-abcd-ef1234567890",
            {
              note: "Customer confirmed the withdrawal by phone.",
              mentioned_emails: ["analyst@example.com"],
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Notes.Create(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsNotesCreateParams{\n\tNote:            \"Customer confirmed the withdrawal by phone.\",\n\tMentionedEmails: didit.Some([]string{\"analyst@example.com\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.TransactionsNotesCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.transactions().notes().create("abcdef12-3456-7890-abcd-ef1234567890",
            TransactionsNotesCreateParams.builder()
                    .note("Customer confirmed the withdrawal by phone.")
                    .mentionedEmails(List.of("analyst@example.com"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $result =
            $didit->transactions->notes->create('abcdef12-3456-7890-abcd-ef1234567890',
            [
                'note' => 'Customer confirmed the withdrawal by phone.',
                'mentioned_emails' => ['analyst@example.com'],
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.transactions.notes.create(
              "abcdef12-3456-7890-abcd-ef1234567890",
              note: "Customer confirmed the withdrawal by phone.",
              mentioned_emails: ["analyst@example.com"]
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await
            client.Transactions.Notes.CreateAsync("abcdef12-3456-7890-abcd-ef1234567890",
            new TransactionsNotesCreateParams

            {
                Note = "Customer confirmed the withdrawal by phone.",
                MentionedEmails = new string[] { "analyst@example.com" },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TransactionNote:
      type: object
      description: モニタリング対象取引のレビュータイムライン上のメモ1件。
      required:
        - uuid
        - note
        - actor_email
        - actor_name
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: メモの識別子。
        note:
          type: string
          description: プレーンテキストのメモ本文。
        actor_email:
          type: string
          format: email
          nullable: true
          description: >-
            メモを書いた、またはステータスを変更したConsoleユーザーのメールアドレス。APIキーで作成されたメモおよびDiditが自動的に追加したメモの場合は`null`。
        actor_name:
          type: string
          nullable: true
          description: >-
            Consoleユーザーの表示名です（名前がない場合はメールアドレス）。Diditが自動的に追加するメモでは`Rule
            Engine`となります。APIキーで作成されたメモでは`null`です。
        metadata:
          type: object
          description: >-
            ノートの種類を区別します。APIまたはConsoleで作成されたノートには`mentioned_emails`が含まれます。Consoleで行われたステータス変更には、`type:
            status_change`と`previous_status`、`new_status`、`reason_code`、`reason_label`が含まれます。Diditが追加するノートには`source`が含まれ、ルールの`add_note`アクションによるものは`rule_action`(`rule_uuid`付き)、ユーザーアクション用の認証セッションの作成で問題が発生した場合は`remediation_session`となります。
          properties:
            mentioned_emails:
              type: array
              items:
                type: string
                format: email
              description: メンションされた組織メンバー（小文字化・重複排除済み）です。誰もメンションされていない場合は空です。
            type:
              type: string
              enum:
                - status_change
              description: Consoleで行われたステータス変更を記録するメモに含まれます。
            previous_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: 変更前のステータス。
            new_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: 変更後のステータス。
            reason_code:
              type: string
              nullable: true
              description: 変更時に指定された理由コード。
            reason_label:
              type: string
              nullable: true
              description: 変更時に指定された理由ラベル。
            source:
              type: string
              enum:
                - rule_action
                - remediation_session
              description: Diditが自動的に追加するメモに含まれます。
            rule_uuid:
              type: string
              format: uuid
              description: '`add_note`アクションでメモを書き込んだルール（`source: rule_action`付き）。'
        created_at:
          type: string
          format: date-time
          description: メモが保存された日時。
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        お客様のアプリケーションのAPIキーです。Business ConsoleのDevelopers -> API
        keysで取得できます。プライマリキーはフルアクセス権を持ちます。名前付きキーにはスコープを設定できます。リソースごとのアクセス権（なし、読み取り、書き込み）、一部のワークフローまたは承認済みセッションへの限定、IPアドレスのリストへの限定、有効期限の設定です。401は、キーが誤っている、失効している、または期限切れであることを意味します。403は、キーが送信されていない、キーにこのリソースやアクションへのアクセス権がない、またはIPリスト外のアドレスからリクエストが送信されたことを意味します。セッションのルートでの404は、セッションがキーのワークフローまたはステータスの対象外であることを意味します。メディアへのアクセス権がないキーでは、画像、動画、PDFのURLがnullで返されます。セッションの書き込み権限がないキーでは、セッションのリンクとトークンがnullで返されます。詳細は次を参照してください:
        https://docs.didit.me/console/api-keys

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.