Skip to Content
API ReferenceVerify API

Verify API

Verify API, KYC doğrulamasını destekler. Organizasyonlar kaydolur, doğrulama oturumları oluşturur ve webhook’lar veya yoklama yoluyla sonuçları alır. Son kullanıcılar, barındırılan bir akış veya doğrudan API çağrıları aracılığıyla doğrulamayı tamamlar.

Temel URL: https://verify.solidus.network/v1


Kimlik Doğrulama

Kayıt

Yeni bir organizasyon hesabı oluşturun.

POST /auth/register

Kimlik doğrulama: Yok

// Request body { "email": "[email protected]", "password": "secureP@ssw0rd!", "name": "Acme Corp" }
// Response 201 { "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9...", "user": { "id": "usr_8Kj2mNpQxR", "email": "[email protected]", "name": "Acme Corp", "organizationId": "org_3Vn9wLkDfT", "createdAt": "2026-05-07T10:30:00Z" } }

Giriş

E-posta ve parola ile kimlik doğrulaması yapın. TOTP etkinse, bir totpCode gereklidir.

POST /auth/login

Kimlik doğrulama: Yok

// Request body { "email": "[email protected]", "password": "secureP@ssw0rd!" }
// Response 200 — success { "token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9...", "user": { "id": "usr_8Kj2mNpQxR", "email": "[email protected]", "name": "Acme Corp", "organizationId": "org_3Vn9wLkDfT" } }
// Response 200 — TOTP required { "totpRequired": true }

totpRequired, true olduğunda, giriş isteğini totpCode alanıyla yeniden gönderin.

// Request body with TOTP { "email": "[email protected]", "password": "secureP@ssw0rd!", "totpCode": "482901" }

Geçerli Kullanıcıyı Al

Kimlik doğrulaması yapılmış kullanıcı ve organizasyon ayrıntılarını alın.

GET /auth/me

Kimlik doğrulama: JWT Bearer

curl https://verify.solidus.network/v1/auth/me \ -H "Authorization: Bearer eyJhbGciOiJFZERTQSIs..."
// Response 200 { "organization": { "id": "org_3Vn9wLkDfT", "name": "Acme Corp", "email": "[email protected]", "plan": "starter", "totpEnabled": false, "createdAt": "2026-05-07T10:30:00Z" } }

TOTP Kurulumu

İki faktörlü kimlik doğrulama için bir TOTP sırrı ve QR kodu üretin.

POST /auth/totp/setup

Kimlik doğrulama: JWT Bearer

// Response 200 { "secret": "JBSWY3DPEHPK3PXP", "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." }

TOTP’yi Etkinleştir

Sırrı ve kimlik doğrulayıcı uygulamasından geçerli bir kodu sağlayarak TOTP kurulumunu onaylayın.

POST /auth/totp/enable

Kimlik doğrulama: JWT Bearer

// Request body { "secret": "JBSWY3DPEHPK3PXP", "totpCode": "482901" }
// Response 200 { "message": "TOTP enabled successfully" }

Parolamı Unuttum

Bir parola sıfırlama e-postası gönderin.

POST /auth/forgot-password

Kimlik doğrulama: Yok

// Request body { "email": "[email protected]" }
// Response 200 { "message": "If an account with that email exists, a reset link has been sent" }

Parolayı Sıfırla

Sıfırlama e-postasındaki token’ı kullanarak yeni bir parola belirleyin.

POST /auth/reset-password

Kimlik doğrulama: Yok

// Request body { "token": "rst_7Hk3mRtQZvXp2...", "password": "newSecureP@ssw0rd!" }
// Response 200 { "message": "Password reset successfully" }

OAuth ile Giriş

Kullanıcıyı OAuth kimlik doğrulaması için Google veya GitHub’a yönlendirin. Yetkilendirmeden sonra, kullanıcı bir JWT ile geri yönlendirilir.

GET /auth/google — Google OAuth’a yönlendirir

GET /auth/github — GitHub OAuth’a yönlendirir


Doğrulama Oturumları

Bir Oturum Oluşturun

Yeni bir doğrulama oturumu oluşturun. Yanıt, barındırılan doğrulama akışı için kullanıcıları yönlendirebileceğiniz bir sessionUrl içerir.

POST /verifications

Kimlik doğrulama: API Anahtarı (x-api-key)

// Request body { "level": 2, "sandbox": false, "redirectUrl": "https://acme.com/onboarding/complete", "subjectDid": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K", "metadata": { "userId": "usr_acme_12345", "plan": "premium" } }
FieldTypeRequiredDescription
level1 | 2 | 3EvetDoğrulama seviyesi. 1 = yalnızca belge, 2 = belge + canlılık, 3 = belge + canlılık + adres kanıtı
sandboxbooleanHayırtrue ise, gerçek doğrulama olmadan sandbox modunda çalışır
sandboxOutcomestringHayırBir sandbox sonucunu zorla: "pass", "fail", "timeout", "document_rejected"
subjectDidstringHayırOturumu belirli bir DID ile ilişkilendir
redirectUrlstringHayırTamamlandıktan sonra kullanıcının yönlendirileceği URL
metadataobjectHayırOturumla birlikte saklanan keyfi anahtar-değer çiftleri
// Response 201 { "session": { "id": "ver_9Xm4pLkWnR", "organizationId": "org_3Vn9wLkDfT", "status": "pending", "level": 2, "sandbox": false, "subjectDid": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K", "redirectUrl": "https://acme.com/onboarding/complete", "metadata": { "userId": "usr_acme_12345", "plan": "premium" }, "sessionToken": "sess_tok_7Hk3mRtQZv...", "createdAt": "2026-05-07T14:20:00Z", "expiresAt": "2026-05-07T15:20:00Z" }, "sessionUrl": "https://verify.solidus.network/v/s/sess_tok_7Hk3mRtQZv..." }

Oturumları Listele

Organizasyonunuz için tüm doğrulama oturumlarını alın.

GET /verifications

Kimlik doğrulama: API Anahtarı (x-api-key)

Query ParamTypeDescription
statusstringDuruma göre filtrele: pending, processing, completed, failed, expired
limitnumberSayfa başına sonuç (varsayılan: 20, maksimum: 100)
offsetnumberSayfalama için ofset
curl "https://verify.solidus.network/v1/verifications?status=approved&limit=10" \ -H "x-api-key: sk_live_abc123def456..."
// Response 200 { "sessions": [ { "id": "ver_9Xm4pLkWnR", "status": "completed", "level": 2, "subjectDid": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K", "credentialId": "vc_3Kn8rTpXm2", "createdAt": "2026-05-07T14:20:00Z", "completedAt": "2026-05-07T14:25:30Z" } ], "total": 1 }

Oturumu Al

Kimliğe göre tek bir doğrulama oturumunu alın.

GET /verifications/:id

Kimlik doğrulama: API Anahtarı (x-api-key)

curl https://verify.solidus.network/v1/verifications/ver_9Xm4pLkWnR \ -H "x-api-key: sk_live_abc123def456..."
// Response 200 { "session": { "id": "ver_9Xm4pLkWnR", "organizationId": "org_3Vn9wLkDfT", "status": "completed", "level": 2, "sandbox": false, "subjectDid": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K", "redirectUrl": "https://acme.com/onboarding/complete", "metadata": { "userId": "usr_acme_12345", "plan": "premium" }, "documents": [ { "type": "passport", "side": "front", "status": "verified", "extractedData": { "firstName": "John", "lastName": "Doe", "dateOfBirth": "1990-03-15", "documentNumber": "AB1234567", "expiryDate": "2030-06-20", "nationality": "US" } } ], "liveness": { "status": "passed", "score": 0.97, "completedAt": "2026-05-07T14:24:10Z" }, "credentialId": "vc_3Kn8rTpXm2", "createdAt": "2026-05-07T14:20:00Z", "completedAt": "2026-05-07T14:25:30Z" } }

Barındırılan Akış

Bu uç noktalar, barındırılan doğrulama arayüzü tarafından kullanılır. Bir API anahtarı yerine URL yoluna gömülü oturum token’ıyla kimlik doğrulaması yaparlar.

Token’a Göre Oturumu Al

Barındırılan akış için oturumu alın.

GET /verifications/s/:sessionToken

Kimlik doğrulama: Oturum token’ı (URL’de)

// Response 200 { "session": { "id": "ver_9Xm4pLkWnR", "status": "pending", "level": 2, "organizationName": "Acme Corp", "steps": ["document", "liveness"], "currentStep": "document", "expiresAt": "2026-05-07T15:20:00Z" } }

Belge Yükle (Barındırılan)

Geçerli oturum için bir kimlik belgesi yükleyin.

POST /verifications/s/:sessionToken/documents

Kimlik doğrulama: Oturum token’ı (URL’de)

İçerik Türü: multipart/form-data

FieldTypeRequiredDescription
fileFileEvetBelge görüntüsü (JPEG veya PNG, maksimum 10 MB)
sidestringEvetfront veya back
typestringEvetpassport, driving_license, national_id veya residence_permit
finalbooleanHayırtrue ise, belge adımını tamamlanmış olarak işaretler
curl -X POST "https://verify.solidus.network/v1/verifications/s/sess_tok_7Hk3mRtQZv.../documents" \ -F "file=@passport_front.jpg" \ -F "side=front" \ -F "type=passport" \ -F "final=true"
// Response 201 { "document": { "id": "doc_5Wn2kLpMxR", "type": "passport", "side": "front", "status": "uploaded", "createdAt": "2026-05-07T14:22:00Z" } }

Canlılık Meydan Okumasını Al (Barındırılan)

Oturum için bir canlılık meydan okuması isteyin.

GET /verifications/s/:sessionToken/liveness-challenge

Kimlik doğrulama: Oturum token’ı (URL’de)

// Response 200 { "challenge": { "id": "chl_8Rn3mKpWxT", "type": "head_turn", "instructions": "Please turn your head slowly to the left", "expiresAt": "2026-05-07T14:30:00Z" } }

Canlılığı Gönder (Barındırılan)

Meydan okuma için canlılık karelerini gönderin.

POST /verifications/s/:sessionToken/liveness

Kimlik doğrulama: Oturum token’ı (URL’de)

İçerik Türü: multipart/form-data

FieldTypeRequiredDescription
framesFile[]EvetCanlılık meydan okuması sırasında yakalanan video kareleri
// Response 200 { "liveness": { "status": "passed", "score": 0.97 } }

Belge Yükleme (API Anahtarı)

Barındırılan akış yerine API anahtarınızı kullanarak belge yükleyin ve canlılık kontrollerini tamamlayın.

Belge Yükle

POST /verifications/:id/documents

Kimlik doğrulama: API Anahtarı (x-api-key)

İçerik Türü: multipart/form-data

FieldTypeRequiredDescription
fileFileEvetBelge görüntüsü (JPEG veya PNG, maksimum 10 MB)
sidestringEvetfront veya back
typestringEvetpassport, driving_license, national_id veya residence_permit
finalbooleanHayırtrue ise, belge adımını tamamlanmış olarak işaretler ve işlemeyi tetikler
curl -X POST "https://verify.solidus.network/v1/verifications/ver_9Xm4pLkWnR/documents" \ -H "x-api-key: sk_live_abc123def456..." \ -F "file=@passport_front.jpg" \ -F "side=front" \ -F "type=passport" \ -F "final=true"
// Response 201 { "document": { "id": "doc_5Wn2kLpMxR", "type": "passport", "side": "front", "status": "uploaded", "createdAt": "2026-05-07T14:22:00Z" } }

Canlılık Meydan Okumasını Al

GET /verifications/:id/liveness-challenge

Kimlik doğrulama: API Anahtarı (x-api-key)

// Response 200 { "challenge": { "id": "chl_8Rn3mKpWxT", "type": "head_turn", "instructions": "Please turn your head slowly to the left", "expiresAt": "2026-05-07T14:30:00Z" } }

Canlılığı Gönder

POST /verifications/:id/liveness

Kimlik doğrulama: API Anahtarı (x-api-key)

İçerik Türü: multipart/form-data

FieldTypeRequiredDescription
framesFile[]EvetCanlılık meydan okuması sırasında yakalanan video kareleri
// Response 200 { "liveness": { "status": "passed", "score": 0.97 } }

API Anahtarları

Organizasyonunuz için API anahtarlarını yönetin. Her anahtar live veya sandbox moduna kapsamlanmıştır.

API Anahtarı Oluştur

POST /api-keys

Kimlik doğrulama: JWT Bearer

// Request body { "name": "Production Key", "mode": "live" }
// Response 201 { "key": "sk_live_abc123def456ghi789jkl012mno345pqr678", "id": "key_4Tn7mLkPxR" }

Tam anahtar yalnızca oluşturma sırasında bir kez döndürülür. Güvenli bir şekilde saklayın.

API Anahtarlarını Listele

GET /api-keys

Kimlik doğrulama: JWT Bearer

// Response 200 { "keys": [ { "id": "key_4Tn7mLkPxR", "name": "Production Key", "mode": "live", "prefix": "sk_live_abc123...", "lastUsedAt": "2026-05-07T14:00:00Z", "createdAt": "2026-05-01T09:00:00Z" }, { "id": "key_6Wn9pMkRxT", "name": "Test Key", "mode": "sandbox", "prefix": "sk_sandbox_xyz789...", "lastUsedAt": null, "createdAt": "2026-05-03T11:00:00Z" } ] }

API Anahtarını Sil

DELETE /api-keys/:keyId

Kimlik doğrulama: JWT Bearer

curl -X DELETE https://verify.solidus.network/v1/api-keys/key_4Tn7mLkPxR \ -H "Authorization: Bearer eyJhbGciOiJFZERTQSIs..."
// Response 200 { "message": "API key deleted" }

Webhook’lar

Doğrulama olayları meydana geldiğinde gerçek zamanlı bildirimler alın. Webhook yükleri, doğrulama için HMAC-SHA256 ile imzalanır.

Webhook Uç Noktası Oluştur

POST /webhooks

Kimlik doğrulama: JWT Bearer

// Request body { "url": "https://acme.com/webhooks/solidus", "events": [ "verification.completed", "verification.failed", "verification.expired" ], "description": "Production webhook for verification results" }

Mevcut olaylar: verification.completed, verification.failed, verification.expired, credential.issued, credential.revoked. Varsayılan (events atlanırsa): verification.completed, credential.issued.

// Response 201 { "endpoint": { "id": "wh_2Kn5mTpLxR", "url": "https://acme.com/webhooks/solidus", "events": [ "verification.completed", "verification.failed", "verification.expired" ], "description": "Production webhook for verification results", "secret": "whsec_7Hk3mRtQZvXp2nBw9Lj4K...", "enabled": true, "createdAt": "2026-05-07T10:00:00Z" } }

Sır (secret) yalnızca bir kez döndürülür. Webhook imzalarını doğrulamak için onu kullanın.

Webhook Uç Noktalarını Listele

GET /webhooks

Kimlik doğrulama: JWT Bearer

// Response 200 { "endpoints": [ { "id": "wh_2Kn5mTpLxR", "url": "https://acme.com/webhooks/solidus", "events": ["verification.completed", "verification.failed", "verification.expired"], "description": "Production webhook for verification results", "enabled": true, "createdAt": "2026-05-07T10:00:00Z" } ] }

Webhook Uç Noktasını Güncelle

PATCH /webhooks/:endpointId

Kimlik doğrulama: JWT Bearer

// Request body { "url": "https://acme.com/webhooks/solidus-v2", "events": ["verification.completed", "verification.failed"], "enabled": true }

Tüm alanlar isteğe bağlıdır. Yalnızca sağlanan alanlar güncellenir.

// Response 200 { "endpoint": { "id": "wh_2Kn5mTpLxR", "url": "https://acme.com/webhooks/solidus-v2", "events": ["verification.completed", "verification.failed"], "description": "Production webhook for verification results", "enabled": true, "createdAt": "2026-05-07T10:00:00Z" } }

Webhook Uç Noktasını Sil

DELETE /webhooks/:endpointId

Kimlik doğrulama: JWT Bearer

curl -X DELETE https://verify.solidus.network/v1/webhooks/wh_2Kn5mTpLxR \ -H "Authorization: Bearer eyJhbGciOiJFZERTQSIs..."
// Response 200 { "message": "Webhook endpoint deleted" }

Webhook Teslimatlarını Listele

Belirli bir uç nokta için teslimat geçmişini görüntüleyin.

GET /webhooks/:endpointId/deliveries

Kimlik doğrulama: JWT Bearer

Query ParamTypeDescription
statusstringDuruma göre filtrele: success, failed, pending
limitnumberSayfa başına sonuç (varsayılan: 20, maksimum: 100)
offsetnumberSayfalama için ofset
// Response 200 { "deliveries": [ { "id": "dlv_9Xm4pLkWnR", "event": "verification.completed", "status": "success", "statusCode": 200, "payload": { "event": "verification.completed", "data": { "sessionId": "ver_9Xm4pLkWnR", "status": "completed", "credentialId": "vc_3Kn8rTpXm2" }, "timestamp": "2026-05-07T14:25:30Z" }, "attemptCount": 1, "deliveredAt": "2026-05-07T14:25:31Z" } ], "total": 1 }
Last updated on