REST API

REST API

Sistemleriniz Realton’un kataloğunu ve CRM’inizi okur; müşterileri, notları, görevleri ve fırsat aşamalarını anahtarı oluşturan kişi adına yazar.

Agency paketi

Hızlı başlangıç

  1. Realton’da sahip veya bir yönetici Ayarlar › API ve MCP bölümünü açar, REST API’yi işaretler ve Anahtar oluştur’u seçer. Anahtarı hemen kopyalayın: yalnızca bir kez gösterilir.
  2. Anahtarı sunucunuzda, bir ortam değişkeninde tutun:
    export REALTON_API_KEY="rtk_live_…"
  3. İlk çağrınızı yapın:
    curl "https://realton.ai/api/v1/projects?place=Dubai&beds=2&limit=5" \
      -H "Authorization: Bearer $REALTON_API_KEY"

Yapay zekâyla geliştirmek

Bugün entegrasyonların çoğunu bir yapay zekâ yazıyor. Ona bu iki adresi ve görevi birkaç kelimeyle verin; gerisini kendisi okur.

Köşeli parantezleri doldurarak kopyalayabileceğiniz bir istem:
[Web sitemi / CRM’imi / sistemimi] Realton’un REST API’sine bağlamak istiyorum.
Önce özeti oku: https://realton.ai/docs/api.md
OpenAPI belgesinin tamamı: https://realton.ai/docs/openapi.json
Kullandığım teknoloji: [örneğin, Vercel üzerinde Next.js].
İstediğim: [örneğin, Realton’un Dubai’deki projelerini sitemde göster, günde bir kez yenilensin].
API anahtarı REALTON_API_KEY ortam değişkeninde. Anahtarı asla benden isteme ve asla koda yazma.

Anahtarı asla bir sohbete yapıştırmayın. REALTON_API_KEY değişkenini sunucuda kendiniz tanımlayın, yapay zekâya yalnızca adını söyleyin.

Kurallar

Anahtar

Her çağrı anahtarı Authorization başlığında gönderir. Anahtar, yalnızca oluşturulurken REST API işaretlendiyse ve yalnızca çalışma alanı Agency paketindeyken REST API’ye erişir.

Authorization: Bearer rtk_live_…

Çağrı kimin adına yapılır

Çağrı, anahtarı oluşturan üye adına ve onun görebildikleriyle yapılır: danışman kendi müşterilerini, sahip veya yönetici ajansın müşterilerini görür. Bu üye çalışma alanından ayrıldığında anahtar çalışmayı bırakır.

Sınırlar

Anahtar başına dakikada en fazla 120 çağrı. Bunun üzerinde yanıt 429 olur, RATE_LIMITED ve retryAfterSec ile birlikte: o kadar saniye bekleyip yeniden çağırın.

Sayfalar

GET /projects tek seferde en fazla 100 proje döndürür: limit kaç tane, offset nereden başlanacağını, total toplam kaç tane olduğunu belirtir.

Kimlikler

Proje anahtarı GET /projects çağrısından, müşteri kimliği GET /clients çağrısından, fırsat kimliği ise müşteri kartındaki GET /clients/{id} yanıtında deals[].id alanından gelir.

Müşteriye hiçbir şey gitmez

Hiçbir çağrı müşteriye bir şey göndermez: POST /brochures, danışmanın göndereceği bir bağlantı döndürür. Fiyatlar geliştiricinin kendi fiyatlarıdır, geliştiricinin para birimindedir.

Retler

Ret yanıtı, sabit bir code içeren JSON’dur. Mesaja göre değil, her zaman koda göre işlem yapın.

{ "code": "plan_required" }
DurumKodAnlamı
401key_requiredAnahtar içeren bir Authorization başlığı yok.
401key_invalidAnahtar bilinmiyor ya da iptal edilmiş.
403key_scopeAnahtar REST API’ye erişmiyor. REST API işaretli bir anahtar oluşturun.
403plan_requiredÇalışma alanı artık Agency paketinde değil.
403key_member_goneAnahtarı oluşturan kişi çalışma alanından ayrıldı. Yeni bir anahtar oluşturun.
404not_foundBulunamadı ya da bu üyenin görebileceği bir kayıt değil.
429RATE_LIMITEDBu dakikada çok fazla çağrı yapıldı. retryAfterSec saniye bekleyin.
400place_unknown, whatsapp_invalid, …Aralık dışında bir alan ya da geçersiz bir değer. Kod hangisi olduğunu belirtir.

Başvuru

Her çağrı, alanları ve bir örnekle, OpenAPI belgesindeki gibi.

Temel adres
https://realton.ai/api/v1

Katalog

GET/projectsSearch the catalog

Projects that fit, newest first, with their price from. Up to 100 a page.

Parametreler

AdTürNedir
q
sorguda
string ≤ 120Words of a project's or a developer's name.
place
sorguda
string ≤ 80A city or an emirate, by name or slug: Dubai, Batumi, Limassol.
area
sorguda
string ≤ 80An area, by name or slug: Dubai Islands, JVC.
beds
sorguda
integer 0–9Bedrooms: 0 is a studio, 4 is four and more.
maxPrice
sorguda
numberThe most the client would pay, in currency.
currency
sorguda
stringThe currency of maxPrice.
handoverBy
sorguda
integer 2025–2045The latest handover year.
lang
sorguda
en | heThe language of place and area names.
limit
sorguda
integer 1–100How many projects in this page.
offset
sorguda
integerHow many to skip: the next page starts at offset + limit.

Yanıt 200

AdTürNedir
totalzorunluintegerHow many projects fit, across all pages.
offsetzorunluintegerThe offset of this page.
catalogDatezorunlustringThe day the catalog was last built, YYYY-MM-DD.
projectszorunluarray

Her biri

AdTürNedir
keystringThe project key, for GET /projects/{key} and POST /brochures.
namestringThe project's name.
developerstring | nullThe developer's name.
marketae | cy | ge | om | saae, cy, ge, om or sa.
placestring | nullThe city or emirate.
areastring | nullThe area.
stageOFF_PLAN | UNDER_CONSTRUCTION | READYOFF_PLAN, UNDER_CONSTRUCTION or READY.
handoverstring | nullWhen it is handed over, as the developer says it: Q4 2028.
priceFromnumber | nullThe lowest price, in currency.
currencystringThe developer's currency: AED, EUR, USD, OMR, SAR.
bedroomsarrayThe bedroom counts it has; 0 is a studio.
commissionPctnumber | nullThe agent's commission, in percent.
photostring | nullA photo of it.
Örnek
{
  "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
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.

Parametreler

AdTürNedir
keyzorunlu
yolda
stringThe project key from GET /projects.
lang
sorguda
en | heThe language of names, plans and amenities.

Yanıt 200

AdTürNedir
entryobjectIts catalog line: the same figures as GET /projects, with title for the name and slugs for place and area.
placeNamestring | nullThe city or emirate.
areaNamestring | nullThe area.
unitTypesarrayEach unit type: label, beds, available (from the inventory), sizeSqft, sizeSqm, priceFrom, currency, pricePerArea, areaUnit.
plansarrayPayment plans: each with its steps (label, timing, percent, phase) and its share before and after handover.
dldPctnumber | nullDubai's registration fee on booking, in percent; null elsewhere.
amenitiesarrayWhat the project offers.
galleryobjectcount, and images with their url.
nearbyarrayPlaces near it: category, name, km.
curl
curl -X GET "https://realton.ai/api/v1/projects/{key}" \
  -H "Authorization: Bearer $REALTON_API_KEY"

Müşteriler

GET/clientsYour clients

An agent's own clients; an owner's or an admin's, the agency's. Last active first.

Parametreler

AdTürNedir
q
sorguda
string ≤ 80A name, a number or an email to look for.

Yanıt 200

AdTürNedir
clientszorunluarray

Her biri

AdTürNedir
idstringThe client id.
namestring | nullTheir name.
whatsappstring | nullTheir number.
emailstring | nullTheir email.
languagestring | nullThe language they speak.
sourcestringWhere they came from.
stageNEW | CONTACTED | VIEWING | EOI | BOOKED | WON | LOSTThe stage of their most advanced open deal.
projectstring | nullThe project of that deal.
lastActivityAtstringThe last thing that happened with them, ISO date-time.
ownerUserIdstringThe member they belong to.
openTasksintegerTheir open tasks.
curl
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.

Gövde

AdTürNedir
namezorunlustring ≤ 120Their full name.
whatsappstring ≤ 30A number with its country code, +971 50 555 0147.
emailstring ≤ 200An email address.
languagestring ≤ 5The language they speak, a two-letter code: en, ar, he, ru…
Örnek
{
  "name": "Elena Petrova",
  "whatsapp": "+971505550147",
  "language": "ru"
}

Yanıt 201

AdTürNedir
idstringThe client id.
namestring | nullTheir name.
languagestring | nullThe language they speak.
whatsappstring | nullTheir number, E.164.
emailstring | nullTheir email.
ownerUserIdstringThe member they belong to.
updatedAtstringISO date-time.
curl
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}.

Parametreler

AdTürNedir
idzorunlu
yolda
stringThe client id from GET /clients.
lang
sorguda
en | heThe language of place names.

Yanıt 200

AdTürNedir
idstringThe client id.
namestring | nullTheir name.
whatsappstring | nullTheir number.
emailstring | nullTheir email.
languagestring | nullThe language they speak.
requirementsobjectWhat they are looking for: places, bedrooms, budget, handover.
ownerNamestring | nullThe member they belong to.
dealsarrayTheir deals: id, stage, projectKey, projectTitle, beds, unitLabel, price, currency, commissionPct, commission, lostReason.
curl
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.

Parametreler

AdTürNedir
idzorunlu
yolda
stringThe client id.

Gövde

AdTürNedir
textzorunlustring ≤ 4000The note.
Örnek
{
  "text": "Wants a sea view, budget AED 2M, moving in 2028."
}

Yanıt 201

AdTürNedir
idzorunlustringThe note id.
curl
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."}'

Görevler

GET/tasksYour tasks

The member's own tasks, with how many there are in each scope.

Parametreler

AdTürNedir
scope
sorguda
open | overdue | today | upcoming | someday | doneopen is every task not done.

Yanıt 200

AdTürNedir
taskszorunluarray
countszorunluobjectHow many tasks in overdue, today, upcoming, someday and done.

Her biri

AdTürNedir
idstringThe task id.
titlestringWhat to do.
notestring | nullMore words about it.
dueAtstring | nullWhen, ISO date-time.
dueKindAT | DAY | NONEAT, DAY or NONE.
doneAtstring | nullWhen it was done.
scopeoverdue | today | upcoming | someday | doneWhere it stands now, in the member's time zone.
contactobject | nullThe client it is for: id and name.
dealIdstring | nullThe deal it belongs to.
curl
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.

Gövde

AdTürNedir
titlezorunlustring ≤ 200What to do.
notestring ≤ 2000More words about it.
dueAtstring ≤ 40When: an ISO date-time with its offset, 2026-10-25T11:00:00+04:00. With dueKind DAY, any time on that day.
dueKindAT | DAY | NONEAT for a time, DAY for a whole day, NONE for no date.
clientIdstringThe client the task is for.
Örnek
{
  "title": "Call Elena about Soma Residences",
  "dueAt": "2026-10-25T11:00:00+04:00",
  "dueKind": "AT",
  "clientId": "cm2x8k1qz0001abcdeffghijk"
}

Yanıt 201

AdTürNedir
idstringThe task id.
titlestringWhat to do.
notestring | nullMore words about it.
dueAtstring | nullWhen, ISO date-time.
dueKindAT | DAY | NONEAT, DAY or NONE.
doneAtstring | nullWhen it was done.
scopeoverdue | today | upcoming | someday | doneWhere it stands now, in the member's time zone.
contactobject | nullThe client it is for: id and name.
dealIdstring | nullThe deal it belongs to.
curl
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"}'

Fırsatlar

PATCH/deals/{id}Move a deal's stage

A deal's id is on its client's card (GET /clients/{id}, deals[].id).

Parametreler

AdTürNedir
idzorunlu
yolda
stringThe deal id.

Gövde

AdTürNedir
stagezorunluNEW | CONTACTED | VIEWING | EOI | BOOKED | WON | LOSTThe new stage.
lostReasonstring ≤ 200Why it was lost; read only with LOST.
Örnek
{
  "stage": "VIEWING"
}

Yanıt 200

AdTürNedir
okzorunluboolean
curl
curl -X PATCH "https://realton.ai/api/v1/deals/{id}" \
  -H "Authorization: Bearer $REALTON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"stage":"VIEWING"}'

Broşürler

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.

Gövde

AdTürNedir
projectzorunlustringThe project key.
clientIdstringThe client it is for: their opens show on their card.
langzorunluen | heThe language of the brochure.
Örnek
{
  "project": "studio:soma-residences",
  "clientId": "cm2x8k1qz0001abcdeffghijk",
  "lang": "en"
}

Yanıt 201

AdTürNedir
idzorunlustringThe link id.
urlzorunlustringThe address to send: it opens the brochure in the agency's brand.
projectzorunlustringThe project name.
langzorunlustringThe language of the brochure.
clientzorunlustring | nullThe client's name, when it is for one.
Örnek
{
  "id": "cm2x9p0aa0002abcdeffghijk",
  "url": "https://realton.ai/b/Hk3…",
  "project": "Soma Residences",
  "lang": "en",
  "client": "Elena Petrova"
}
curl
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"}'