REST API
REST API
आपके सिस्टम Realton का कैटलॉग और आपका CRM पढ़ते हैं, और क्लाइंट, नोट, टास्क और डील के चरण लिखते हैं, उसी व्यक्ति की ओर से जिसने कुंजी बनाई।
Agency प्लानजल्दी शुरुआत
- Realton में ओनर या एडमिन सेटिंग्स › API और MCP खोलें, REST API पर टिक करें और कुंजी बनाएँ चुनें। इसे तुरंत कॉपी कर लें: यह एक ही बार दिखती है।
- इसे अपने सर्वर पर एनवायरनमेंट वैरिएबल में रखें:
export REALTON_API_KEY="rtk_live_…" - अपनी पहली कॉल करें:
curl "https://realton.ai/api/v1/projects?place=Dubai&beds=2&limit=5" \ -H "Authorization: Bearer $REALTON_API_KEY"
AI से बनवाना
आजकल ज़्यादातर इंटीग्रेशन AI लिखता है। उसे ये दो पते और कुछ शब्दों में काम बता दें; बाकी वह खुद पढ़ लेता है।
कॉपी करने के लिए प्रॉम्प्ट, ब्रैकेट भरकर:मुझे [अपनी वेबसाइट / अपना CRM / अपना सिस्टम] Realton के REST API से जोड़ना है।
पहले ब्रीफ़ पढ़ें: https://realton.ai/docs/api.md
पूरा OpenAPI दस्तावेज़: https://realton.ai/docs/openapi.json
मेरा स्टैक: [जैसे, Vercel पर Next.js]।
मुझे क्या चाहिए: [जैसे, मेरी साइट पर दुबई के Realton प्रोजेक्ट दिखें, दिन में एक बार रीफ़्रेश हों]।
API कुंजी एनवायरनमेंट वैरिएबल REALTON_API_KEY में है। मुझसे कभी कुंजी न माँगें और उसे कभी कोड में न लिखें।कुंजी कभी चैट में पेस्ट न करें। REALTON_API_KEY सर्वर पर खुद सेट करें, और AI को सिर्फ़ उसका नाम बताएँ।
नियम
कुंजी
हर कॉल Authorization हेडर में कुंजी भेजती है। कुंजी REST API तभी खोलती है जब बनाते समय REST API पर टिक किया गया हो, और सिर्फ़ तब तक, जब तक वर्कस्पेस Agency प्लान पर है।
Authorization: Bearer rtk_live_…कॉल किसकी ओर से होती है
कॉल उसी सदस्य की ओर से होती है जिसने कुंजी बनाई, और उसे वही दिखता है जो उस सदस्य को दिखता है: एजेंट को अपने क्लाइंट, ओनर या एडमिन को पूरी एजेंसी के। वह सदस्य वर्कस्पेस छोड़ दे, तो कुंजी काम करना बंद कर देती है।
सीमाएँ
हर कुंजी पर प्रति मिनट 120 कॉल तक। इससे ज़्यादा होने पर जवाब 429 आता है, साथ में RATE_LIMITED और retryAfterSec: उतने सेकंड रुककर फिर कॉल करें।
पेज
GET /projects एक बार में 100 तक प्रोजेक्ट लौटाता है: limit बताता है कितने, offset कहाँ से शुरू करें, और total कुल कितने हैं।
आईडी
प्रोजेक्ट की key GET /projects से मिलती है, क्लाइंट की id GET /clients से, और डील की id क्लाइंट के कार्ड GET /clients/{id} में deals[].id से।
क्लाइंट को कुछ नहीं जाता
कोई भी कॉल क्लाइंट को कुछ नहीं भेजती: POST /brochures एक लिंक लौटाता है, जिसे एजेंट भेजता है। कीमतें डेवलपर की अपनी हैं, डेवलपर की मुद्रा में।
एरर
एरर का जवाब JSON में आता है, जिसमें स्थिर code होता है। फ़ैसला कोड के आधार पर करें, मैसेज के आधार पर कभी नहीं।
{ "code": "plan_required" }| स्टेटस | कोड | मतलब |
|---|---|---|
| 401 | key_required | कुंजी वाला Authorization हेडर नहीं है। |
| 401 | key_invalid | कुंजी अनजान है या रद्द हो चुकी है। |
| 403 | key_scope | यह कुंजी REST API नहीं खोलती। REST API पर टिक करके नई कुंजी बनाएँ। |
| 403 | plan_required | वर्कस्पेस अब Agency प्लान पर नहीं है। |
| 403 | key_member_gone | कुंजी बनाने वाले व्यक्ति ने वर्कस्पेस छोड़ दिया। नई कुंजी बनाएँ। |
| 404 | not_found | नहीं मिला, या इस सदस्य को इसे देखने की अनुमति नहीं। |
| 429 | RATE_LIMITED | इस मिनट बहुत ज़्यादा कॉल हो गईं। retryAfterSec सेकंड रुकें। |
| 400 | place_unknown, whatsapp_invalid, … | कोई फ़ील्ड सीमा से बाहर है या उसकी वैल्यू मान्य नहीं है। कोड में उस फ़ील्ड का नाम होता है। |
रेफ़रेंस
हर कॉल, उसके फ़ील्ड और एक उदाहरण के साथ, जैसा OpenAPI दस्तावेज़ में है।
https://realton.ai/api/v1कैटलॉग
GET/projectsSearch the catalog
Projects that fit, newest first, with their price from. Up to 100 a page.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| q क्वेरी में | string ≤ 120 | Words of a project's or a developer's name. |
| place क्वेरी में | string ≤ 80 | A city or an emirate, by name or slug: Dubai, Batumi, Limassol. |
| area क्वेरी में | string ≤ 80 | An area, by name or slug: Dubai Islands, JVC. |
| beds क्वेरी में | integer 0–9 | Bedrooms: 0 is a studio, 4 is four and more. |
| maxPrice क्वेरी में | number | The most the client would pay, in currency. |
| currency क्वेरी में | string | The currency of maxPrice. |
| handoverBy क्वेरी में | integer 2025–2045 | The latest handover year. |
| lang क्वेरी में | en | he | The language of place and area names. |
| limit क्वेरी में | integer 1–100 | How many projects in this page. |
| offset क्वेरी में | integer | How many to skip: the next page starts at offset + limit. |
जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| totalज़रूरी | integer | How many projects fit, across all pages. |
| offsetज़रूरी | integer | The offset of this page. |
| catalogDateज़रूरी | string | The day the catalog was last built, YYYY-MM-DD. |
| projectsज़रूरी | array |
हर एक में
| नाम | प्रकार | यह क्या है |
|---|---|---|
| key | string | The project key, for GET /projects/{key} and POST /brochures. |
| name | string | The project's name. |
| developer | string | null | The developer's name. |
| market | ae | cy | ge | om | sa | ae, cy, ge, om or sa. |
| place | string | null | The city or emirate. |
| area | string | null | The area. |
| stage | OFF_PLAN | UNDER_CONSTRUCTION | READY | OFF_PLAN, UNDER_CONSTRUCTION or READY. |
| handover | string | null | When it is handed over, as the developer says it: Q4 2028. |
| priceFrom | number | null | The lowest price, in currency. |
| currency | string | The developer's currency: AED, EUR, USD, OMR, SAR. |
| bedrooms | array | The bedroom counts it has; 0 is a studio. |
| commissionPct | number | null | The agent's commission, in percent. |
| photo | string | null | A photo of it. |
{
"total": 312,
"offset": 0,
"catalogDate": "2026-10-24",
"projects": [
{
"key": "studio:soma-residences",
"name": "Soma Residences",
"developer": "Origami Properties",
"market": "ae",
"place": "Dubai",
"area": "Dubai Islands",
"stage": "OFF_PLAN",
"handover": "Q4 2028",
"priceFrom": 1670000,
"currency": "AED",
"bedrooms": [
1,
2,
3
],
"commissionPct": 5,
"photo": "https://…/soma-residences.avif"
}
]
}curl -X GET "https://realton.ai/api/v1/projects" \
-H "Authorization: Bearer $REALTON_API_KEY"GET/projects/{key}One project in full
Unit types with sizes and prices, payment plans, amenities, the gallery and what is nearby.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| keyज़रूरी पाथ में | string | The project key from GET /projects. |
| lang क्वेरी में | en | he | The language of names, plans and amenities. |
जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| entry | object | Its catalog line: the same figures as GET /projects, with title for the name and slugs for place and area. |
| placeName | string | null | The city or emirate. |
| areaName | string | null | The area. |
| unitTypes | array | Each unit type: label, beds, available (from the inventory), sizeSqft, sizeSqm, priceFrom, currency, pricePerArea, areaUnit. |
| plans | array | Payment plans: each with its steps (label, timing, percent, phase) and its share before and after handover. |
| dldPct | number | null | Dubai's registration fee on booking, in percent; null elsewhere. |
| amenities | array | What the project offers. |
| gallery | object | count, and images with their url. |
| nearby | array | Places near it: category, name, km. |
curl -X GET "https://realton.ai/api/v1/projects/{key}" \
-H "Authorization: Bearer $REALTON_API_KEY"क्लाइंट
GET/clientsYour clients
An agent's own clients; an owner's or an admin's, the agency's. Last active first.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| q क्वेरी में | string ≤ 80 | A name, a number or an email to look for. |
जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| clientsज़रूरी | array |
हर एक में
| नाम | प्रकार | यह क्या है |
|---|---|---|
| id | string | The client id. |
| name | string | null | Their name. |
| string | null | Their number. | |
| string | null | Their email. | |
| language | string | null | The language they speak. |
| source | string | Where they came from. |
| stage | NEW | CONTACTED | VIEWING | EOI | BOOKED | WON | LOST | The stage of their most advanced open deal. |
| project | string | null | The project of that deal. |
| lastActivityAt | string | The last thing that happened with them, ISO date-time. |
| ownerUserId | string | The member they belong to. |
| openTasks | integer | Their open tasks. |
curl -X GET "https://realton.ai/api/v1/clients" \
-H "Authorization: Bearer $REALTON_API_KEY"POST/clientsA new client
A name and at least one way to reach them is the usual; a name alone is accepted.
बॉडी
| नाम | प्रकार | यह क्या है |
|---|---|---|
| nameज़रूरी | string ≤ 120 | Their full name. |
| string ≤ 30 | A number with its country code, +971 50 555 0147. | |
| string ≤ 200 | An email address. | |
| language | string ≤ 5 | The language they speak, a two-letter code: en, ar, he, ru… |
{
"name": "Elena Petrova",
"whatsapp": "+971505550147",
"language": "ru"
}जवाब 201
| नाम | प्रकार | यह क्या है |
|---|---|---|
| id | string | The client id. |
| name | string | null | Their name. |
| language | string | null | The language they speak. |
| string | null | Their number, E.164. | |
| string | null | Their email. | |
| ownerUserId | string | The member they belong to. |
| updatedAt | string | ISO date-time. |
curl -X POST "https://realton.ai/api/v1/clients" \
-H "Authorization: Bearer $REALTON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Elena Petrova","whatsapp":"+971505550147","language":"ru"}'GET/clients/{id}A client's card
Their details, what they are looking for, and their deals with each deal's id for PATCH /deals/{id}.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| idज़रूरी पाथ में | string | The client id from GET /clients. |
| lang क्वेरी में | en | he | The language of place names. |
जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| id | string | The client id. |
| name | string | null | Their name. |
| string | null | Their number. | |
| string | null | Their email. | |
| language | string | null | The language they speak. |
| requirements | object | What they are looking for: places, bedrooms, budget, handover. |
| ownerName | string | null | The member they belong to. |
| deals | array | Their deals: id, stage, projectKey, projectTitle, beds, unitLabel, price, currency, commissionPct, commission, lostReason. |
curl -X GET "https://realton.ai/api/v1/clients/{id}" \
-H "Authorization: Bearer $REALTON_API_KEY"POST/clients/{id}/notesA note on a client's card
Free text on the client's timeline, as the member.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| idज़रूरी पाथ में | string | The client id. |
बॉडी
| नाम | प्रकार | यह क्या है |
|---|---|---|
| textज़रूरी | string ≤ 4000 | The note. |
{
"text": "Wants a sea view, budget AED 2M, moving in 2028."
}जवाब 201
| नाम | प्रकार | यह क्या है |
|---|---|---|
| idज़रूरी | string | The note id. |
curl -X POST "https://realton.ai/api/v1/clients/{id}/notes" \
-H "Authorization: Bearer $REALTON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Wants a sea view, budget AED 2M, moving in 2028."}'टास्क
GET/tasksYour tasks
The member's own tasks, with how many there are in each scope.
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| scope क्वेरी में | open | overdue | today | upcoming | someday | done | open is every task not done. |
जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| tasksज़रूरी | array | |
| countsज़रूरी | object | How many tasks in overdue, today, upcoming, someday and done. |
हर एक में
| नाम | प्रकार | यह क्या है |
|---|---|---|
| id | string | The task id. |
| title | string | What to do. |
| note | string | null | More words about it. |
| dueAt | string | null | When, ISO date-time. |
| dueKind | AT | DAY | NONE | AT, DAY or NONE. |
| doneAt | string | null | When it was done. |
| scope | overdue | today | upcoming | someday | done | Where it stands now, in the member's time zone. |
| contact | object | null | The client it is for: id and name. |
| dealId | string | null | The deal it belongs to. |
curl -X GET "https://realton.ai/api/v1/tasks" \
-H "Authorization: Bearer $REALTON_API_KEY"POST/tasksA new task
A task at a time, on a day, or with no date; for a client when clientId is given.
बॉडी
| नाम | प्रकार | यह क्या है |
|---|---|---|
| titleज़रूरी | string ≤ 200 | What to do. |
| note | string ≤ 2000 | More words about it. |
| dueAt | string ≤ 40 | When: an ISO date-time with its offset, 2026-10-25T11:00:00+04:00. With dueKind DAY, any time on that day. |
| dueKind | AT | DAY | NONE | AT for a time, DAY for a whole day, NONE for no date. |
| clientId | string | The client the task is for. |
{
"title": "Call Elena about Soma Residences",
"dueAt": "2026-10-25T11:00:00+04:00",
"dueKind": "AT",
"clientId": "cm2x8k1qz0001abcdeffghijk"
}जवाब 201
| नाम | प्रकार | यह क्या है |
|---|---|---|
| id | string | The task id. |
| title | string | What to do. |
| note | string | null | More words about it. |
| dueAt | string | null | When, ISO date-time. |
| dueKind | AT | DAY | NONE | AT, DAY or NONE. |
| doneAt | string | null | When it was done. |
| scope | overdue | today | upcoming | someday | done | Where it stands now, in the member's time zone. |
| contact | object | null | The client it is for: id and name. |
| dealId | string | null | The deal it belongs to. |
curl -X POST "https://realton.ai/api/v1/tasks" \
-H "Authorization: Bearer $REALTON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Call Elena about Soma Residences","dueAt":"2026-10-25T11:00:00+04:00","dueKind":"AT","clientId":"cm2x8k1qz0001abcdeffghijk"}'डील
PATCH/deals/{id}Move a deal's stage
A deal's id is on its client's card (GET /clients/{id}, deals[].id).
पैरामीटर
| नाम | प्रकार | यह क्या है |
|---|---|---|
| idज़रूरी पाथ में | string | The deal id. |
बॉडी
| नाम | प्रकार | यह क्या है |
|---|---|---|
| stageज़रूरी | NEW | CONTACTED | VIEWING | EOI | BOOKED | WON | LOST | The new stage. |
| lostReason | string ≤ 200 | Why it was lost; read only with LOST. |
{
"stage": "VIEWING"
}जवाब 200
| नाम | प्रकार | यह क्या है |
|---|---|---|
| okज़रूरी | boolean |
curl -X PATCH "https://realton.ai/api/v1/deals/{id}" \
-H "Authorization: Bearer $REALTON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"stage":"VIEWING"}'ब्रोशर
POST/brochuresA brochure link
A brochure of a project in your brand, with open tracking, for the agent to send. Realton does not send it.
बॉडी
| नाम | प्रकार | यह क्या है |
|---|---|---|
| projectज़रूरी | string | The project key. |
| clientId | string | The client it is for: their opens show on their card. |
| langज़रूरी | en | he | The language of the brochure. |
{
"project": "studio:soma-residences",
"clientId": "cm2x8k1qz0001abcdeffghijk",
"lang": "en"
}जवाब 201
| नाम | प्रकार | यह क्या है |
|---|---|---|
| idज़रूरी | string | The link id. |
| urlज़रूरी | string | The address to send: it opens the brochure in the agency's brand. |
| projectज़रूरी | string | The project name. |
| langज़रूरी | string | The language of the brochure. |
| clientज़रूरी | string | null | The client's name, when it is for one. |
{
"id": "cm2x9p0aa0002abcdeffghijk",
"url": "https://realton.ai/b/Hk3…",
"project": "Soma Residences",
"lang": "en",
"client": "Elena Petrova"
}curl -X POST "https://realton.ai/api/v1/brochures" \
-H "Authorization: Bearer $REALTON_API_KEY" \
-H "Content-Type: application/json" \
-d '{"project":"studio:soma-residences","clientId":"cm2x8k1qz0001abcdeffghijk","lang":"en"}'