Unelte
Căutare web verificată și fetch sigur de pagini, aceleași unelte pe care le folosește fiecare agent codai.
Ambele endpoint-uri trec prin gate-ul de reguli și prin limita de rată per cheie. search returnează doar snippet-uri verificate față de pagina descărcată, cu filtre de domeniu (include_domains / exclude_domains), de dată de publicare (published_after / published_before) și freshness; fiecare rezultat are published_at (null când nu se cunoaște, niciodată data descărcării) și crawled_at. fetch aplică verificări SSRF la fiecare hop de redirect și o limită de 3 MB și returnează până la 40.000 de caractere (implicit 8.000). Contorizare per apel: 3 $ la 1.000 de căutări rapide, 8 $ la 1.000 aprofundate, 0,50 $ la 1.000 de fetch-uri; primele 1.000 de apeluri pe lună sunt gratuite, iar apelurile din cadrul unei ture de agent codai nu se taxează niciodată. Pentru întrebări în mai mulți pași folosește cercetarea aprofundată. Detalii: ghidul de unelte.
bearerAuthAutorizareBearer <codai_…>O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128application/json- body
Corpul lui POST /v1/tools/search.
query*stringFraza de căutare (cu spațiile de la capete eliminate).
1 <= length <= 400max_results?integerNumărul maxim de rezultate.
1 <= value <= 105freshness?stringDoar pagini publicate în fereastra dată; paginile fără dată de publicare cunoscută sunt eliminate.
"day""week""month""year"include_domains?array<>Întoarce doar pagini de pe aceste host-uri (inclusiv subdomenii, cu prefix de cale opțional, de ex. github.com/vercel). Schema și www. sunt eliminate.
items <= 10exclude_domains?array<>Nu întoarce niciodată pagini de pe aceste host-uri (aceeași potrivire ca la include_domains).
items <= 10published_after?stringDoar pagini publicate la sau după această dată (YYYY-MM-DD sau YYYY-MM); paginile nedatate sunt eliminate.
^\d{4}-\d{2}(-\d{2})?$published_before?stringDoar pagini publicate înainte de această dată (YYYY-MM-DD sau YYYY-MM); paginile nedatate sunt eliminate.
^\d{4}-\d{2}(-\d{2})?$content_chars?integerÎntoarce și un extras verificat de cel mult atâtea caractere per rezultat, în content (absent sau 0 = doar snippet).
0 <= value <= 2000country?stringCod de piață din două litere. Dacă lipsește, gateway-ul îl deduce din interogare (ro pentru interogări în română, us în rest).
^[a-zA-Z]{2}$lang?stringCod de limbă, opțional cu regiune (en-US). Dacă lipsește, se deduce din interogare; un operator lang:xx în interogare are prioritate.
^[a-zA-Z]{2}(-[a-zA-Z]{2})?$mode?stringcodai (implicit): căutarea nativă doar cu rezultate verificate (ToolSearchResponse). google:
Grounding with Google Search pe Vertex AI, întors separat ca ToolSearchGoogleResponse și niciodată
amestecat cu rezultatele codai; 404 când gateway-ul nu îl are activat, 503 search_unavailable când Google
nu întoarce surse.
fast / deep înseamnă codai cu acel depth (alias păstrat pentru clienții care trimit câmpul codai-search).
"codai""codai""google""fast""deep"depth?stringAdâncimea codai-search. fast (implicit): buget ~4,5 s. deep: mai multe surse și buget ~12 s, pentru
cercetare, literatură și comparații; cu fallback: auto cererea întreagă poate dura ~20 s.
"fast""fast""deep"fallback?stringCu mode: codai: auto (implicit) atașează un bloc separat google (Grounding with Google Search) când
rezultatele codai sunt slabe (niciunul, sub 3 sau acoperire mică pentru code/docs/general/academic/education)
sau serviciul de căutare e indisponibil; niciodată pentru currency/weather/fuel/inflation/local_poi. off îl
dezactivează.
"auto""auto""off"Rezultate verificate (sau forma căii de furnizor, pe instalările fără codai-search).
application/json- response
JSON-ul codai-search, întors neschimbat de gateway.
results*array<>items <= 10provider*"codai""codai"took_ms*integerLatența serviciului de căutare în milisecunde (nu întregul dus-întors prin gateway).
0 <= valuecached*booleanServit din cache-ul de rezultate de 10 minute al serviciului de căutare.
coverage*numberresults.length / max_results, rotunjit la două decimale.
0 <= value <= 1sources_tried*array<string>degraded*array<string>Doar eșecurile și expirările reale ale surselor sau etapelor (de ex. rerank:timeout); gol când totul a rulat.
notes?array<string>Coduri informative ale pipeline-ului (rânduri filtrate, verificări în curs, indicii de cache); nu sunt eșecuri. Lipsește când e gol.
intent*stringIntenția interogării, stabilită pe reguli, folosită la alegerea surselor.
"currency""weather""encyclopedic""code""docs""site""news""price""local""fuel""inflation""local_poi""academic""definition""education""general"complete?booleanRăspunsul este complet chiar cu mai puțin de 3 rezultate (articolul de referință pentru o definiție
sau o întrebare factuală, o pagină oficială selectată pe locul 1, două articole din fluxurile de
știri sau operatori stricți precum site: / filetype: / intitle:). Fallback-ul automat Google
nu rulează în acest caz.
rerank?Prezent când a rulat reranker-ul cross-encoder.
google?Prezent doar când a rulat fallback-ul automat (vezi fallback). Set de rezultate separat din Grounding with
Google Search — niciodată amestecat în results; afișați answer împreună cu search_suggestions_html și
păstrați attribution (termenii Google).
fallback?Dacă a fost folosit fallback-ul automat Google și de ce.
curl -X POST 'https://ai.codai.ro/v1/tools/search' \ -H 'Content-Type: application/json' \ -d '{ "query": "curs BNR euro azi"}'{ "results": [ { "title": "string", "url": "http://example.com", "snippet": "string", "page_age": "string", "published_at": "2019-08-24T14:15:22Z", "crawled_at": "2019-08-24T14:15:22Z", "content": "string", "source": "index", "verified": true } ], "provider": "codai", "took_ms": 0, "cached": true, "coverage": 0, "sources_tried": [ "string" ], "degraded": [ "string" ], "notes": [ "string" ], "intent": "currency", "complete": true, "rerank": { "model": "string", "ms": 0, "n": 0 }, "google": { "answer": "string", "sources": [ { "title": "string", "url": "http://example.com" } ], "queries": [ "string" ], "search_suggestions_html": "string", "attribution": "string", "cached": true }, "fallback": { "used": true, "hedged": true, "reason": "few_results" }}bearerAuthAutorizareBearer <codai_…>O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128application/json- body
Corpul lui POST /v1/tools/fetch.
url*stringURL public http/https. Un host fără schemă primește prefixul https://.
1 <= length <= 2048max_chars?integerPlafon pentru lungimea lui content; documentele mai lungi sunt tăiate la limită de paragraf și marcate truncated.
200 <= value <= 400008000focus?stringFraza pe care te concentrezi — se păstrează doar paragrafele cele mai relevante, unite cu […].
length <= 300format?string"markdown""markdown""text"Pagina extrasă.
application/json- response
Conținutul extras plus metadate. Cheile de metadate opționale lipsesc când pagina nu le are.
url*stringURL-ul exact așa cum l-ai trimis.
final_url*stringURL-ul după redirecturi.
urititle?stringbyline?stringdescription?stringcanonical?stringurilang?stringLimba documentului, așa cum o declară pagina.
content_type*stringTipul media cu litere mici, fără parametri.
content*stringConținut lizibil în format-ul cerut. Documentele JSON sunt formatate lizibil.
chars*integerLungimea lui content.
0 <= valuetruncated*booleanTrue când max_chars, fereastra focus sau plafonul de 3 MB pe corp au eliminat conținut.
took_ms*integer0 <= valuecached*booleanServit din LRU-ul de 15 minute al gateway-ului.
curl -X POST 'https://ai.codai.ro/v1/tools/fetch' \ -H 'Content-Type: application/json' \ -d '{ "url": "https://www.bnr.ro/Cursul-de-schimb-524.aspx"}'{ "url": "string", "final_url": "http://example.com", "title": "string", "byline": "string", "description": "string", "canonical": "http://example.com", "lang": "string", "content_type": "text/html", "content": "string", "chars": 0, "truncated": true, "took_ms": 0, "cached": true}Ultima actualizare: