coreAI-API-et er laga for system som vil sende eigne data direkte inn i ein assistent og bruke dei som svargrunnlag i chat eller søk. Integrasjonen handlar først om å halde kunnskapsbasen oppdatert, deretter om å velje korleis brukarane skal møte assistenten: gjennom coreAI-widgeten, eit eige chatgrensesnitt eller eit reint søk.
#Start med assistent, kjelde og token
Alle kall mot API v2 går mot https://portal.coreai.no/api/v2 i produksjon eller https://stage.coreai.no/api/v2 i testmiljøet. API-et brukar eit Bearer-token, og dei viktigaste stiane treng både assistantId og contentImporterId.
assistantId peikar på assistenten som skal svare. contentImporterId peikar på API-kjelda der dataene blir lagra. Når du les entitetar tilbake med ekstern ID, søkjer coreAI i den oppgjevne kjelda.
#Upsert er hovudløypa for å fylle assistenten
For ein løpande integrasjon bør systemet ditt sende ein POST til /assistants/{assistantId}/sources/{contentImporterId} kvar gong eit objekt vert oppretta eller endra. Upsert erstattar heile entiteten: første kallet opprettar han, seinare kall oppdaterer den same id-en. Du treng altså ikkje å gjere ekstra kall for å sjekke om entiteten allereie finst, upsert løyser dette for deg.
1{
2 "data": [
3 {
4 "id": "product-123",
5 "type": "products",
6 "lastModifiedAt": "2026-04-28T12:00:00Z",
7 "attributes": {
8 "productNumber": "123",
9 "name": "Fjelljakke",
10 "description": "Lett skaljakke for skiftande vêr.",
11 "url": "https://example.com/products/123",
12 "price": 1299,
13 "inStock": true
14 }
15 }
16 ]
17}
Entitetstypane dekkjer dei vanlegaste datakjeldene ein assistent treng: products, contents, documents, events, contacts, job_postings og educations. Kvar type har sine eigne påkravde felt. Produkt treng til dømes name og productNumber, medan innhald treng name og longDescription.
#Bruk PATCH når berre delar av entiteten endrar seg
PATCH mot same endepunkt let deg sende berre felta som er endra. Det passar når eit eksternt system publiserer små statusendringar, til dømes pris, lagerstatus eller dato.
#Sletting av entitetar
DELETE tek ei enkel liste med id og type, og fjernar både entiteten og relasjonslenker til han. Bruk det når eit objekt ikkje lenger skal kunne dukke opp i svar — til dømes eit utgått produkt eller ei avlyst stilling.
#Eigendefinerte properties gjer dataene filtrerbare
Nokre entitetstypar kan ha properties med korte, strukturerte verdiar. Bruk camelCase-namn som categoryName, publishedAt eller market, og vel type string, number, boolean eller date. Dei same felta kan seinare brukast i chat- og søkjekall med filter som $eq, $gt, $gte, $lt, $lte og $in.
Dette er nyttig når éin assistent har fleire marknader, varegrupper eller publiseringsnivå. Du kan fylle den same kunnskapsbasen breitt, men be chatten svare frå berre éi kjelde, éin marknad eller éin innhaldstype.
#Chat kan integrerast på tre nivå
Den enklaste vegen er å bruke coreAI sin chatwidget. Då handterer widgeten samtale-ID, språk, gjeldande URL og strauming for deg. For ei skreddarsydd oppleving kan du kalle /assistants/{assistantId}/chat direkte og sende question, valfri cid, lang, model, sources, resources, filters og stream.
Dersom du integrerer chat sjølv, må du hente påkravd konfigurasjon frå /assistants/{assistantId}/config. Svaret gjev tilgjengelege modellar, kjelder og WebSocket-oppsett for strauming. Chatstraumar vert publiserte på ai-chat.<cid> med hendingane ChatStreamProgress og ChatStreamUpdated via WebSocket.
Viss du ikkje treng ein full samtale, kan /assistants/{assistantId}/search brukast som kunnskapsbasesøk. Det returnerer treff, faner per type og eventuelt eit KI-generert samandrag. Strauma samandrag brukar kanalen ai-summary.<uuid> og hendinga SummaryUpdated.
#Ein god integrasjon er ei synkronisering, ikkje ein eingongsimport
Den robuste modellen er å la kjeldesystemet eige sanninga og coreAI vere den søkbare, samtaleklare kopien. Send oppdateringar med stabile eksterne ID-ar, bruk lastModifiedAt, slett objekt som ikkje lenger skal gje svar, og legg på properties som gjer filtrering mogleg. Då får assistenten ferske data, sporbare kjelder og eit chatgrensesnitt som kan byggjast så enkelt eller spesialisert som produktet ditt krev.