Agency Import API
Nahrávajte inzeráty do Seeki cez API.
Hromadne importujte inzeráty nehnuteľností z vášho CRM alebo systému správy nehnuteľností. Jeden endpoint, stav pre každú položku, automatické TTL.
Získať API kľúč
Prístup k Agency Import API vyžaduje aktívne predplatné agentúry Seeki. Súčasťou každého predplatného je jeden API kľúč viazaný na váš agentúrny účet.
Predplaťte si na stránke stránka Pre agentov a začnite.
Autentifikácia
Každá požiadavka musí obsahovať váš API kľúč ako Bearer token v hlavičke Authorization.
Authorization: Bearer seeki_live_your_key_hereKľúče začínajúce na seeki_live_ sú produkčné. Staging kľúče začínajú na seeki_test_. Medzi prostrediami nie sú zameniteľné.
Váš prvý import
Pošlite POST požiadavku na /v1/listings s telom JSON obsahujúcim pole listings. Každý prvok predstavuje jednu nehnuteľnosť.
curl -X POST https://ingest.seeki.eu/v1/listings \
-H "Authorization: Bearer seeki_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"listings": [
{
"external_id": "crm-listing-00123",
"listing_type": "SELL",
"real_estate_type": "APARTMENT",
"price": 320000,
"currency": "EUR",
"address": {
"street": "Wenceslas Square 1",
"city": "Prague",
"country_code": "CZ",
"postal_code": "11000"
},
"name": "Sunny 2-bedroom apartment, Wenceslas Square",
"floorage": 65
}
]
}'Úspešná dávka vráti HTTP 200 s poliami accepted a rejected:
{
"accepted": [
{ "external_id": "crm-listing-00123", "import_item_id": "uuid-…" }
],
"rejected": []
}Štruktúra požiadavky
Telo na najvyššej úrovni je { listings: [...] }. Povinné polia pre každý inzerát:
| Pole | Povinné? | Poznámky |
|---|---|---|
| external_id | Povinné | Your CRM’s unique ID. Used for idempotent re-imports and deduplication. |
| listing_type | Povinné | SELL alebo RENT. |
| real_estate_type | Povinné | APARTMENT, HOUSE, LAND, COMMERCIAL alebo OTHER. |
| price | Povinné | Číselná hodnota. Pre kód podľa ISO 4217 použite pole currency (predvolene EUR). |
| address OR coordinates | Povinné | Uveďte buď objekt address (street, city, country_code), alebo súradnice ({ lat, lng }). Aspoň jedna možnosť musí byť prítomná. |
| currency | Voliteľné | Kód podľa ISO 4217, napr. EUR, CZK, PLN. Predvolene EUR. |
| name, description | Voliteľné | Názov inzerátu a voľný text popisu. |
| floorage, floor, rooms | Voliteľné | Veľkosť nehnuteľnosti v m², číslo poschodia a počet izieb. |
| images | Voliteľné | Pole verejných URL adries obrázkov. Importný worker ich stiahne a uloží do cache. |
| contact | Voliteľné | Meno agenta, e-mail a telefón pre smerovanie dopytov. |
Kompletnú schému so všetkými voliteľnými poliami nájdete v interaktívna referencia API.
Štruktúra odpovede a chyby
Endpoint /v1/listings vždy vráti HTTP 200 OK, pokiaľ je samotná požiadavka správne sformovaná (platný JSON, správna autentifikačná hlavička, dodržané veľkostné limity). Zlyhania jednotlivých inzerátov sa hlásia v poli rejected — nie ako HTTP chybové kódy.
Každá zamietnutá položka obsahuje external_id, error_code a čitateľnú správu. Chyby na úrovni dávky (zlá autentifikácia, prekročená veľkosť) vrátia HTTP status iný ako 200 s poľom error_code na najvyššej úrovni.
Kódy chýb
Kódy na úrovni dávky vracajú HTTP chyby. Kódy pre jednotlivé položky sa objavujú v poli rejected odpovede 200.
| error_code | HTTP / rozsah | Význam |
|---|---|---|
| MISSING_AUTHORIZATION | 401 | Nebola odoslaná hlavička Authorization. |
| INVALID_KEY | 401 | Kľúč sa nenašiel, bol zrušený alebo jeho platnosť vypršala. |
| SUBSCRIPTION_INACTIVE | 403 | The agency’s subscription is not active or past_due. |
| PAYLOAD_TOO_LARGE | 413 | Telo požiadavky prekračuje limit 25 MB. |
| TOO_MANY_ITEMS | 413 | Pole listings obsahuje viac ako 5 000 položiek. |
| VALIDATION_FAILED | na položku | Jedno alebo viac povinných polí chýba alebo má neplatnú hodnotu. Detaily nájdete v poli message. |
| GEOCODE_ADDRESS_NOT_FOUND | na položku | Zadaná adresa sa nedala previesť na súradnice. Overte street, city a country_code. |
| GEOCODE_COORDINATES_INVALID | na položku | Zadané lat/lng sú mimo platného rozsahu (lat ±90, lng ±180). |
| INFRA_QUEUE_REJECTED | na položku | Front workflow zamietol položku, zvyčajne z dôvodu dočasného preťaženia. Skúste to znovu po krátkej pauze. |
| INFRA_LOST | na položku | Workflow bol prijatý, ale jeho výsledok sa nikdy nezaznamenal. Použite retry endpoint. |
| INTERNAL_ERROR | na položku | Vyskytla sa neočakávaná serverová chyba. Opakovanie môže pomôcť; ak problém pretrváva, kontaktujte podporu. |
Idempotencia / opakované importy
Re-posting a listing with the same external_id updates the existing record — it does not create a duplicate. The listing’s TTL is refreshed on every successful import.
Interne každá importovaná položka zodpovedá jednému Cloudflare Workflow s ID:
agency-{agency_id}-{external_id}Expirácia inzerátu
Každý importovaný inzerát má TTL 60 dní od posledného úspešného importu. Po vypršaní TTL je inzerát automaticky stiahnutý zo zverejnenia denným cron jobom.
Ak chcete, aby bol inzerát zverejnený trvalo, znovu ho importujte (aj s identickými údajmi) pred uplynutím 60-dňového okna. Odporúčaným postupom je nočná opätovná synchronizácia vašich aktívnych inzerátov.
Stav a opakovanie
Použite GET /v1/import-items/{import_item_id}/status na zistenie stavu spracovania jednej položky. Hodnota import_item_id sa vracia v poli accepted v pôvodnej POST odpovedi.
curl https://ingest.seeki.eu/v1/import-items/{import_item_id}/status \
-H "Authorization: Bearer seeki_live_your_key_here"{
"import_item_id": "uuid-…",
"external_id": "crm-listing-00123",
"status": "completed",
"listing_id": "uuid-listing"
}Ak položka skončí v stave INFRA_LOST alebo INFRA_QUEUE_REJECTED, znovu ju zaraďte do frontu bez opätovného odoslania celej dávky:
curl -X POST https://ingest.seeki.eu/v1/import-items/{import_item_id}/retry \
-H "Authorization: Bearer seeki_live_your_key_here"Limity
- Veľkosť tela: maximálne 25 MB na požiadavku.
- Položiek na požiadavku: maximálne 5 000. Väčšie dávky rozdeľte.
- Aktuálne nie je vynútený žiadny limit QPS. Veľmi veľké nárazové prevádzky môžu byť automaticky obmedzené; objemné synchronizácie rozložte do viacerých požiadaviek.
Spustenie do produkcie
K dispozícii sú dve oddelené prostredia. API kľúče sú viazané na prostredie — produkčný kľúč nebude fungovať na stagingu a naopak.
| Prostredie | Základná URL |
|---|---|
| Staging | https://ingest.seeki.store/v1 |
| Produkcia | https://ingest.seeki.eu/v1 |
Všetky endpointy (/listings, /import-items/{id}/status, /import-items/{id}/retry) sú v oboch prostrediach identické.
Pripravení na integráciu?
Otvorte interaktívnu referenciu, kde si môžete preskúmať všetky polia, vyskúšať požiadavky priamo v prehliadači a stiahnuť JSON Schema pre váš validátor.