curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/vendor-users/by-id/f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418/faces/upload/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"image": "/9j/4AAQSkZJRgABAQEA...", "comment": "Imported from previous KYC provider"}'from didit import Didit
# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
# and DIDIT_APPLICATION_ID.
client = Didit()
result = client.users.upload_face(
"11111111-2222-3333-4444-555555555555",
image="/9j/4AAQSkZJRgABAQEA...",
comment="Imported from previous KYC provider",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
const didit = new Didit();
const result = await didit.users.uploadFace("11111111-2222-3333-4444-555555555555", {
image: "/9j/4AAQSkZJRgABAQEA...",
comment: "Imported from previous KYC provider",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
client := didit.NewClient()
result, err := client.Users.UploadFace(ctx, "11111111-2222-3333-4444-555555555555", didit.UsersUploadFaceParams{
Image: "/9j/4AAQSkZJRgABAQEA...",
Comment: didit.String("Imported from previous KYC provider"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.UsersUploadFaceParams;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
Didit client = new Didit();
var result = client.users().uploadFace("11111111-2222-3333-4444-555555555555", UsersUploadFaceParams.builder()
.image("/9j/4AAQSkZJRgABAQEA...")
.comment("Imported from previous KYC provider")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
$didit = new DiditClient();
$result = $didit->users->uploadFace('11111111-2222-3333-4444-555555555555', [
'image' => '/9j/4AAQSkZJRgABAQEA...',
'comment' => 'Imported from previous KYC provider',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
# and DIDIT_APPLICATION_ID.
didit = Didit::Client.new
result = didit.users.upload_face(
"11111111-2222-3333-4444-555555555555",
image: "/9j/4AAQSkZJRgABAQEA...",
comment: "Imported from previous KYC provider"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
using var client = new DiditClient();
var result = await client.Users.UploadFaceAsync("11111111-2222-3333-4444-555555555555", new UsersUploadFaceParams
{
Image = "/9j/4AAQSkZJRgABAQEA...",
Comment = "Imported from previous KYC provider",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"image_url": "https://signed-url.example/face.jpg",
"comment": "Imported from previous KYC provider",
"uploaded_by": "api",
"created_at": "2026-05-18T12:00:00Z"
}API Unggah Wajah Pengguna: Profil Pengguna Vendor
Unggah gambar wajah base64 ke profil pengguna Didit yang sudah ada setelah membuat atau mengimpor pengguna dengan vendor_data.
curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/vendor-users/by-id/f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418/faces/upload/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"image": "/9j/4AAQSkZJRgABAQEA...", "comment": "Imported from previous KYC provider"}'from didit import Didit
# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
# and DIDIT_APPLICATION_ID.
client = Didit()
result = client.users.upload_face(
"11111111-2222-3333-4444-555555555555",
image="/9j/4AAQSkZJRgABAQEA...",
comment="Imported from previous KYC provider",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
const didit = new Didit();
const result = await didit.users.uploadFace("11111111-2222-3333-4444-555555555555", {
image: "/9j/4AAQSkZJRgABAQEA...",
comment: "Imported from previous KYC provider",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
client := didit.NewClient()
result, err := client.Users.UploadFace(ctx, "11111111-2222-3333-4444-555555555555", didit.UsersUploadFaceParams{
Image: "/9j/4AAQSkZJRgABAQEA...",
Comment: didit.String("Imported from previous KYC provider"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.UsersUploadFaceParams;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
Didit client = new Didit();
var result = client.users().uploadFace("11111111-2222-3333-4444-555555555555", UsersUploadFaceParams.builder()
.image("/9j/4AAQSkZJRgABAQEA...")
.comment("Imported from previous KYC provider")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
$didit = new DiditClient();
$result = $didit->users->uploadFace('11111111-2222-3333-4444-555555555555', [
'image' => '/9j/4AAQSkZJRgABAQEA...',
'comment' => 'Imported from previous KYC provider',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
# and DIDIT_APPLICATION_ID.
didit = Didit::Client.new
result = didit.users.upload_face(
"11111111-2222-3333-4444-555555555555",
image: "/9j/4AAQSkZJRgABAQEA...",
comment: "Imported from previous KYC provider"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
// and DIDIT_APPLICATION_ID.
using var client = new DiditClient();
var result = await client.Users.UploadFaceAsync("11111111-2222-3333-4444-555555555555", new UsersUploadFaceParams
{
Image = "/9j/4AAQSkZJRgABAQEA...",
Comment = "Imported from previous KYC provider",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"image_url": "https://signed-url.example/face.jpg",
"comment": "Imported from previous KYC provider",
"uploaded_by": "api",
"created_at": "2026-05-18T12:00:00Z"
}Ikhtisar
Gunakan endpoint ini saat Anda mengimpor Pengguna dari penyedia lain dan sudah memiliki gambar wajah tepercaya untuk setiap orang. Pengguna tetap diidentifikasi denganvendor_data Anda, tetapi endpoint lampiran profil ini menggunakan didit_internal_id agar Pengguna sasaran tidak ambigu.
Endpoint
POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/
Alur migrasi
Buat atau temukan Pengguna
POST /v3/users/create/ untuk profil baru, atau GET /v3/users/{vendor_data}/ untuk profil yang sudah ada.Simpan didit_internal_id
didit_internal_id. Tetap gunakan vendor_data di database Anda; gunakan didit_internal_id hanya untuk endpoint lampiran profil.Unggah wajah
image. Backend memvalidasi dekode gambar, ukuran gambar, dan deteksi wajah sebelum menyimpannya.Contoh
# 1. Create the User keyed by your external id
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vendor_data": "user-42",
"display_name": "Jane Doe",
"metadata": { "previous_provider": "legacy-kyc-vendor" }
}'
# 2. Upload an imported face to the returned didit_internal_id
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"image": "<base64-encoded-jpg-or-png>",
"comment": "Imported from previous KYC provider"
}'
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
image | string | Ya | JPG atau PNG yang dikodekan base64 secara mentah. Jangan sertakan data:image/...;base64,. Ukuran maksimum setelah didekode: 2 MB. |
comment | string | Tidak | Catatan yang terlihat oleh operator dan ditampilkan pada profil Pengguna. |
Respons
{
"uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"image_url": "https://signed-url.example/face.jpg",
"comment": "Imported from previous KYC provider",
"uploaded_by": "api",
"created_at": "2026-05-18T12:00:00Z"
}
Validasi dan batasan
- Maksimum 5 wajah yang diunggah secara manual per Pengguna.
- Ukuran gambar maksimum setelah didekode adalah 2 MB.
- Gambar harus berupa base64 yang valid dan dapat didekode sebagai gambar.
- Gambar harus berisi wajah yang dapat dideteksi. Gunakan potongan wajah dari depan dengan pencahayaan yang baik jika memungkinkan.
- Wajah yang diunggah diindeks untuk deteksi duplikat dan pencarian wajah di masa mendatang.
- Wajah yang diunggah tidak otomatis masuk ke daftar blokir.
Menampilkan atau menghapus wajah yang diunggah
Menampilkan daftar wajah profil:curl https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/ \
-H "x-api-key: YOUR_API_KEY"
curl -X DELETE https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/$FACE_UUID/ \
-H "x-api-key: YOUR_API_KEY"
Izin
Gunakan kunci API untuk aplikasi yang sama. Kunci harus milik aplikasi yang diizinkan untuk mengelola profil Pengguna sasaran.Mode kegagalan
400: base64 tidak valid, gambar tidak valid, tidak ada wajah yang dapat dideteksi, gambar melebihi 2 MB, atau Pengguna sudah memiliki 5 wajah yang diunggah.401: kredensial tidak ada atau tidak valid.403: kunci API valid tetapi tidak diizinkan untuk mengelola profil Pengguna ini.404: tidak ada Pengguna dengandidit_internal_idtersebut dalam aplikasi.429: terkena batas laju; lakukan jeda berdasarkanRetry-After.
Terkait
- Buat Pengguna
- Ambil Pengguna
- Impor dan Ekspor Pengguna
- Wajah dan Biometrik
- Unggah wajah ke daftar blokir
Otorisasi
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.
Parameter Path
UUID organisasi yang memiliki aplikasi.
UUID aplikasi yang memiliki profil Pengguna.
UUID Pengguna internal Didit, dikembalikan sebagai didit_internal_id oleh GET /v3/users/{vendor_data}/ dan POST /v3/users/create/.
Body
Respons
Wajah diunggah dan dilampirkan ke profil Pengguna.
UUID rekaman wajah Pengguna yang diunggah.
URL bertanda tangan untuk gambar wajah yang diunggah.
Komentar yang diberikan saat wajah diunggah.
Email atau pengidentifikasi aktor pengunggah jika tersedia.
Stempel waktu unggahan.