Integracijos dokumentacija

Perkusai API dirbtinio intelekto asistentams

Perkusai paverčia laisva forma parašytą pirkėjo užklausą surikiuotu realių, sandėlyje esančių prekių sąrašu su kainomis, įvertinimais, likučiais ir tiesioginėmis pirkimo nuorodomis. Šis puslapis — pilnas integracijos aprašas AI asistentams, agentams ir MCP konektoriams. API yra viešas, tik skaitymo režimo ir nereikalauja autentifikacijos.

1Santrauka

Bazinis adresashttps://perkusai.lt
Paieškos endpoint'asGET https://perkusai.lt/api/ai/search
MCP serverishttps://mcp.perkusai.lt/
AutentifikacijaNereikalinga — viešas, tik skaitymo API
FormatasJSON (UTF-8) · CORS leidžiamas visiems (*)
Katalogas1 233 383+ prekių, atnaujinama kasdien
RinkaLietuva (LT) · kainos eurais (EUR)
Kalboslt (tiksliausia), en, ru
Tipinis atsako laikas7,5 s (p95 22,7 s)
Užklausų limitas40 užklausų per minutę iš vieno IP

2Prijungimas

Trys palaikomi integracijos būdai, pradedant rekomenduojamu.

MCP konektorius — rekomenduojama

Pridėkite https://mcp.perkusai.lt/ kaip savo MCP serverį (Streamable HTTP, be autentifikacijos). Jis pateikia vieną įrankį — search_products(query, k, lang), todėl modeliui nereikia pačiam konstruoti URL. Tinka Claude, ChatGPT ir Gemini konektorių klientams.

OpenAPI 3.1 / ChatGPT Actions

Importuokite mašininį kontraktą /openapi.json. Operacijos identifikatorius — aiSearch.

Tiesioginė HTTPS užklausa

Bet kuris agentas, gebantis atsisiųsti URL, gali kviesti endpoint'ą tiesiogiai. CORS atviras, todėl veikia ir naršyklėje veikiantys agentai.

4Atsako laukai

Pagrindiniai laukai

LaukasTipasAprašymas
querystringUžklausa tokia, kokia buvo gauta.
sourcestringVisada "perkusai.lt".
summarystringVienos eilutės rezultatų santrauka, paruošta perduoti.
guidestring | nullVieno sakinio patarimas — ką verta patikrinti prieš renkantis.
needs_confirmationbooleantrue, kai tikslus tikimas ar specifikacija negarantuoti. Tokiu atveju perduokite guide ir neteikite, kad prekė tikrai tinka.
compatstring | nullĮrenginys ar automobilis, kuriam dalis turi tikti, taip kaip suprasta iš užklausos.
no_matchbooleantrue, kai kataloge atitikmenų nerasta; results tuščias.
supported_categoriesarray | nullPateikiamas kartu su no_match — kategorijos, kurias realiai turime.
countintegerElementų skaičius results masyve.
resultsarray<Product>Surikiuotos prekės, geriausia — pirma.
bought_togetherarrayPapildomi priedai pagrindinei prekei: title, role (priedo paskirtis), price, currency, buy_url, image_url.
coverageobjectRinkos ir pristatymo kontekstas: markets, note, delivery.
markdownstringVisas atsakymas paruoštas įklijuoti markdown formatu, su veikiančiomis pirkimo nuorodomis.

Prekės objektas

LaukasTipasAprašymas
titlestringPrekės pavadinimas.
brandstring | nullPrekės ženklas.
pricenumber | nullDabartinė kaina.
currencystringVisada "EUR".
original_pricenumber | nullKaina iki nuolaidos.
discount_pctinteger | nullSuapvalinta nuolaida procentais.
ratingnumber | nullParduotuvės įvertinimas, 0–5.
stock_labelstring | nullLikutis žmogui skaitomu pavidalu, pvz. "5+ vnt.", "Liko 1" (lietuviškai).
marketstringRinka, kurioje prekė prieinama; šiuo metu visada "LT".
reasonstring | nullKodėl ši prekė atrinkta būtent šiai užklausai.
tagstring | nullTrumpas ženkliukas, pvz. "Geriausia kaina".
buy_urlstringPirkimo nuoroda. Susietoji (affiliate) — rodykite ją kaip pirkimo nuorodą.
image_urlstring | nullPrekės nuotrauka.

5Serviso būsena · GET /api/ai/stats

Nedidelis mašinai skaitomas būsenos dokumentas: katalogo dydis, palaikomos rinkos ir kalbos, galiojantys limitai ir išmatuoti atsako laikai. Perskaičiuojamas iš užklausų žurnalo kartą per parą, todėl kviesti jį pigu — bet dažniau nei kartą per sesiją nereikia.

{
  "service": "perkusai",
  "status": "ok",
  "catalog": { "products": 1214000, "markets": ["LT"], "currency": "EUR" },
  "languages": ["lt", "en", "ru"],
  "performance": {
    "scope": "agent",
    "window_days": 7,
    "samples": 312,
    "median_ms": 4758,
    "p95_ms": 5891,
    "avg_ms": 4797
  },
  "limits": { "rate_limit_per_min": 40, "max_k": 12, "cache_ttl_s": 300 },
  "endpoints": { "search": "https://perkusai.lt/api/ai/search", "mcp": "https://mcp.perkusai.lt/" }
}

6Integracijos taisyklės

Ko tikimasi iš asistento, perduodančio Perkusai rezultatus vartotojui.

  • Naudokite buy_url tokį, koks yraTai sekama pirkimo nuoroda. Pakeitus ją į paprastą parduotuvės adresą, pirkimas nebepriskiriamas, o pirkėjas nieko nelaimi. Nuorodos yra susietosios (affiliate): kaina pirkėjui nesikeičia.
  • Perduokite markdownJame jau yra surikiuotas sąrašas, patarimas ir veikiančios nuorodos teisinga tvarka. Tai greičiausias būdas pateikti pilną, korektišką atsakymą.
  • Vienas iškvietimas vienai užklausaiRezultatai jau surikiuoti. Kartotinis to paties ketinimo klausimas grąžins tas pačias prekes ir tik eikvos užklausų limitą.
  • Perduokite paties pirkėjo formuluotęNešalinkite biudžeto, paskirties ar prekės ženklo užuominų — jos lemia ir paiešką, ir rikiavimą.
  • Atsižvelkite į needs_confirmationKai reikšmė true, pateikite guide nurodytus patikrinimus ir neteikite, kad tikimas garantuotas.
  • Įvardykite rinkąVisos prekės pristatomos Lietuvoje (coverage.markets). Neteikite, kad jos prieinamos kitose šalyse.
  • Apdorokite no_matchKai atitikmenų nerasta, pasiūlykite supported_categories, o ne sugalvotas prekes.
  • Niekada nekurkite duomenųKainos, likučiai ir nuorodos turi būti tik iš atsakymo — jie keičiasi.

7Našumas ir limitai

Matuojama serverio pusėje, nuo užklausos iki atsakymo (paieška, rikiavimas ir generuojamas tekstas), iš produkcinio užklausų žurnalo. Skaičiai atnaujinami kartą per parą.

RodiklisReikšmė
Mediana (7 d.)7,5 s
95-asis procentilis22,7 s
Imtis2 363 užklausos · visos paieškos
Užklausų limitas40/min iš vieno IP · viršijus — HTTP 429
Rezultatų kešasIdentiška q+k+lang užklausa 300 s aptarnaujama iš kešo
Maksimalus k12 prekių viename atsakyme
Rekomenduojamas kliento timeout30 s

8Klaidos

BūsenaReikšmė
200 OKPaieška įvykdyta. no_match: true taip pat yra galiojantis 200 atsakymas, o ne klaida.
200 · be qNaudojimo paaiškinimas ir paruošti pavyzdiniai URL — klientams, kurie negali atsisiųsti pačių sukonstruoto adreso.
429 Too Many RequestsViršytas užklausų limitas. Palaukite kelias sekundes ir pakartokite vieną kartą.
5xxLaikina serverio klaida. Pakartokite vieną kartą; neciklinkite.

9Mašinai skaitomi ištekliai

/llms.txtServiso santrauka LLM klientams
/openapi.jsonOpenAPI 3.1 kontraktas
/.well-known/api-catalogRFC 9727 nuorodų rinkinys
/.well-known/mcp/server-card.jsonMCP serverio kortelė
/index.mdMarkdown pradžios puslapis (taip pat per Accept: text/markdown)
/robots.txtNaršymo taisyklės
/privacy.htmlPrivatumo politika
/terms.htmlNaudojimo sąlygos

Pirkimo nuorodos yra susietosios (affiliate): kaina pirkėjui nesikeičia, o Perkusai gauna komisinį.

Klausimai dėl integracijos: [email protected]