REST API

Το REST API

Τα συστήματά σας διαβάζουν τον κατάλογο του Realton και το CRM σας και καταχωρίζουν πελάτες, σημειώσεις, εργασίες και στάδια συμφωνιών, ως το άτομο που δημιούργησε το κλειδί.

Πακέτο Agency

Γρήγορη εκκίνηση

  1. Στο Realton, ο κάτοχος ή ένας διαχειριστής ανοίγει Ρυθμίσεις › API και MCP, επιλέγει REST API και πατά Δημιουργία κλειδιού. Αντιγράψτε το αμέσως: εμφανίζεται μόνο μία φορά.
  2. Κρατήστε το στον διακομιστή σας, σε μεταβλητή περιβάλλοντος:
    export REALTON_API_KEY="rtk_live_…"
  3. Κάντε την πρώτη σας κλήση:
    curl "https://realton.ai/api/v1/projects?place=Dubai&beds=2&limit=5" \
      -H "Authorization: Bearer $REALTON_API_KEY"

Υλοποίηση με τη βοήθεια AI

Σήμερα τις περισσότερες διασυνδέσεις τις γράφει ένα AI. Δώστε του αυτές τις δύο διευθύνσεις και την εργασία με λίγα λόγια· τα υπόλοιπα τα διαβάζει μόνο του.

Οδηγίες για αντιγραφή, αφού συμπληρώσετε τις αγκύλες:
Θέλω να συνδέσω [τον ιστότοπό μου / το CRM μου / το σύστημά μου] με το REST API του Realton.
Διάβασε πρώτα τη σύνοψη: https://realton.ai/docs/api.md
Το πλήρες έγγραφο OpenAPI: https://realton.ai/docs/openapi.json
Η τεχνολογία μου: [για παράδειγμα, Next.js στο Vercel].
Τι θέλω: [για παράδειγμα, να εμφανίζονται στον ιστότοπό μου τα έργα του 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 δείχνει πόσα είναι συνολικά.

Αναγνωριστικά

Το κλειδί ενός έργου έρχεται από το GET /projects, το id ενός πελάτη από το GET /clients και το id μιας συμφωνίας από την καρτέλα του πελάτη, GET /clients/{id}, στο deals[].id.

Τίποτα δεν πηγαίνει σε πελάτη

Καμία κλήση δεν στέλνει τίποτα σε πελάτη: το POST /brochures επιστρέφει σύνδεσμο που στέλνει ο μεσίτης. Οι τιμές είναι του κατασκευαστή, στο νόμισμα του κατασκευαστή.

Απορρίψεις

Μια απόρριψη είναι JSON με σταθερό code. Ελέγχετε τον κωδικό, ποτέ το μήνυμα.

{ "code": "plan_required" }
ΚατάστασηΚωδικόςΤι σημαίνει
401key_requiredΔεν υπάρχει κεφαλίδα Authorization με κλειδί.
401key_invalidΤο κλειδί είναι άγνωστο ή έχει ανακληθεί.
403key_scopeΤο κλειδί δεν ανοίγει το REST API. Δημιουργήστε νέο με επιλεγμένο το REST API.
403plan_requiredΟ χώρος εργασίας δεν έχει πια το πακέτο Agency.
403key_member_goneΤο άτομο που δημιούργησε το κλειδί αποχώρησε από τον χώρο εργασίας. Δημιουργήστε νέο κλειδί.
404not_foundΔεν βρέθηκε ή αυτό το μέλος δεν έχει δικαίωμα να το δει.
429RATE_LIMITEDΠάρα πολλές κλήσεις μέσα σε αυτό το λεπτό. Περιμένετε retryAfterSec δευτερόλεπτα.
400place_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
στο query
string ≤ 120Words of a project's or a developer's name.
place
στο query
string ≤ 80A city or an emirate, by name or slug: Dubai, Batumi, Limassol.
area
στο query
string ≤ 80An area, by name or slug: Dubai Islands, JVC.
beds
στο query
integer 0–9Bedrooms: 0 is a studio, 4 is four and more.
maxPrice
στο query
numberThe most the client would pay, in currency.
currency
στο query
stringThe currency of maxPrice.
handoverBy
στο query
integer 2025–2045The latest handover year.
lang
στο query
en | heThe language of place and area names.
limit
στο query
integer 1–100How many projects in this page.
offset
στο query
integerHow many to skip: the next page starts at offset + limit.

Απάντηση 200

ΌνομαΤύποςΤι είναι
totalυποχρεωτικόintegerHow many projects fit, across all pages.
offsetυποχρεωτικόintegerThe offset of this page.
catalogDateυποχρεωτικόstringThe day the catalog was last built, YYYY-MM-DD.
projectsυποχρεωτικόarray

Το καθένα

ΌνομαΤύποςΤι είναι
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.
Παράδειγμα
{
  "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.

Παράμετροι

ΌνομαΤύποςΤι είναι
keyυποχρεωτικό
στη διαδρομή
stringThe project key from GET /projects.
lang
στο query
en | heThe language of names, plans and amenities.

Απάντηση 200

ΌνομαΤύποςΤι είναι
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"

Πελάτες

GET/clientsYour clients

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

Παράμετροι

ΌνομαΤύποςΤι είναι
q
στο query
string ≤ 80A name, a number or an email to look for.

Απάντηση 200

ΌνομαΤύποςΤι είναι
clientsυποχρεωτικόarray

Το καθένα

ΌνομαΤύποςΤι είναι
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.

Σώμα

ΌνομαΤύποςΤι είναι
nameυποχρεωτικόstring ≤ 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…
Παράδειγμα
{
  "name": "Elena Petrova",
  "whatsapp": "+971505550147",
  "language": "ru"
}

Απάντηση 201

ΌνομαΤύποςΤι είναι
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}.

Παράμετροι

ΌνομαΤύποςΤι είναι
idυποχρεωτικό
στη διαδρομή
stringThe client id from GET /clients.
lang
στο query
en | heThe language of place names.

Απάντηση 200

ΌνομαΤύποςΤι είναι
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.

Παράμετροι

ΌνομαΤύποςΤι είναι
idυποχρεωτικό
στη διαδρομή
stringThe client id.

Σώμα

ΌνομαΤύποςΤι είναι
textυποχρεωτικόstring ≤ 4000The note.
Παράδειγμα
{
  "text": "Wants a sea view, budget AED 2M, moving in 2028."
}

Απάντηση 201

ΌνομαΤύποςΤι είναι
idυποχρεωτικόstringThe 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."}'

Εργασίες

GET/tasksYour tasks

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

Παράμετροι

ΌνομαΤύποςΤι είναι
scope
στο query
open | overdue | today | upcoming | someday | doneopen is every task not done.

Απάντηση 200

ΌνομαΤύποςΤι είναι
tasksυποχρεωτικόarray
countsυποχρεωτικόobjectHow many tasks in overdue, today, upcoming, someday and done.

Το καθένα

ΌνομαΤύποςΤι είναι
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.

Σώμα

ΌνομαΤύποςΤι είναι
titleυποχρεωτικόstring ≤ 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.
Παράδειγμα
{
  "title": "Call Elena about Soma Residences",
  "dueAt": "2026-10-25T11:00:00+04:00",
  "dueKind": "AT",
  "clientId": "cm2x8k1qz0001abcdeffghijk"
}

Απάντηση 201

ΌνομαΤύποςΤι είναι
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"}'

Συμφωνίες

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

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

Παράμετροι

ΌνομαΤύποςΤι είναι
idυποχρεωτικό
στη διαδρομή
stringThe deal id.

Σώμα

ΌνομαΤύποςΤι είναι
stageυποχρεωτικόNEW | CONTACTED | VIEWING | EOI | BOOKED | WON | LOSTThe new stage.
lostReasonstring ≤ 200Why it was lost; read only with LOST.
Παράδειγμα
{
  "stage": "VIEWING"
}

Απάντηση 200

ΌνομαΤύποςΤι είναι
okυποχρεωτικόboolean
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"}'

Φυλλάδια

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υποχρεωτικόstringThe project key.
clientIdstringThe client it is for: their opens show on their card.
langυποχρεωτικόen | heThe language of the brochure.
Παράδειγμα
{
  "project": "studio:soma-residences",
  "clientId": "cm2x8k1qz0001abcdeffghijk",
  "lang": "en"
}

Απάντηση 201

ΌνομαΤύποςΤι είναι
idυποχρεωτικόstringThe link id.
urlυποχρεωτικόstringThe address to send: it opens the brochure in the agency's brand.
projectυποχρεωτικόstringThe project name.
langυποχρεωτικόstringThe language of the brochure.
clientυποχρεωτικόstring | nullThe 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
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"}'