الولاية

CertRent logo CertRent استأجر بثقة

واجهة 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": "Rental application 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' => 'Rental application 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: 'Rental application 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': 'Rental application 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 واجهة برمجة للتحقق بإذن المستأجر، وليست خدمة فحص مستأجرين أو تقارير مستهلكين. يمكن لشركة إدارة العقارات أن تقرأ من داخل برنامج التأجير الخاص بها، عبر واجهة REST قياسية بمفتاح سري، الدخل وسجل الإيجار والهوية والتوصيات الموثّقة التي يختار المتقدّم مشاركتها. الوصول إلى بيئة الاختبار مجاني؛ ويجري فتح الحسابات على مراحل، لذا اطلب الوصول إن لم يكن لديك حساب بعد. يُمنح الوصول الفعلي بعد مراجعة قصيرة.

كيف أتحقق من دخل متقدم عبر واجهة API؟

تقرأ CertRent الدخل من اتصال المستأجر البنكي الخاص به بدلًا من المستندات المرفوعة، لذا لا توجد قسيمة راتب يمكن تزويرها. يسجّل تكاملك المتقدم، ويوافق المتقدم، وتتلقى الدخل الشهري الموثّق مع نسبة قدرة على تحمل التكلفة مقابل الإيجار الذي تفحصه.

هل يجب أن يوافق المستأجر قبل أن أتمكن من رؤية ملفه التعريفي؟

نعم، دائمًا. لا يمكن قراءة أي بيانات موثّقة حتى يوافق ذلك المستأجر على طلبك المحدد، مختارًا الفئات التي يمكنك رؤيتها ولأي مدة. كل موافقة تُنتج إيصال موافقة، ويمكن للمستأجر إلغاء الوصول في أي وقت.

كم تكلف واجهة CertRent البرمجية؟

تسجيل المستأجرين، ودعوتهم، وتلقي Webhooks، والتحقق من قواعد الامتثال — كل ذلك مجاني. تُحاسَب فقط عند قراءة ملف تعريفي موثّق، مرة واحدة لكل متقدم في كل شهر ميلادي. بيئة التجربة مجانية للأبد.

هل يمكن إعادة استخدام ملف تعريفي موثّق واحد عبر عدة ملاك؟

هذا هو جوهر الشبكة. يبني المستأجر ملفًا تعريفيًا موثّقًا واحدًا ويعيد استخدامه في كل طلب، بحيث يمكن للمتقدم الموثّق بالفعل لعقار آخر الموافقة على طلبك خلال ثوانٍ بدلًا من إعادة فحصه وتحصيل رسوم منه مجددًا.

مستعد للبناء؟

بعد أن يصبح لديك حساب، سجّل وانسخ مفتاح بيئة الاختبار وأجرِ أول طلب خلال دقائق.