Sari la conținut
← Acasă

Docs API index9 — REST + GraphQL + Webhooks pentru integratori

Documentație tehnică completă: REST API, GraphQL public 999.md (90 queries), Webhooks, SDK Node/Python, Postman collection. Auth via API key, rate limit 1000 req/min.

Documentație API completă pentru integratori, dezvoltatori și parteneri tehnici.

Stack: REST + GraphQL + Webhooks. Auth Bearer token. JSON peste tot. OpenAPI 3.1 spec disponibil. Postman collection oficială.

Începe în 5 minute

# 1. Obține API key (din panou Bravin)

# 2. Test ping
curl https://api.index9.site/v1/ping \
 -H "Authorization: Bearer $BRAVIN_KEY"
# → {"ok": true, "user": "contact@index9.site", "plan": "pro"}

# 3. Listează propriile anunțuri 999.md
curl https://api.index9.site/v1/listings?platform=999md \
 -H "Authorization: Bearer $BRAVIN_KEY"

Categorii docs

1. REST API

Endpoints CRUD pentru toate resursele Bravin:

  • /listings — anunțurile tale 999.md (read/create/update/delete)
  • /republish — programare republicare automată inteligentă
  • /audit — audit propriu (CTR, view/contact ratio, rentabilitate)
  • /competitor — urmărire dealeri concurenți
  • /index999 — date macro piață MD
  • /price-ml — predicție preț Logan/apartament/telefon
  • /photos — calitate foto inteligență artificială (blur, dark, watermark detect)

2. GraphQL public 999.md (proxied)

90 queries reverse-engineered din 999.md/graphql. Citire-only, fără auth. Vezi pagina dedicată: Cum am descoperit GraphQL 999.md.

3. Webhooks

Notificări push în timp real către endpoint-ul tău. HMAC-signed.

4. SDK

Node.js, Python, PHP. Toate open-source.

5. OpenAPI / Swagger

Spec complet la https://api.index9.site/openapi.json. Compatibil Swagger UI, Insomnia, Postman.

Authentication

Toate request-urile cer antet:

Authorization: Bearer bv_live_xxxxxxxxxxxxxxxx

Sau parametru query (doar pentru debug, NU producție):

?api_key=bv_live_xxx

Generare key

  1. conectare pe https://app.index9.site
  2. Setări → API Keys → "Generate new key"
  3. Alege scope: listings.read, listings.write, audit.read, competitor.read, webhooks.write, * (toate)
  4. Copiază key-ul — arătat O SINGURĂ DATĂ
  5. Stochează în secret manager (1Password, Vault, AWS Secrets Manager)

Rotation

Bună practică: rotește la 90 zile. UI permite "Generate new" + "Revoke old" în 2 apăsări. SDK detectează automat key vechi expirat și throw ExpiredKeyError.

Rate limiting

PlanREST req/minGraphQL req/minWebhooks/h
Free10030100
Privat5001001.000
Pro1.00030010.000
Dealer5.0001.000100.000

Headers pe fiecare răspuns:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1714234567

Depășire = HTTP 429 Too Many Requests cu antet Retry-After: 30 (secunde).

Webhooks — exemplu

// Receive endpoint Express.js
app.post('/webhook/index9', (req, res) => {
 const sig = req.headers['x-index9-signature']
 const expected = crypto
 .createHmac('sha256', process.env.BRAVIN_WEBHOOK_SECRET)
 .update(JSON.stringify(req.body))
 .digest('hex')

 if (sig !== expected) return res.status(401).end()

 const { event, data } = req.body
 if (event === 'listing.republished') {
 console.log(`Anunț ${data.listing_id} re-publicat la ${data.republished_at}`)
 }
 res.status(200).end()
})

Erori standard

{
 "error": {
 "code": "rate_limited",
 "message": "Rate limit exceeded for plan free",
 "request_id": "req_01HX2K...",
 "retry_after": 30
 }
}
HTTPCodeSens
400validation_errorBody/query invalid
401auth_invalidKey lipsă/greșit
403auth_forbiddenKey valid dar scope insuficient
404not_foundResursa nu există
409conflictState conflict (ex. listing deja republicat)
429rate_limitedDepășire rate limit
500internal_errorBug — raportează cu request_id
502upstream_999Probleme la 999.md (escape pentru noi)

Pagination

Cursor-based pe toate /list endpoints:

GET /v1/listings?limit=50&cursor=eyJpZCI6MTIzfQ==

Răspuns:

{
 "data": [...],
 "next_cursor": "eyJpZCI6NDU2fQ==",
 "has_more": true
}

Idempotency

Pentru POST (create) trimite antet:

Idempotency-Key: 01HX2K3M4N5P6Q...

Bravin reține răspunsul 24h și returnează același result la retry.

Versioning

API versionat în URL (/v1/, /v2/). Promitem 12 luni warning înainte de deprecation. Schimbări breaking → versiune nouă. Schimbări non-breaking (câmpuri noi opționale) → tot v1.

Header opțional pentru pin la dată specifică:

Bravin-Version: 2026-04-27

mod de test

Endpoint identic dar cu key bv_test_xxx:

  • https://api.index9.site/v1 (production)
  • https://api.index9.site/v1 cu key test = mod de test automat

mod de test: date fictive, fără call la 999.md real. Util pentru CI/CD.

Postman collection

Import directly:

https://api.index9.site/postman/collection.json

Sau apăsare "Run in Postman" pe pagina interactivă a fiecărui endpoint.

Status & uptime

Status real-time: https://status.index9.site (powered by Better Uptime). garanție disponibilitate Dealer: 99.9%. Istoric incidents publice. RSS feed + email subscribe.

Suport developer

  • Email tehnic: dev@index9.site (răspuns < 4h în program)
  • GitHub Discussions: index9/sdk-node (public Q&A)
  • Telegram dev channel: @automator999md (live chat)
  • Status page: status.index9.site

Următorul pas

  1. Citește cum am descoperit GraphQL 999.md →
  2. Vezi integrări existente (Maib, Paynet, Telegram, CRM-ul nostru) →
  3. Politica de securitate (cum protejăm cheile tale) →
  4. Changelog — ce e nou →
  5. FAQ general →

Pentru parteneriat tehnic strategic (white-label, custom rate, dedicated support): scrie la contact@index9.site.


index9 | Chișinău, Republica Moldova | contact@index9.site | +373 22 000 999

Întrebări frecvente

Cum obțin API key?+

Conectare pe contul tău → Settings → API Keys → Generate. Primești key tip `bv_live_xxxxx` (production) sau `bv_test_xxxxx` (sandbox). Key-ul e arătat o singură dată — salvează-l imediat. Pentru Dealer plan: 5 keys simultane permise (multi-environment). Pentru Free: 1 key, doar sandbox.

Care e rate limit?+

Free: 100 req/min, Privat: 500/min, Pro: 1.000/min, Dealer: 5.000/min. Headers `X-RateLimit-Remaining` + `X-RateLimit-Reset` pe fiecare răspuns. Depășire = HTTP 429 cu `Retry-After`. GraphQL public 999.md (proxy prin noi): rate limit propriu Simpals — ~50 req/min per IP.

Endpoints REST principale?+

Base URL: `https://api.index9.site/v1`. Resurse: `/listings` (CRUD anunțuri 999.md), `/republish` (republicare automată), `/audit` (audit cont propriu), `/competitor` (audit concurenți), `/index999` (date macro), `/price-ml` (predicție preț), `/photos` (calitate foto AI). Toate JSON, toate auth via Bearer token.

Cum funcționează Webhooks?+

Settings → Webhooks → Add endpoint URL. Trimitem POST cu body JSON + header `X-Bravin-Signature` (HMAC-SHA256 cu secret tău). Events: `listing.published`, `listing.republished`, `listing.expired`, `competitor.changed`, `index999.updated`. Retry: 3 încercări la 1m / 5m / 30m. Răspuns 2xx = success, altfel retry.

Există SDK?+

Da. Node.js: `npm install /sdk`. Python: `pip install index9-sdk`. PHP: `composer require index9/sdk` (beta). Toate open-source pe GitHub `index9/sdk-*`. Wrapper-uri tipate TypeScript / Pydantic, retry built-in, error handling consistent. Documentație per limbaj la `/docs/sdk/{lang}`.

Pot folosi GraphQL 999.md direct fără Bravin?+

Tehnic da — endpoint-ul `https://999.md/graphql` e public și nu cere auth pentru queries de citire. Vezi pagina dedicată `/docs/api-partners-999md` cu 90 queries reverse-engineered. Dar: rate limit Simpals e strict, nu există documentație oficială, schema se schimbă fără notice. Recomandăm proxy prin Bravin (cache + retry + monitoring).

Pornește azi pe 999.md cu AI

5 anunțuri gratuit. Fără card. 30 secunde setup.

Sistem operațional pentru 999.md

Docs API index9 — REST + GraphQL + Webhooks pentru integratori

Documentație tehnică completă: REST API, GraphQL public 999.md (90 queries), Webhooks, SDK Node/Python, Postman collection. Auth via API key, rate limit 1000 req/min.

Scroll 1 · Semnal live

Pulsul pieței, explicat pe înțelesul vânzătorului

Preț mediu, volum de anunțuri, categorie, locație și mișcare concurențială într-o singură lectură. Promisiunea de pe landing trebuie să ducă direct la date operaționale.

Context
999.md
Date
reale
Analiză
multi-factor
Pulsul pieței, explicat pe înțelesul vânzătorului999.mdcategoriilocațiiprețuriFeed piațăstoccerereritmIndex999 cockpit

Scroll 2 · Suprapuneri

Datele pieței se citesc împreună, nu separat

Index999 devine mai valoros când combină stocul de anunțuri cu regiuni, sezonalitate, curs valutar, venituri, migrație și structura populației.

Context
999.md
Date
reale
Analiză
multi-factor
Datele pieței se citesc împreună, nu separatMoldova data layersuprapunere economică și demograficăCorelarerecensământlocalitățivenitstocmobilitatelegături active

Scroll 3 · Automatizare

Mai puțină introducere manuală, mai multe decizii asistate

Antreprenorul nu trebuie împins să completeze încă 20 de câmpuri. Platforma trebuie să propună, să completeze, să verifice și să explice următorul pas.

Context
999.md
Date
reale
Analiză
multi-factor
Mai puțină introducere manuală, mai multe decizii asistatefototitlupreț999.mdalertăraportacțiuneclient

Scroll 4 · Concurență

Compară categoria ta cu ritmul real al pieței

Dealerii, agențiile și vânzătorii activi au nevoie de poziție, viteză, preț, vizualizări și mesaje în raport cu piața, nu doar rapoarte izolate.

Context
999.md
Date
reale
Analiză
multi-factor
Compară categoria ta cu ritmul real al piețeiRitm concurențălideragilieftinpremiumRadar poziționare

Scroll 5 · Decizie

Din analiză în acțiune, fără fricțiune

Pagina trebuie să închidă cercul: observă datele, explică riscul, recomandă acțiunea și trimite utilizatorul spre configurare sau demo.

Context
999.md
Date
reale
Analiză
multi-factor
Din analiză în acțiune, fără fricțiuneMotor de deciziedate reale conectate la acțiuni clareAplicăobservăexplicădecideexecută

Transformă pagina în acțiune măsurabilă

Fiecare vizitator trebuie să înțeleagă ce se întâmplă în piață, ce merită făcut acum și cum platforma reduce munca manuală.