curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=SGP" \
-F "services=sgp_utility" \
-F "vendor_data=user-1234" \
-F "first_name=John" \
-F "last_name=Doe" \
-F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="SGP",
services=["sgp_utility"],
first_name="John",
last_name="Doe",
address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "SGP",
Services: didit.Some([]string{"sgp_utility"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
Address: didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("SGP")
.services(List.of("sgp_utility"))
.firstName("John")
.lastName("Doe")
.address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
.street1("123 Sample Street")
.street2("Unit 4")
.city("Sample City")
.region("Sample State")
.postalCode("10001")
.country("US")
.build()))
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'SGP',
'services' => ['sgp_utility'],
'first_name' => 'John',
'last_name' => 'Doe',
'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "SGP",
Services = new string[] { "sgp_utility" },
FirstName = "John",
LastName = "Doe",
Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "SGP",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": true
}
},
"validation": {
"address": "full_match",
"full_name": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "SGP",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": false
}
},
"validation": {
"address": "full_match",
"full_name": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "SGP",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "NO_MATCH",
"full_name": "NO_MATCH"
},
"validation": {
"address": "no_match",
"full_name": "no_match"
}
}
]
}
🇸🇬 Singapur
Utility-Verifizierung Singapur: API für Identitätsabfrage
Datenbankvalidierung für Singapur per Didit: maßgebliche Quellen, ab $2.82 pro Aufruf, ohne Verträge oder Mindestabnahme.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=SGP" \
-F "services=sgp_utility" \
-F "vendor_data=user-1234" \
-F "first_name=John" \
-F "last_name=Doe" \
-F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="SGP",
services=["sgp_utility"],
first_name="John",
last_name="Doe",
address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "SGP",
Services: didit.Some([]string{"sgp_utility"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
Address: didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("SGP")
.services(List.of("sgp_utility"))
.firstName("John")
.lastName("Doe")
.address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
.street1("123 Sample Street")
.street2("Unit 4")
.city("Sample City")
.region("Sample State")
.postalCode("10001")
.country("US")
.build()))
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'SGP',
'services' => ['sgp_utility'],
'first_name' => 'John',
'last_name' => 'Doe',
'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "SGP",
Services = new string[] { "sgp_utility" },
FirstName = "John",
LastName = "Doe",
Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "SGP",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": true
}
},
"validation": {
"address": "full_match",
"full_name": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "SGP",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": false
}
},
"validation": {
"address": "full_match",
"full_name": "no_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "SGP",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "NO_MATCH",
"full_name": "NO_MATCH"
},
"validation": {
"address": "no_match",
"full_name": "no_match"
}
}
]
}
Prüft Eingabedaten gegen Telekom-Abrechnungsdaten und Telefondaten. Didit stellt diesen Dienst über
POST /v3/database-validation/ bereit, damit Sie die übermittelten Daten mit der maßgeblichen Quelle abgleichen und normalisierte Übereinstimmungsergebnisse erhalten.
Abdeckung
- Abdeckung: > 80%
- Land: Singapur
- Dienst-ID:
sgp_utility - Datenbereich: Adresse
- Kategorie: Versorgung
Eingaben
| Feld | Pflicht | Beispiel |
|---|---|---|
first_name | Ja | John |
last_name | Ja | Doe |
address.street_1 | Ja | 123 Sample Street |
address.postal_code | Ja | 10001 |
date_of_birth | Nein | 1990-01-01 |
phone | Nein | +15550101000 |
address.street_2 | Nein | Unit 4 |
address.city | Nein | Sample City |
address.region | Nein | Sample State |
vendor_data | Nein | user-1234 |
- Pflichteingaben:
first_name,last_name,address.street_1,address.postal_code - Optionale Eingaben:
date_of_birth,phone,address.street_2,address.city,address.region,vendor_data - Einwilligung: Nicht erforderlich
- Verfügbarkeit im Workflow: Im Workflow verfügbar
- Abdeckung: > 80%
- Preis: $2.82 pro erfolgreiche Abfrage
Body-Parameter
string
Standard:"SGP"
erforderlich
ISO-3166-1-Alpha-3-Ländercode für diesen Datenbankdienst.Beispiel:
SGPstring
Standard:"sgp_utility"
erforderlich
Array mit dieser Dienst-ID. Durch das Festlegen des Dienstes bleibt die Anfrage auf genau diese Datenbank beschränkt.Beispiel:
sgp_utilitystring
Standard:"John"
erforderlich
Vorname, der validiert werden soll.Beispiel:
Johnstring
Standard:"Doe"
erforderlich
Nachname, der validiert werden soll.Beispiel:
Doeobject
erforderlich
Strukturiertes Objekt für die Wohnadresse. Verwenden Sie
street_1, street_2, city, region, postal_code und country. Eine vollständige Adresse als Legacy-Zeichenkette wird weiterhin akzeptiert, aber nicht empfohlen.Beispiel: {"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}string
Geburtsdatum im Format
YYYY-MM-DD.Beispiel: 1990-01-01string
Telefonnummer im internationalen Format.Beispiel:
+15550101000string
Standard:"user-1234"
Ihre dauerhafte Benutzerreferenz für diese Person, z. B. Ihre interne Benutzer-ID. Didit verwendet sie, um eigenständige Prüfungen mit demselben Endbenutzer zu verknüpfen und Rauschen bei der Duplikaterkennung zu verringern.Beispiel:
user-1234Regeln für Eingaben und Validierungshinweise
- Bei Adressdiensten senden Sie nach Möglichkeit strukturierte Adressfelder statt einer einzelnen
address-Zeichenkette. address.street_1ist die Straßenadresse einschließlich Hausnummer und Straßentyp.address.street_2bezeichnet eine Wohnung, Einheit, ein Gebäude, eine Etage oder eine zusätzliche Adresszeile. Senden Sie dieses Feld nur, wenn Sie die Angabe haben.address.citybezeichnet eine Stadt, einen Vorort, einen Bezirk, eine Ortschaft oder einen Stadtteil.address.regionbezeichnet einen Bundesstaat, eine Provinz, eine Region oder eine Stadt.address.postal_codeist die Postleitzahl.- Adressbasierte Datenbankdienste erfordern mindestens Straßenadresse und Postleitzahl. Anfragen, die vor der Quellenabfrage abgelehnt werden, werden nicht berechnet.
So rufen Sie es auf
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=SGP" \
-F "services=sgp_utility" \
-F "vendor_data=user-1234" \
-F "first_name=John" \
-F "last_name=Doe" \
-F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="SGP",
services=["sgp_utility"],
first_name="John",
last_name="Doe",
address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "SGP",
Services: didit.Some([]string{"sgp_utility"}),
FirstName: didit.String("John"),
LastName: didit.String("Doe"),
Address: didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
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("SGP")
.services(List.of("sgp_utility"))
.firstName("John")
.lastName("Doe")
.address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
.street1("123 Sample Street")
.street2("Unit 4")
.city("Sample City")
.region("Sample State")
.postalCode("10001")
.country("US")
.build()))
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'SGP',
'services' => ['sgp_utility'],
'first_name' => 'John',
'last_name' => 'Doe',
'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "SGP",
services: ["sgp_utility"],
first_name: "John",
last_name: "Doe",
address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Collections.Generic;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "SGP",
Services = new string[] { "sgp_utility" },
FirstName = "John",
LastName = "Doe",
Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
Jeder erfolgreiche Aufruf liefert HTTP 200. Das Feld outcome_code zeigt, was tatsächlich geschehen ist, und unterscheidet zum Beispiel eine echte biometrische Nichtübereinstimmung (BIOMETRIC_NO_MATCH) von einem Selfie, das nicht gelesen werden konnte (BIOMETRIC_IMAGE_UNUSABLE). Der angezeigte status ist der Standardstatus der Funktion. Ihre konfigurierten Aktionen für Teilübereinstimmung / Keine Übereinstimmung können ihn überschreiben.MATCH: Das Register hat die Identität bestätigt, und jedes geprüfte Feld stimmte überein.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "SGP",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": true
}
},
"validation": {
"address": "full_match",
"full_name": "full_match"
}
}
]
}
PARTIAL_MATCH: Ein oder mehrere Felder, die dieser Dienst vergleicht, stimmten nicht vollständig überein. In diesem Beispiel stimmte full_name nicht überein, address dagegen schon.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "SGP",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "123 Sample Street",
"address_match_score": "1.000",
"city": "Sample City",
"date_of_birth": "1990-01-01",
"first_name": "John",
"full_name": "John Doe",
"last_name": "Doe",
"name_match_score": "1.000",
"postal_code": "10001",
"street": "sample_value",
"verifications": {
"address": true,
"full_name": false
}
},
"validation": {
"address": "full_match",
"full_name": "no_match"
}
}
]
}
NO_MATCH: Das Register hat für die übermittelten Daten keine Übereinstimmung zurückgegeben.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "SGP",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "sgp_utility",
"service_name": "Singapore Utility",
"source_data": {
"address": "NO_MATCH",
"full_name": "NO_MATCH"
},
"validation": {
"address": "no_match",
"full_name": "no_match"
}
}
]
}
Zurückgegebene Daten
Welche Felder insource_data angezeigt werden, hängt davon ab, was das Register zurückgibt. Das generierte Beispiel für sgp_utility dokumentiert derzeit diese normalisierte Struktur:
addressaddress_match_scorecitydate_of_birthfirst_namefull_namelast_namename_match_scorepostal_codestreet
Preise und SLAs
Abfragen bei Singapore Utility werden nur abgerechnet, wenn Didit von der Validierungsquelle ein eindeutiges Ergebnis erhält.- Preis pro Aufruf: $2.82 USD.
- Abrechnung: pro erfolgreicher Abfrage. Ihnen wird nichts berechnet, wenn das Register nicht erreichbar ist, wenn Pflichtfelder fehlen oder wenn die Anfrage abgelehnt wird, bevor sie die Quelle erreicht.
- Latenz: typischer p95-Wert < 2 s.
- Verfügbarkeit: 99.9% pro Quartal auf Seiten von Didit. Die Verfügbarkeit der nachgelagerten Quelle variiert je nach Land und Datensatz.
Weiterlesen
Zuletzt geändert am 7. November 2026