> ## 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.

# Get User API: Ambil Entitas Pengguna Vendor

> Ambil satu pengguna vendor Didit berdasarkan vendor_data dengan kolom identitas, status, penghitung KYC, dan peta fitur. Pay-per-call.



Prompt Pengambilan Pengguna
        Salin prompt ke papan klip



      
      

\<pre>

\`Goal: Fetch a single Didit User entity by your own vendor_data.

Endpoint: GET https://verification.didit.me/v3/users/{vendor_data}/
Auth header: x-api-key: <DIDIT_API_KEY>

Path param:
\- vendor_data (string, REQUIRED) — your unique identifier. Free-form string, NOT a UUID. Matching is case-insensitive after Didit normalisation. URL-encode it.

curl:
curl -X GET 'https://verification.didit.me/v3/users/user-abc-123/' \
-H 'x-api-key: YOUR_API_KEY'

Response 200 (UserDetailItem) — extends the list shape with metadata, comments (activity log), and updated_at. Key fields:
\- didit_internal_id (UUID — Didit's stable internal identifier)
\- vendor_data (string)
\- display_name, full_name, date_of_birth, effective_name, portrait_image_url
\- status: "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices)
\- session_count, approved_count, declined_count, in_review_count (aggregate counters)
\- features (map of feature -> latest status)
\- approved_emails, approved_phones, issuing_states
\- metadata (arbitrary JSON you attached)
\- comments (chronological activity log: status changes, manual notes, system events)
\- created_at, updated_at
See /reference/data-models for the full schema.

Notes:
\- Aggregate counters update in real time as sessions reach terminal status.
\- For bulk lookups, prefer paging GET /v3/users/ and indexing locally on vendor_data instead of fanning out one call per identifier.

Failure modes (envelope {"detail": "..."}):
\- 401 — missing or invalid x-api-key.
\- 403 — the API key is revoked or is not valid for this application.
\- 404 — no user with that vendor_data in this application.
\- 429 — rate-limited.

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

Tempel ke

## IkhtisarMengembalikan satu [entitas Pengguna](https://docs.didit.me/id/entities/users/overview.md) yang diidentifikasi berdasarkan `vendor_data`. Respons menyertakan `didit_internal_id`, yaitu pengidentifikasi internal yang stabil dari Didit.## Kapan menggunakannya- **Pencarian** status verifikasi terkini seorang pengguna. Objek `features` memberi Anda status terbaru dari setiap fitur dalam satu objek.
- **Tampilan detail** di UI Anda sendiri. Ambil profil sesuai permintaan sebelum merendernya.
- **Penilaian risiko**: gabungkan penghitung sesi dan `features` untuk memberi skor pada setiap pengguna di sisi Anda.## Catatan- `vendor_data` di URL bersifat peka huruf besar-kecil.
- Mengembalikan `404` jika tidak ada pengguna dengan `vendor_data` tersebut dalam aplikasi.
- Penghitung agregat (`session_count`, `approved_count`, `declined_count`, `in_review_count`) diperbarui secara real time saat sesi selesai.
- Lihat [model data Pengguna](https://docs.didit.me/id/entities/users/data-model.md) untuk setiap kolom.## IzinSetiap kunci API aktif dari aplikasi dapat memanggil endpoint ini. Kunci API Didit bersifat **terikat aplikasi, bukan terikat peran**: [peran dan izin](https://docs.didit.me/id/console/roles-permissions.md) di Console (`read:users` dan lainnya) menentukan apa yang dapat dilakukan *seseorang* di Console, dan tidak dievaluasi untuk lalu lintas Management API. Atur siapa yang dapat memanggil endpoint ini dengan mengatur siapa yang dapat membaca kunci API aplikasi.## Terkait- [Ikhtisar Pengguna](https://docs.didit.me/id/entities/users/overview.md)
- [Model data](https://docs.didit.me/id/entities/users/data-model.md)
- [Daftar pengguna](https://docs.didit.me/id/management-api/users/list.md)


## OpenAPI

````yaml id/openapi-25.json GET /v3/users/{vendor_data}/
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/users/{vendor_data}/:
    get:
      tags:
        - Users
      summary: Dapatkan pengguna
      description: >-
        Ambil satu [pengguna](/entities/users) berdasarkan `vendor_data`
        (kecocokan persis). Menambahkan `metadata`, `comments`, dan `updated_at`
        ke tampilan daftar, serta mengubah `tags` ke format tautan tag
        terperinci.
      operationId: get_user
      parameters:
        - name: vendor_data
          in: path
          required: true
          schema:
            type: string
          description: >-
            Pengidentifikasi unik Anda untuk pengguna — string bentuk bebas
            (BUKAN UUID). Ini adalah nilai yang sama dengan yang Anda teruskan
            sebagai `vendor_data` saat membuat sesi yang pertama kali
            memperkenalkan pengguna ini, dicocokkan persis seperti yang dikirim.
          example: user-abc-123
      responses:
        '200':
          description: >-
            Detail pengguna lengkap termasuk metadata, log komentar/aktivitas,
            dan data sesi gabungan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetailItem'
              examples:
                Active user:
                  value:
                    didit_internal_id: f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418
                    vendor_data: user-abc-123
                    display_name: null
                    full_name: John Michael Doe
                    date_of_birth: '1990-05-15'
                    effective_name: John Michael Doe
                    status: ACTIVE
                    metadata:
                      tier: premium
                      source: website
                    portrait_image_url: https://<media-host>/...
                    session_count: 3
                    approved_count: 2
                    declined_count: 0
                    in_review_count: 1
                    issuing_states:
                      - USA
                    approved_emails:
                      - john@example.com
                    approved_phones:
                      - '+14155551234'
                    features:
                      ID_VERIFICATION: Approved
                      LIVENESS: Approved
                      FACE_MATCH: Approved
                      AML: Approved
                    features_list:
                      - feature: ID_VERIFICATION
                        status: Approved
                      - feature: LIVENESS
                        status: Approved
                      - feature: FACE_MATCH
                        status: Approved
                      - feature: AML
                        status: Approved
                    last_session_at: '2025-06-15T10:30:00Z'
                    last_activity_at: '2025-06-15T10:30:00Z'
                    first_session_at: '2025-06-01T08:00:00Z'
                    tags:
                      - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                        tag:
                          uuid: e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b
                          name: VIP
                          color: '#2567FF'
                          description: null
                          source: custom
                          created_at: '2025-05-01T09:00:00Z'
                          updated_at: '2025-05-01T09:00:00Z'
                        added_by_email: analyst@acme.com
                        added_by_name: Jane Analyst
                        created_at: '2025-06-02T11:00:00Z'
                    comments:
                      - uuid: c1111111-2222-4333-8444-555555555555
                        comment_type: STATUS_CHANGED
                        comment: null
                        actor_email: analyst@acme.com
                        actor_name: Jane Analyst
                        previous_status: FLAGGED
                        new_status: ACTIVE
                        previous_value: null
                        new_value: null
                        changed_fields: []
                        metadata: null
                        mentioned_emails: []
                        created_at: '2025-06-01T10:30:00Z'
                    created_at: '2025-06-01T08:00:00Z'
                    updated_at: '2025-06-15T10:30:00Z'
        '401':
          description: >-
            Tidak ada kredensial yang diberikan. Permintaan ke jalur
            `/v3/users/*` tanpa header `x-api-key` (atau token `Authorization:
            Bearer`) akan ditolak oleh middleware autentikasi sebelum mencapai
            API.
          content:
            application/json:
              examples:
                Missing credentials:
                  value:
                    detail: >-
                      You must be authenticated with a valid access token to
                      access this endpoint.
        '403':
          description: >-
            Kunci API tidak valid atau dicabut, atau kunci tidak dapat membaca
            pengguna aplikasi ini. Kunci yang hilang mengembalikan `403`; kunci
            yang salah, dicabut, atau kedaluwarsa mengembalikan `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            Tidak ada pengguna dengan `vendor_data` yang diberikan untuk
            aplikasi ini.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '429':
          description: >-
            Batas laju terlampaui; kurangi laju permintaan dan coba lagi setelah
            interval yang ditunjukkan dalam `Retry-After`.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X GET 'https://verification.didit.me/v3/users/user-abc-123/' \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.retrieve(
                "user-abc-123",
            )
            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.users.retrieve("user-abc-123");
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Retrieve(ctx, \"user-abc-123\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            var result = client.users().retrieve("user-abc-123");
            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->users->retrieve('user-abc-123');
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.users.retrieve("user-abc-123")
            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.Users.RetrieveAsync("user-abc-123");
            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    UserDetailItem:
      type: object
      description: >-
        Detail pengguna lengkap. Memperluas UserListItem dengan metadata,
        komentar, dan updated_at.
      allOf:
        - $ref: '#/components/schemas/UserListItem'
        - type: object
          properties:
            metadata:
              type: object
              description: >-
                JSON metadata kustom yang Anda lampirkan ke pengguna ini.
                Default adalah `{}`.
            tags:
              type: array
              description: >-
                Penetapan tag. CATATAN: pada respons detail, setiap entri berupa
                objek *tautan* tag (`{uuid, tag: {...}, added_by_email,
                added_by_name, created_at}`), berbeda dengan format datar
                `{uuid, name, color}` yang digunakan pada respons daftar.
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: UUID penetapan tag (bukan tag itu sendiri).
                  tag:
                    type: object
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      name:
                        type: string
                      color:
                        type: string
                      description:
                        type: string
                        nullable: true
                      source:
                        type: string
                        enum:
                          - didit
                          - custom
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                  added_by_email:
                    type: string
                    nullable: true
                  added_by_name:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
            comments:
              type: array
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                  comment_type:
                    type: string
                    enum:
                      - COMMENT
                      - STATUS_CHANGED
                      - METADATA_UPDATED
                      - TAG_ADDED
                      - TAG_REMOVED
                      - PROFILE_UPDATED
                  comment:
                    type: string
                    nullable: true
                  actor_email:
                    type: string
                    nullable: true
                  actor_name:
                    type: string
                    nullable: true
                  previous_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  new_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  previous_value:
                    type: object
                    nullable: true
                    description: Nilai kolom sebelumnya untuk entri PROFILE_UPDATED.
                  new_value:
                    type: object
                    nullable: true
                    description: Nilai kolom baru untuk entri PROFILE_UPDATED.
                  changed_fields:
                    type: array
                    items:
                      type: string
                    description: Nama kolom yang diubah oleh entri PROFILE_UPDATED.
                  metadata:
                    type: object
                    nullable: true
                  mentioned_emails:
                    type: array
                    items:
                      type: string
                  created_at:
                    type: string
                    format: date-time
              description: >-
                Log aktivitas dan komentar untuk pengguna ini (perubahan status,
                pengeditan profil, catatan manual).
            updated_at:
              type: string
              format: date-time
    UserListItem:
      type: object
      description: Pengguna yang terverifikasi.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: UUID internal yang stabil dari Didit untuk pengguna ini.
        vendor_data:
          type: string
          nullable: true
          description: >-
            Pengidentifikasi unik Anda untuk pengguna ini (diteruskan saat
            membuat sesi). Nilai ini dapat berupa null jika tidak ada
            pengidentifikasi vendor yang diberikan.
        display_name:
          type: string
          nullable: true
          description: Nama tampilan kustom yang Anda tetapkan
        full_name:
          type: string
          nullable: true
          description: Nama lengkap yang diekstrak dari dokumen yang diverifikasi
        date_of_birth:
          type: string
          format: date
          nullable: true
        effective_name:
          type: string
          nullable: true
          description: >-
            Nama terbaik yang tersedia: display_name jika disetel, selain itu
            full_name
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            Status siklus hidup rekaman pengguna (BUKAN status sesi). `ACTIVE`
            adalah default, `FLAGGED` menandai pengguna untuk perhatian manual,
            `BLOCKED` mencegah sesi baru untuk `vendor_data` ini.
        portrait_image_url:
          type: string
          nullable: true
          description: >-
            URL presigned untuk foto potret pengguna (kedaluwarsa setelah
            beberapa jam)
        session_count:
          type: integer
          description: Jumlah total sesi verifikasi untuk pengguna ini
        approved_count:
          type: integer
          description: Jumlah sesi yang disetujui
        declined_count:
          type: integer
          description: Jumlah sesi yang ditolak
        in_review_count:
          type: integer
          description: Jumlah sesi dalam peninjauan
        issuing_states:
          type: array
          items:
            type: string
          description: >-
            Kode ISO 3166-1 alpha-3 dari negara penerbit yang terlihat pada
            dokumen ID pengguna yang disetujui ini, misalnya `["USA", "ESP"]`.
            Berupa array kosong jika tidak ada.
        approved_emails:
          type: array
          items:
            type: string
          description: >-
            Alamat email terverifikasi yang dikumpulkan dari sesi pengguna ini
            yang disetujui, contoh `["john@example.com"]`.
        approved_phones:
          type: array
          items:
            type: string
          description: >-
            Nomor telepon terverifikasi yang dikumpulkan dari sesi pengguna ini
            yang disetujui, contoh `["+14155551234"]`.
        features:
          type: object
          description: >-
            Status per-fitur agregat di semua sesi pengguna ini. Kunci yang
            memungkinkan: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`,
            `POA`, `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`,
            `IP_ANALYSIS`, `AGE_ESTIMATION`, `DATABASE_VALIDATION`. Nilai yang
            memungkinkan: `Approved`, `Declined`, `In Review`, `Not Finished`,
            `Resub Requested`.
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            Data yang sama dengan `features`, sebagai array berurutan dari objek
            `{feature, status}`.
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: Cap waktu sesi terbaru
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: Cap waktu sesi pertama
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Cap waktu aktivitas terbaru pada pengguna ini (sesi, transaksi,
            perubahan status, pengeditan data, dll.).
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: Tag yang ditetapkan untuk pengguna ini
        created_at:
          type: string
          format: date-time
  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.