واجهة CertRent المفتوحة (Open API)
مستأجرون موثّقون، عند الطلب.
سجّل مستأجرًا، واطلب موافقته، واقرأ الدخل الموثّق بنكيًا، وتاريخ الإيجار، والهوية، ومراجع الملاك التي تم التحقق من ملكيتها — عبر واجهة REST API واحدة. تأتي إيصالات الموافقة وقواعد الفحص الخاصة بكل سوق مع كل استجابة.
تصدر مفاتيح التجربة فورًا وهي مجانية للأبد. المفاتيح الفعلية تحتاج إلى مراجعة قصيرة.
تحقق مرة واحدة، وتقدّم في أي مكان
المستأجرون الذين تسجّلهم يبنون ملفًا تعريفيًا واحدًا يحتفظون به. إذا كانوا موثّقين بالفعل لعقار آخر، يمكن الموافقة على طلبك خلال ثوانٍ — دون إعادة فحص أو إعادة دفع.
بتصريح المستأجر بالتصميم
لا يمكن قراءة أي بيانات موثّقة دون موافقة محددة النطاق والمدة من المستأجر. كل موافقة تُنشئ إيصال موافقة يمكن للطرفين مراجعته.
الامتثال مدمج في الاستجابة
اسأل أي نقطة نهاية عن القواعد السارية في نيويورك أو لوس أنجلوس — سقوف الرسوم، وحماية مصدر الدخل، وتوقيت الفرصة العادلة، وواجبات الإجراء السلبي — وسجّل إجراءاتك السلبية عبر واجهة API.
البدء السريع
من الصفر إلى قرار الفحص
في بيئة التجربة، يؤدي تسجيل مستأجر إلى إنشاء مستأجر اصطناعي موثّق بالكامل فورًا — حتى تتمكن من بناء التكامل بأكمله قبل أن يلمسه أي متقدم حقيقي.
1. سجّل مستأجرًا (مجانًا)
POST /renters
curl -X POST https://certrent.com/api/v1/renters \
-H "Authorization: Bearer ck_test_…" \
-H "Content-Type: application/json" \
-d '{
"email": "applicant@example.com",
"name": "Dana Ruiz",
"property": "120 W 45th St",
"unit": "7B",
"market": "nyc",
"external_id": "your-crm-id-4471"
}'
$res = Http::withToken('ck_test_…')
->post('https://certrent.com/api/v1/renters', [
'email' => 'applicant@example.com',
'name' => 'Dana Ruiz',
'property' => '120 W 45th St',
'unit' => '7B',
'market' => 'nyc',
'external_id' => 'your-crm-id-4471',
])->json();
$renterId = $res['id'];
const res = await fetch('https://certrent.com/api/v1/renters', {
method: 'POST',
headers: {
Authorization: 'Bearer ck_test_…',
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: 'applicant@example.com',
name: 'Dana Ruiz',
property: '120 W 45th St',
unit: '7B',
market: 'nyc',
external_id: 'your-crm-id-4471',
}),
});
const renter = await res.json();
import requests
renter = requests.post(
'https://certrent.com/api/v1/renters',
headers={'Authorization': 'Bearer ck_test_…'},
json={
'email': 'applicant@example.com',
'name': 'Dana Ruiz',
'property': '120 W 45th St',
'unit': '7B',
'market': 'nyc',
'external_id': 'your-crm-id-4471',
},
).json()
2. اطلب موافقة المستأجر
POST /renters/{id}/access-requests
curl -X POST https://certrent.com/api/v1/renters/42/access-requests \
-H "Authorization: Bearer ck_test_…" \
-H "Content-Type: application/json" \
-d '{
"scopes": ["read:identity","read:income","read:rent_history","read:decision"],
"purpose": "Tenant screening for 120 W 45th St, Unit 7B",
"expires_in_days": 30
}'
Http::withToken('ck_test_…')->post("https://certrent.com/api/v1/renters/{$renterId}/access-requests", [
'scopes' => ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
'purpose' => 'Tenant screening for 120 W 45th St, Unit 7B',
'expires_in_days' => 30,
]);
await fetch(`https://certrent.com/api/v1/renters/${renter.id}/access-requests`, {
method: 'POST',
headers: { Authorization: 'Bearer ck_test_…', 'Content-Type': 'application/json' },
body: JSON.stringify({
scopes: ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
purpose: 'Tenant screening for 120 W 45th St, Unit 7B',
expires_in_days: 30,
}),
});
requests.post(
f"https://certrent.com/api/v1/renters/{renter['id']}/access-requests",
headers={'Authorization': 'Bearer ck_test_…'},
json={
'scopes': ['read:identity', 'read:income', 'read:rent_history', 'read:decision'],
'purpose': 'Tenant screening for 120 W 45th St, Unit 7B',
'expires_in_days': 30,
},
)
3. اطّلع على القرار
GET /renters/{id}/decision?rent=3200
curl "https://certrent.com/api/v1/renters/42/decision?rent=3200" \
-H "Authorization: Bearer ck_test_…"
$decision = Http::withToken('ck_test_…')
->get("https://certrent.com/api/v1/renters/{$renterId}/decision", ['rent' => 3200])
->json();
const decision = await (await fetch(
`https://certrent.com/api/v1/renters/${renter.id}/decision?rent=3200`,
{ headers: { Authorization: 'Bearer ck_test_…' } },
)).json();
decision = requests.get(
f"https://certrent.com/api/v1/renters/{renter['id']}/decision",
headers={'Authorization': 'Bearer ck_test_…'},
params={'rent': 3200},
).json()
كائن القرار
حقائق موثّقة ونسبة قدرة على تحمل التكلفة — أبدًا درجة، وأبدًا موافقة/رفض. القرار يبقى لك.
{
"profile_id": 318,
"completeness": 100,
"rentready": true,
"verified": { "identity": true, "income": true, "rent_history": true, "references": true },
"income": { "monthly_income_verified": 9400.0, "method": "bank_connected" },
"affordability": {
"status": "meets_standard",
"rent": 3200.0,
"income_to_rent_ratio": 2.94,
"rent_to_income_percent": 34.0,
"max_affordable_rent": 3133.33
},
"rent_history": { "months_observed": 12, "on_time_payments": 12, "observed_rent": 2820.0 },
"references": { "total": 2, "ownership_verified": 2 },
"confidence": { "level": "high", "income_method": "bank_connected" },
"signals": [
{ "code": "income_bank_connected", "severity": "info",
"message": "Income was read directly from the renter's bank …" }
],
"consent": { "grant_id": 77, "expires_at": "2026-08-25T14:02:11+00:00" }
}
المرجع
نقاط النهاية
عنوان URL الأساسي https://certrent.com/api/v1 · مصادقة Bearer
| الطريقة | المسار | نطاق المفتاح | ما الذي تفعله |
|---|---|---|---|
| GET | /me | — | عميلك، ونطاقات المفاتيح، والتسعير، والاستخدام الحالي. |
| GET | /usage?period=YYYY-MM | — | الاستخدام المقاس لفترة فوترة. |
| GET | /compliance?market=nyc|la | — | قواعد والتزامات الفحص السارية في ذلك السوق. |
| POST | /renters | renters:write | سجّل مستأجرًا وادعُه. مجانًا. |
| GET | /renters | renters:read | عرض المستأجرين الذين سجّلتهم. صفِّ حسب الحالة أو البريد الإلكتروني أو external_id. |
| GET | /renters/{id} | renters:read | رابط مستأجر واحد وحالته. |
| POST | /renters/{id}/reinvite | renters:write | أعد إرسال بريد الدعوة. |
| DELETE | /renters/{id} | renters:write | أزل رابطك. لا يحذف حساب المستأجر أبدًا. |
| POST | /renters/{id}/access-requests | renters:write | اطلب من المستأجر الموافقة على نطاقات محددة. |
| GET | /access-grants/{id} | renters:read | حالة الموافقة، والنطاقات، وتاريخ الانتهاء. |
| GET | /access-grants/{id}/receipt | renters:read | إيصال الموافقة القابل للقراءة الآلية. |
| DELETE | /access-grants/{id} | renters:write | أطلق الوصول الذي لم تعد بحاجة إليه. |
| GET | /renters/{id}/decision | renters:read | كائن قرار الفحص. يُقاس في البيئة الفعلية. |
| GET | /renters/{id}/profile | renters:read | الملف التعريفي الكامل الذي تمت الموافقة عليه. يُقاس في البيئة الفعلية. |
| GET/POST | /webhooks | renters:read / webhooks:write | عرض أو إنشاء نقطة نهاية. |
| PATCH/DELETE | /webhooks/{id} | webhooks:write | تحديث أو إزالة نقطة نهاية. |
| POST | /webhooks/{id}/test | webhooks:write | أرسل حدث اختبار موقّعًا. |
| GET | /webhooks/{id}/deliveries | renters:read | افحص ما أرسلناه وكيف سار الأمر. |
| POST | /adverse-actions | renters:write | سجّل قرار الرفض أو العرض المشروط. |
| GET | /adverse-actions | renters:read | سجل إجراءاتك السلبية. |
تتم الموافقة على صلاحيتي القراءة والكتابة بشكل منفصل. المفتاح الذي يملك renters:read فقط يمكنه الفحص لكن لا يمكنه التسجيل أبدًا.
نطاقات الموافقة
المستأجر هو من يمنح هذه الصلاحيات — وليس نحن. أي شيء خارج نطاق المنح يكون ببساطة غائبًا عن الاستجابة.
- read:identity
- هوية موثّقة (الاسم، وحالة التحقق — أبدًا وثيقة هويتك)
- read:income
- الدخل الموثّق بنكيًا والقدرة على تحمل التكلفة
- read:rent_history
- سجل دفعات الإيجار
- read:references
- مراجع ملاك تم التحقق من ملكيتها
- read:decision
- ملخص قرار RentReady الإجمالي
Webhooks
كل عملية تسليم تحمل رأس CertRent-Signature: t={timestamp},v1={HMAC-SHA256 لـ "{timestamp}.{raw body}" باستخدام سرّ نقطة النهاية الخاصة بك}. تحقق منه قبل الوثوق بأي حمولة. تُعاد محاولة الإخفاقات مع تأخير تصاعدي حتى ست محاولات.
- renter.invited
- تم تسجيل مستأجر ودعوته للتحقق.
- renter.registered
- أنشأ مستأجر مدعو حسابه في CertRent.
- renter.verified
- أكمل مستأجر مسار تحقق (أو جميع المسارات).
- renter.income_updated
- تغيّر الدخل المرتبط بالبنك لمستأجر.
- grant.created
- وافق مستأجر على مشاركة ملفه التعريفي معك.
- grant.revoked
- ألغى مستأجر موافقة سبق منحها.
- rent_report.updated
- تغيّرت حالة الإبلاغ عن إيجار مستأجر.
What data is actually in here
An honest answer, not a sales pitch: this is renter-consented, source-verified data — not a credit report, and not assembled from third-party bureau files.
Live today
- Identity verification result (government ID, via Didit)
- Bank-verified monthly income, employer, income method
- Verified rent-payment history (months observed, on-time rate)
- Whether this renter is currently reporting rent to the credit bureaus
- مراجع ملاك تم التحقق من ملكيتها
- Affordability ratio (rent-to-income), confidence level, fraud/authenticity signals
Not in the API (and why)
- Credit-bureau data — score, tradelines, delinquencies, collections, inquiries. We don't assemble or resell bureau data today.
- Raw bank transaction/balance detail — only the verified income figure derived from it.
- Eviction records or landlord-tenant court history.
- SSN, date of birth, or the ID document itself — only the fact of verification.
Why: CertRent is not a Consumer Reporting Agency. What you read here is data the renter verified about themselves and consented to share with you — not a report assembled from third-party files. If you combine it with an actual consumer report from elsewhere, your own FCRA obligations for that report still apply — see GET /compliance below.
بيئتان
ck_test_…— بيئة التجربة. تصدر فورًا، ومجانية للأبد. التسجيل ينشئ مستأجرًا اصطناعيًا موثّقًا وتُمنح الموافقة تلقائيًا، حتى تتمكن من بناء سير العمل بأكمله من البداية للنهاية. ليس شخصًا حقيقيًا أبدًا.ck_live_…— فعلي. يصدر بعد مراجعة قصيرة لشركتك وحالة استخدامك. مستأجرون حقيقيون، وموافقة حقيقية، وقياس استهلاك.
لا تختلط بيانات التجربة والبيانات الفعلية أبدًا: يرى كل مفتاح بيئته الخاصة فقط.
التسعير
تدفع مقابل شيء واحد: قراءة ملف تعريفي موثّق.
تحدث معنا
- ✓ تسجيل ودعوة المستأجرين — مجانًا.
- ✓ طلبات الموافقة، وWebhooks، واستعلامات الامتثال — مجانًا.
- ✓ تُحصَّل مرة واحدة لكل مستأجر في كل شهر ميلادي، بغض النظر عن عدد مرات قراءتك لملفه.
- ✓ بيئة التجربة — مجانية للأبد.
الأسئلة الشائعة
هل توجد واجهة API لفحص المستأجرين؟
نعم. تتيح واجهة CertRent المفتوحة (Open API) لشركة إدارة عقارات فحص المتقدمين من داخل برنامج التأجير الخاص بها، عبر واجهة REST قياسية بمفتاح سري. تصدر مفاتيح التجربة فورًا وهي مجانية؛ ويُمنح الوصول الفعلي بعد مراجعة قصيرة.
كيف أتحقق من دخل متقدم عبر واجهة API؟
تقرأ CertRent الدخل من اتصال المستأجر البنكي الخاص به بدلًا من المستندات المرفوعة، لذا لا توجد قسيمة راتب يمكن تزويرها. يسجّل تكاملك المتقدم، ويوافق المتقدم، وتتلقى الدخل الشهري الموثّق مع نسبة قدرة على تحمل التكلفة مقابل الإيجار الذي تفحصه.
هل يجب أن يوافق المستأجر قبل أن أتمكن من رؤية ملفه التعريفي؟
نعم، دائمًا. لا يمكن قراءة أي بيانات موثّقة حتى يوافق ذلك المستأجر على طلبك المحدد، مختارًا الفئات التي يمكنك رؤيتها ولأي مدة. كل موافقة تُنتج إيصال موافقة، ويمكن للمستأجر إلغاء الوصول في أي وقت.
كم تكلف واجهة API لفحص المستأجرين؟
تسجيل المستأجرين، ودعوتهم، وتلقي Webhooks، والتحقق من قواعد الامتثال — كل ذلك مجاني. تُحاسَب فقط عند قراءة ملف تعريفي موثّق، مرة واحدة لكل متقدم في كل شهر ميلادي. بيئة التجربة مجانية للأبد.
هل يمكن إعادة استخدام ملف تعريفي موثّق واحد عبر عدة ملاك؟
هذا هو جوهر الشبكة. يبني المستأجر ملفًا تعريفيًا موثّقًا واحدًا ويعيد استخدامه في كل طلب، بحيث يمكن للمتقدم الموثّق بالفعل لعقار آخر الموافقة على طلبك خلال ثوانٍ بدلًا من إعادة فحصه وتحصيل رسوم منه مجددًا.
مستعد للبناء؟
سجّل، وانسخ مفتاح التجربة الخاص بك، وقم بأول استدعاء لك خلال دقائق.