> ## 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 Daftar Pengguna: Entitas Pengguna Vendor

> Ambil semua entitas User vendor untuk aplikasi Didit Anda dengan filter status, pencarian, dan tanggal. Kelola siklus hidup pengguna secara terprogram.



Prompt Daftar Pengguna
        Salin prompt ke papan klip



      
      

\<pre>

\`Goal: Page through Didit User entities for an application and consume them in your backend.

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

Query params (all optional):
\- status: "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices, NOT the session enum).
\- search: free-text over vendor_data, display_name, full_name, approved_emails, approved_phones.
\- country: ISO 3166-1 alpha-3 (e.g. "USA", "ESP") — filters by issuing country of approved documents.
\- limit: integer, 1–200, default 50.
\- offset: integer, 0+, default 0. Prefer following the "next" URL from the previous page.

curl:
curl -X GET 'https://verification.didit.me/v3/users/?limit=50&status=ACTIVE' \
-H 'x-api-key: YOUR_API_KEY'

Response 200 (envelope):
\{
"count": <int — exact up to 100, capped above; pagination still works via "next">,
"next": <URL of next page or null>,
"previous": <URL of previous page or null>,
"results": [ UserListItem, ... ]
}

UserListItem key fields: didit_internal_id (UUID), vendor_data (string, may be null), display_name, full_name, effective_name, status, portrait_image_url, session_count, approved_count, declined_count, in_review_count, issuing_states, approved_emails, approved_phones, features (map of feature -> "Approved" | "Declined" | "In Review" | ...), features_list, last_session_at, first_session_at, tags, created_at. See /reference/data-models for the full shape.

Notes:
\- Ordered by last_session_at desc (most recently active first).
\- Deleted users are not returned.
\- vendor_data is a free-form client-supplied string, NOT a UUID. It may be null when the originating session did not provide one.

Pagination loop:
url = 'https://verification.didit.me/v3/users/?limit=200&status=ACTIVE'
while url:
r = requests.get(url, headers={'x-api-key': API_KEY})
r.raise_for_status()
page = r.json()
for user in page['results']:
    ...handle user...
url = page['next']

Failure modes (all return {"detail": "..."} unless noted):
\- 401 — missing or revoked x-api-key.
\- 403 — the API key is revoked or is not valid for this application.
\- 429 — rate-limited. Honour Retry-After header.

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

\</pre>



      
      

Tempel ke

## IkhtisarMengembalikan daftar [entitas pengguna](https://docs.didit.me/id/entities/users/overview.md) yang dibagi per halaman untuk aplikasi yang terautentikasi. Gunakan endpoint ini untuk menyinkronkan pengguna ke gudang data Anda, menemukan pengguna yang memerlukan perhatian analis, atau mencari berdasarkan nama tampilan.## Kapan menggunakannya- **Sinkronisasi berkala** tabel pengguna Anda ke BI eksternal atau gudang data.
- **Antrean analis**: filter berdasarkan `status=FLAGGED` atau `last_activity_at` yang sudah lama untuk mengisi kotak masuk peninjauan.
- **Cari** pengguna berdasarkan `display_name`, `full_name`, atau `vendor_data`.## Filter dan paginasi| Parameter query | Deskripsi |
| - | - |
| `status` | Filter berdasarkan `ACTIVE`, `FLAGGED`, atau `BLOCKED`. |
| `search` | Pencocokan substring pada `vendor_data`, `display_name`, `full_name`, email, dan telepon. |
| `country_code` | Filter berdasarkan `issuing_states` (ISO 3166-1 alpha-3). |
| `created_after`, `created_before` | Rentang tanggal pembuatan (ISO 8601). |
| `last_activity_after`, `last_activity_before` | Rentang aktivitas. |
| `page_size` | 1–200. Bawaan: 50. |
| `cursor` | Kursor paginasi yang dikembalikan pada respons sebelumnya. |## Catatan- Setiap item respons menyertakan `didit_internal_id`. `vendor_data` dapat bernilai `null` jika sesi atau transaksi asli tidak menyediakannya.
- Endpoint ini melakukan paginasi menggunakan kursor: simpan kursor `next` di antara pemanggilan dan hentikan ketika `next` kosong.
- Lihat [model data pengguna](https://docs.didit.me/id/entities/users/data-model.md) untuk semua kolom pada baris pengguna.## IzinSetiap kunci API aktif milik aplikasi dapat memanggil endpoint ini. Kunci API Didit bersifat **berbasis aplikasi, bukan berbasis peran**: [peran dan izin](https://docs.didit.me/id/console/roles-permissions.md) di Console (`list: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)
- [Mendapatkan pengguna](https://docs.didit.me/id/management-api/users/get.md)
- [Operasi pengguna](https://docs.didit.me/id/entities/users/operations.md)


## OpenAPI

````yaml id/openapi-25.json GET /v3/users/
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/:
    get:
      tags:
        - Users
      summary: Daftar pengguna
      description: >-
        Daftar [pengguna](/entities/users) yang dihimpun Didit dari sesi KYC
        yang berbagi `vendor_data` yang sama (string bentuk bebas, BUKAN UUID),
        ditambah pengguna yang dibuat melalui API. Dipaginasi, diurutkan
        berdasarkan `last_session_at` menurun. Endpoint ini tidak mendukung
        parameter filter atau pencarian — ambil halaman dan filter di sisi
        klien.
      operationId: list_users
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Ukuran halaman. Nilai default-nya 50 jika dihilangkan. Tidak ada
            batasan maksimum yang diterapkan, tetapi jaga ukuran halaman tetap
            kecil demi latensi.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Offset berbasis nol dari rekaman pertama yang dikembalikan.
            Sebaiknya ikuti URL `next` dari halaman sebelumnya daripada
            menghitungnya secara manual.
      responses:
        '200':
          description: >-
            Daftar pengguna berpaginasi dengan status verifikasi, jumlah sesi,
            dan rincian fitur.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Jumlah baris yang cocok — tepat hingga 100, dibatasi pada
                      100 setelahnya demi performa. Jangan gunakan ini untuk
                      mendeteksi halaman terakhir; andalkan `next` yang bernilai
                      `null` sebagai gantinya.
                  next:
                    type: string
                    nullable: true
                    description: >-
                      URL absolut halaman berikutnya, atau `null` di halaman
                      terakhir.
                  previous:
                    type: string
                    nullable: true
                    description: >-
                      URL absolut halaman sebelumnya, atau `null` di halaman
                      pertama.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserListItem'
              examples:
                Example:
                  value:
                    count: 2
                    next: null
                    previous: null
                    results:
                      - 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
                        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
                            name: VIP
                            color: '#2567FF'
                        created_at: '2025-06-01T08:00:00Z'
                      - didit_internal_id: 6ed99d53-e8f5-4cf8-9ac1-4a506cb40f6b
                        vendor_data: null
                        display_name: Jane S.
                        full_name: Jane Elizabeth Smith
                        date_of_birth: '1985-11-22'
                        effective_name: Jane S.
                        status: FLAGGED
                        portrait_image_url: null
                        session_count: 1
                        approved_count: 0
                        declined_count: 0
                        in_review_count: 1
                        issuing_states: []
                        approved_emails: []
                        approved_phones: []
                        features:
                          ID_VERIFICATION: In Review
                        features_list:
                          - feature: ID_VERIFICATION
                            status: In Review
                        last_session_at: '2025-06-20T14:00:00Z'
                        last_activity_at: '2025-06-20T14:05:00Z'
                        first_session_at: '2025-06-20T14:00:00Z'
                        tags: []
                        created_at: '2025-06-20T14:00: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 tidak dapat mencantumkan pengguna untuk 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.
        '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/?limit=50' \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.users.list():
                print(item)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            for await (const item of didit.users.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Users.ListAutoPaging(ctx, didit.UsersListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

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

            for (var item : client.users().list()) {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            foreach ($didit->users->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.users.list.auto_paging_each do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: |-
            using System;
            using System.Text.Json;
            using Didit;

            // Reads DIDIT_API_KEY.
            using var client = new DiditClient();

            await foreach (var item in await client.Users.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    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.