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

# Pengayaan Identitas Global - API Verifikasi Identitas

> Pencarian jaringan identitas global lewat infrastruktur identitas Didit. Bayar per panggilan mulai $0.20, tanpa kontrak, tanpa minimum.

Mengidentifikasi orang (nama, tanggal lahir, alamat, nomor telepon, email, dan ID nasional) serta skor kecocokan nama dari email dan/atau nomor telepon melalui jaringan wawasan risiko global. Dikenai biaya per permintaan. Didit menyediakan layanan ini melalui `POST /v3/database-validation/` sehingga Anda dapat memeriksa data yang dikirim terhadap jaringan identitas yang terhubung dan menerima hasil kecocokan yang sudah dinormalisasi. Ini adalah jaringan pengayaan pihak ketiga, bukan registri pemerintah yang resmi. Jangan sajikan hasilnya sebagai verifikasi dari sumber primer.

## Cakupan

* **Cakupan:** 50+ pasar
* **Negara:** Global
* **ID layanan:** `glb_identity_enrichment`
* **Domain data:** Identitas
* **Kategori:** IdentityEnrichment

## Input

| Kolom | Wajib | Contoh |
| - | -: | - |
| `email` | Tidak | `john.doe@example.com` |
| `phone` | Tidak | `+15550101000` |
| `first_name` | Tidak | `John` |
| `last_name` | Tidak | `Doe` |
| `full_name` | Tidak | `John Doe` |
| `country_of_residence` | Tidak | `US` |
| `vendor_data` | Tidak | `user-1234` |

* **Input wajib:** —
* **Input opsional:** `email`, `phone`, `first_name`, `last_name`, `full_name`, `country_of_residence`, `vendor_data`
* **Persetujuan:** Wajib
* **Ketersediaan alur kerja:** Hanya API mandiri
* **Cakupan:** 50+ pasar
* **Harga:** \$0.20 per kueri yang berhasil

Layanan ini tidak ditawarkan sebagai langkah Validasi Database di dalam alur kerja. Pembatasan ini berlaku untuk tempat pemeriksaan dijalankan, bukan untuk data yang boleh Anda kirimkan. Panggil layanan ini melalui API mandiri, tempat Anda memasukkan input secara langsung.

## Parameter body

**issuing\_state** `string` *required* (default: GLB)

Kode negara ISO 3166-1 alpha-3 untuk layanan database ini.

Contoh: `GLB`

**services** `string` *required* (default: glb\_identity\_enrichment)

Array yang berisi ID layanan ini. Mengunci layanan membuat permintaan tetap terbatas pada database yang tepat ini.

Contoh: `glb_identity_enrichment`

**consent** `boolean` *required* (default: true)

Persetujuan eksplisit dari pengguna akhir untuk layanan ini.

Contoh: `true`

**email** `string` (default: [john.doe@example.com](mailto:john.doe@example.com))

Alamat email.

Contoh: `john.doe@example.com`

**phone** `string` (default: +15550101000)

Nomor telepon dalam format internasional.

Contoh: `+15550101000`

**first\_name** `string` (default: John)

Nama depan yang akan divalidasi.

Contoh: `John`

**last\_name** `string` (default: Doe)

Nama belakang yang akan divalidasi.

Contoh: `Doe`

**full\_name** `string`

Nama lengkap sah yang akan divalidasi.

Contoh: `John Doe`

**country\_of\_residence** `string` (default: US)

Kode negara tempat tinggal ISO 3166-1 alpha-2 (opsional). Hanya digunakan untuk memfokuskan pencarian identitas.

Contoh: `US`

**vendor\_data** `string` (default: user-1234)

Referensi pengguna yang stabil untuk orang ini, misalnya ID pengguna internal Anda. Didit menggunakannya untuk menautkan pemeriksaan melalui API mandiri ke pengguna akhir yang sama dan mengurangi gangguan deteksi duplikat.

Contoh: `user-1234`

## Aturan input & catatan validasi

* Sediakan setidaknya salah satu dari `email` atau `phone`. Keduanya adalah kunci pencarian. Permintaan tanpa keduanya tidak dapat menjalankan pencarian pengayaan dan ditolak sebelum pencarian ke sumber (tidak dikenai biaya).
* Tambahkan nama setiap kali Anda memilikinya, karena sumber memberi skor pencarian berdasarkan nama tersebut. Kirim `first_name` dan `last_name`, karena kedua kolom itu yang dibandingkan oleh peta `validation` pada respons. Permintaan yang hanya mengirim `full_name` tetap diberi skor oleh sumber, tetapi respons akan kembali dengan `validation` kosong dan `match_type` tingkat atas bernilai null.
* `country_of_residence` adalah kode ISO 3166-1 alpha-2 yang digunakan untuk memfokuskan pencarian.
* Setiap pencarian yang selesai dikenai biaya, termasuk pencarian yang tidak menemukan orang sama sekali (`persons_found: 0`). Hanya permintaan yang ditolak sebelum pencarian, yaitu tanpa `email` maupun `phone`, yang gratis.

## Cara memanggilnya

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=GLB" \
  -F "services=glb_identity_enrichment" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "email=john.doe@example.com" \
  -F "phone=+15550101000" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "country_of_residence=US"
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="GLB",
    services=["glb_identity_enrichment"],
    consent=True,
    first_name="John",
    last_name="Doe",
    phone="+15550101000",
    email="john.doe@example.com",
    country_of_residence="US",
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit from "@didit-protocol/sdk-node";

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

const result = await didit.databaseValidation.validate({
  issuing_state: "GLB",
  services: ["glb_identity_enrichment"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  phone: "+15550101000",
  email: "john.doe@example.com",
  country_of_residence: "US",
  vendor_data: "user-1234",
});
console.log(result);
```

```go Go theme={null}
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()

result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
	IssuingState:       "GLB",
	Services:           didit.Some([]string{"glb_identity_enrichment"}),
	Consent:            didit.Bool(true),
	FirstName:          didit.String("John"),
	LastName:           didit.String("Doe"),
	Phone:              didit.String("+15550101000"),
	Email:              didit.String("john.doe@example.com"),
	CountryOfResidence: didit.String("US"),
	VendorData:         didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;

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

var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
        .issuingState("GLB")
        .services(List.of("glb_identity_enrichment"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .phone("+15550101000")
        .email("john.doe@example.com")
        .countryOfResidence("US")
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'GLB',
    'services' => ['glb_identity_enrichment'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'phone' => '+15550101000',
    'email' => 'john.doe@example.com',
    'country_of_residence' => 'US',
    'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
```

```ruby Ruby theme={null}
require "didit"

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

result = didit.database_validation.validate(
  issuing_state: "GLB",
  services: ["glb_identity_enrichment"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  phone: "+15550101000",
  email: "john.doe@example.com",
  country_of_residence: "US",
  vendor_data: "user-1234"
)
puts result.to_h
```

```csharp .NET theme={null}
using System;
using System.Text.Json;
using Didit;

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

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "GLB",
    Services = new string[] { "glb_identity_enrichment" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    Phone = "+15550101000",
    Email = "john.doe@example.com",
    CountryOfResidence = "US",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Setiap panggilan yang berhasil mengembalikan HTTP `200`. Kolom **`outcome_code`** menunjukkan apa yang sebenarnya terjadi, misalnya membedakan ketidakcocokan biometrik yang sebenarnya (`BIOMETRIC_NO_MATCH`) dari swafoto yang tidak dapat dibaca (`BIOMETRIC_IMAGE_UNUSABLE`). `status` yang ditampilkan adalah status fitur default; [tindakan Partial Match / No Match](https://docs.didit.me/id/core-technology/database-validation/database-validation-warnings.md) yang Anda konfigurasi dapat menimpanya.

**`MATCH`** — Email atau telepon berhasil menemukan seseorang, dan nama pada kecocokan terbaik sesuai dengan nama yang Anda kirim.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "GLB",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "John",
        "last_name": "Doe",
        "persons_found": 1
      },
      "validation": {
        "full_name": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`** — Email atau telepon berhasil menemukan seseorang, tetapi nama pada kecocokan terbaik hanya sebagian sesuai dengan nama yang Anda kirim.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "GLB",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "John",
        "last_name": "Dow",
        "persons_found": 1
      },
      "validation": {
        "full_name": "partial_match"
      }
    }
  ]
}
```

**`NO_MATCH`** — Email atau telepon berhasil menemukan seseorang, tetapi nama pada kecocokan terbaik tidak sesuai dengan nama yang Anda kirim.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "GLB",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "first_name": "Jane",
        "last_name": "Roe",
        "persons_found": 1
      },
      "validation": {
        "full_name": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`** — Email atau telepon berhasil menemukan seseorang, tetapi tidak ada skor nama yang dikembalikan, misalnya karena permintaan tidak menyertakan nama. Tidak ada kesimpulan yang dibuat, sehingga `validation` kosong, `match_type` bernilai null, dan pemeriksaan dikirim ke peninjauan. Kirim `first_name` + `last_name` untuk mendapatkan hasil dengan skor: perbandingan `validation` membaca kolom-kolom tersebut, dan permintaan yang hanya membawa `full_name` mendapatkan `outcome_code` dengan skor, tetapi `validation` tetap kosong.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "GLB",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "persons_found": 1
      },
      "validation": {}
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`** — Email atau telepon tidak berhasil menemukan siapa pun (`persons_found: 0`). Tidak ada nama untuk dibandingkan, sehingga `validation` kosong dan `match_type` bernilai null; hasilnya adalah negatif yang pasti dan mengikuti tindakan No Match Anda. Pencarian ini tetap dikenai biaya.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "GLB",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "glb_identity_enrichment",
      "service_name": "Global - Identity Enrichment",
      "source_data": {
        "persons_found": 0
      },
      "validation": {}
    }
  ]
}
```

## Data yang dikembalikan

Bidang yang tepat yang muncul di `source_data` bergantung pada apa yang dikembalikan registri. Contoh yang dihasilkan untuk `glb_identity_enrichment` saat ini mendokumentasikan bentuk ternormalisasi berikut:

* `first_name`
* `last_name`
* `persons_found`

## Harga & SLA

Kueri Global - Identity Enrichment hanya ditagih ketika Didit menerima hasil yang konklusif dari sumber validasi.

* **Harga per panggilan:** \$0.20 USD.
* **Penagihan:** per kueri yang berhasil. Anda tidak dikenai biaya ketika registri tidak dapat dijangkau, ketika kolom wajib tidak ada, atau ketika permintaan ditolak sebelum mencapai sumber.
* **Latensi:** tipikal p95 \< 2 s.
* **Ketersediaan:** 99.9% per kuartal di sisi Didit; ketersediaan sumber hilir bervariasi menurut negara dan dataset.

## Lanjutkan membaca

* [Ikhtisar Global Database Validation](https://docs.didit.me/id/getting-started/database-validation-pricing.md)
* [Ikhtisar Database Validation](https://docs.didit.me/id/core-technology/database-validation/overview.md)
* [Kode hasil](https://docs.didit.me/id/core-technology/database-validation/database-validation-outcome-codes.md)


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