> ## 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 Catatan Transaksi Pemantauan Transaksi

> Tambahkan catatan teks biasa, dengan penyebutan anggota opsional, ke linimasa tinjauan transaksi yang dipantau dari sistem Anda sendiri melalui Didit.



Buat Prompt API Catatan Transaksi
        Salin prompt ke papan klip



      
      

\<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>



      
      

Tempel ke

Catatan adalah konteks, bukan keputusan: catatan tidak pernah mengubah `status`, `score`, atau alert pada transaksi. Peninjau melihatnya di bagian **Catatan** pada [detail transaksi](https://docs.didit.me/id/transaction-monitoring/console.md#detail-transaksi) di Console, dan `activities` transaksi akan mendapatkan entri `TRANSACTION_NOTE_ADDED`, yang dapat Anda baca dengan [Ambil transaksi](https://docs.didit.me/id/management-api/transactions/get.md).Karena catatan berasal dari kunci API, catatan tidak memiliki penulis: `actor_email` dan `actor_name` bernilai `null`. Jika Anda perlu menampilkan siapa yang menulisnya, sertakan informasi tersebut di dalam teks catatan. Baca kembali linimasa lengkapnya dengan [Daftar catatan transaksi](https://docs.didit.me/id/management-api/transactions/list-notes.md).


## OpenAPI

````yaml id/openapi-25.json POST /v3/transactions/{transaction_id}/notes/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API Verifikasi Identitas. Lakukan autentikasi dengan header x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/{transaction_id}/notes/:
    post:
      tags:
        - Transactions
      summary: Buat catatan transaksi
      description: >-
        Tambahkan catatan teks biasa ke timeline peninjauan transaksi yang
        dipantau, tempat peninjau Console melihatnya. Catatan adalah konteks,
        bukan keputusan: `status`, `score`, dan alert transaksi tidak berubah,
        tidak ada webhook yang dikirim, dan tidak ada biaya yang ditagih.
        `activities` transaksi akan mendapatkan entri `TRANSACTION_NOTE_ADDED`.


        Catatan yang dibuat dengan kunci API tidak memiliki pembuat:
        `actor_email` dan `actor_name` bernilai `null`, jadi sertakan pembuatnya
        di dalam teks jika Anda membutuhkannya. Setiap alamat di
        `mentioned_emails` harus milik anggota organisasi Anda, jika tidak
        seluruh permintaan akan gagal dengan `400`; sebutan disimpan dalam huruf
        kecil dan di-deduplikasi, dan endpoint ini tidak memberi tahu anggota
        yang disebutkan.


        Setiap panggilan membuat catatan baru, sehingga mencoba lagi permintaan
        yang waktu habis dapat menambahkannya dua kali: buat daftar catatan
        sebelum mencoba lagi. Tidak ada endpoint API untuk mengedit atau
        menghapus catatan. Kunci API dengan cakupan memerlukan `transactions:
        write`; kunci yang dibatasi pada beberapa alur kerja atau pada sesi yang
        disetujui tidak dapat memanggil endpoint ini.
      operationId: create_transaction_note
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            UUID transaksi Didit: `uuid` yang dikembalikan oleh `POST
            /v3/transactions/` dan `GET /v3/transactions/`. `txn_id` Anda
            sendiri tidak diterima.
          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: >-
                    Catatan teks biasa. Spasi di awal dan akhir akan dipangkas
                    dan catatan kosong akan ditolak. Tidak ada batas panjang.
                mentioned_emails:
                  type: array
                  items:
                    type: string
                    format: email
                  default: []
                  description: >-
                    Email anggota organisasi Anda yang akan disebutkan.
                    Masing-masing harus berupa email valid dari anggota
                    organisasi.
            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: Catatan berhasil dibuat.
          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: >-
            Isi permintaan tidak valid: `note` tidak ada, null, atau kosong,
            alamat tidak valid di `mentioned_emails` (kesalahan diberi kunci
            berdasarkan posisi daftar), atau alamat yang disebut bukan anggota
            organisasi Anda. Tidak ada yang dibuat.
          content:
            application/json:
              schema:
                type: object
                description: Error kolom dengan kunci berdasarkan nama kolom.
                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: >-
            Kunci API telah kedaluwarsa. Hanya kunci yang dibuat dengan tanggal
            kedaluwarsa yang dapat kedaluwarsa; setelah tanggal tersebut, setiap
            permintaan dengannya menghasilkan respons `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            Permintaan tidak diizinkan. Kunci yang tidak ada akan mendapatkan
            pesan umum; kunci yang salah, dicabut, atau kedaluwarsa akan
            mendapatkan `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: >-
            Tidak ada transaksi dengan UUID ini di aplikasi tersebut (tidak
            pernah dibuat, dihapus, atau dimiliki oleh aplikasi lain).
            `transaction_id` yang bukan UUID tidak mencapai API: permintaan ini
            mengembalikan halaman HTML `404`, bukan body JSON ini.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            Lebih dari 300 permintaan tulis per menit dengan kunci API ini.
            Tunggu selama jumlah detik di `Retry-After`, lalu coba lagi.
          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: Detik hingga jendela satu menit saat ini direset.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: Permintaan yang diizinkan per menit dalam anggaran ini.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Permintaan tersisa dalam jendela saat ini.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: Waktu Unix saat jendela direset.
              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: Satu catatan pada linimasa peninjauan transaksi yang dipantau.
      required:
        - uuid
        - note
        - actor_email
        - actor_name
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: Pengidentifikasi catatan.
        note:
          type: string
          description: Isi catatan teks biasa.
        actor_email:
          type: string
          format: email
          nullable: true
          description: >-
            Email pengguna Console yang menulis catatan atau mengubah status.
            `null` untuk catatan yang dibuat dengan kunci API dan untuk catatan
            yang ditambahkan Didit secara otomatis.
        actor_name:
          type: string
          nullable: true
          description: >-
            Nama tampilan pengguna Console (email mereka jika mereka tidak
            memiliki nama). `Rule Engine` pada catatan yang ditambahkan Didit
            secara otomatis. `null` untuk catatan yang dibuat dengan kunci API.
        metadata:
          type: object
          description: >-
            Membedakan jenis catatan. Catatan yang ditulis melalui API atau
            Konsol memuat `mentioned_emails`. Perubahan status yang dilakukan di
            Konsol membawa `type: status_change` beserta `previous_status`,
            `new_status`, `reason_code`, dan `reason_label`. Catatan yang
            ditambahkan Didit membawa `source`: `rule_action` (dengan
            `rule_uuid`) untuk tindakan `add_note` aturan, atau
            `remediation_session` untuk masalah pembuatan sesi verifikasi
            tindakan pengguna.
          properties:
            mentioned_emails:
              type: array
              items:
                type: string
                format: email
              description: >-
                Anggota organisasi yang disebutkan, ditulis dalam huruf kecil
                dan dideduplikasi. Kosong jika tidak ada yang disebutkan.
            type:
              type: string
              enum:
                - status_change
              description: >-
                Hadir pada catatan yang merekam perubahan status yang dibuat di
                Console.
            previous_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Status sebelum perubahan.
            new_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: Status setelah perubahan.
            reason_code:
              type: string
              nullable: true
              description: Kode alasan yang diberikan bersama perubahan.
            reason_label:
              type: string
              nullable: true
              description: Label alasan yang diberikan bersama perubahan.
            source:
              type: string
              enum:
                - rule_action
                - remediation_session
              description: Hadir pada catatan yang ditambahkan Didit secara otomatis.
            rule_uuid:
              type: string
              format: uuid
              description: >-
                Aturan yang tindakan `add_note`-nya menulis catatan tersebut
                (dengan `source: rule_action`).
        created_at:
          type: string
          format: date-time
          description: Waktu catatan disimpan.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Kunci API aplikasi Anda, dari Developers -> API keys di Business
        Console. Kunci utama memiliki akses penuh. Kunci bernama dapat diberi
        cakupan: none, read, atau write per sumber daya, dibatasi pada beberapa
        alur kerja atau pada sesi yang disetujui, pada daftar alamat IP, dan
        pada tanggal kedaluwarsa. 401 berarti kuncinya salah, dicabut, atau
        kedaluwarsa; 403 berarti tidak ada kunci yang dikirimkan, kunci tidak
        memiliki akses ke sumber daya atau tindakan ini, atau permintaan datang
        dari alamat di luar daftar IP-nya; 404 pada rute sesi berarti sesi
        berada di luar alur kerja atau status kunci tersebut. Kunci tanpa akses
        media menerima URL gambar, video, dan PDF sebagai null, dan kunci tanpa
        izin tulis sesi menerima tautan sesi dan token sebagai null. Lihat
        https://docs.didit.me/console/api-keys.

````

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