Passa al contenuto principale

API Endpoints

Documentazione degli endpoint REST di Askme Chat, riallineata ai path presenti nella specifica OpenAPI

Base URL

Per gli esempi seguenti usiamo l'URL pubblico:

https://chat.askme.it

Autenticazione

Gli endpoint autenticati richiedono il token API nell'header:

X-AskmeToken: {api_token}

Gli endpoint pubblici (/public/api/...) non richiedono autenticazione.


Chat e conversazioni

Lista chat

GET /api/chat/

Recupera l'elenco delle chat con filtri, ordinamento e supporto sia a paginazione classica sia stile Spring.

Parametri query più usati

CampoTipoDescrizione
activebooleanFiltra le chat attive
categoriesarray(int64)Filtra per categoria
assignedUsersarray(int64)Filtra per operatori assegnati
usersarray(int64)Filtra per utenti coinvolti
channelCodestringFiltra per canale (WIDGET, TELEGRAM, WHATSAPP, ...)
querystringRicerca libera
ratingintegerFiltra per rating
tagsarray(int64)Filtra per tag
startingPagestringFiltra per pagina di avvio chat
tsInsFrom / tsInsTostring (date-time)Intervallo data creazione
includeContentbooleanInclude il contenuto nei risultati esportabili
loadTagsbooleanCarica i tag nella risposta
page / sizeintegerPaginazione standard
pageNumber / pageSizeintegerVariante alternativa di paginazione
offsetintegerOffset di partenza
sortarray(string)Ordinamento, es. sort=tsIns,desc

Esempio

curl -X GET "https://chat.askme.it/api/chat/?active=true&categories=1&categories=3&page=0&size=20&sort=tsIns,desc" \
-H "X-AskmeToken: {api_token}"

Risposta (200 OK)

{
"content": [
{
"idChat": 123,
"name": "Supporto ordine #8451",
"jid": "customer_123@chat",
"active": true,
"closed": false,
"language": "it",
"rating": 5,
"startingPage": "/supporto",
"category": {
"idChatCategory": 1,
"title": "Supporto"
},
"channel": {
"code": "WIDGET",
"description": "Widget"
},
"tsIns": "2026-03-31T09:12:00Z"
}
],
"totalElements": 1,
"number": 0,
"size": 20,
"totalPages": 1
}

Dettaglio chat

GET /api/chat/{idChat}

Restituisce il dettaglio completo di una conversazione.

ParametroInTipoDescrizione
idChatpathinteger (int64)ID univoco della chat

Esempio

curl -X GET "https://chat.askme.it/api/chat/123" \
-H "X-AskmeToken: {api_token}"

Risposta (200 OK)

{
"idChat": 123,
"name": "Supporto ordine #8451",
"jid": "customer_123@chat",
"active": true,
"closed": false,
"muted": false,
"language": "it",
"startingPage": "/supporto",
"status": "A",
"category": {
"idChatCategory": 1,
"title": "Supporto"
},
"assignedUser": {
"idUser": 456,
"username": "operator1"
},
"tags": [
{
"idTag": 3,
"title": "ordine"
}
]
}

Storico chat

GET /api/chat/history/{idChat}

Recupera cronologia completa, messaggi ed eventi.

curl -X GET "https://chat.askme.it/api/chat/history/123" \
-H "X-AskmeToken: {api_token}"

Operazioni principali su chat

EndpointMetodoDescrizione
/api/chat/joinPOSTPresa in carico della chat da parte di un operatore
/api/chat/assignPUTAssegna o riassegna la chat a un operatore
/api/chat/change-categoryPUTCambia categoria della chat
/api/chat/change-priority/{idChat}/{priority}PUTAggiorna la priorità
/api/chat/renamePUTRinomina la chat
/api/chat/updatePOSTAggiorna i dati della chat
/api/chat/update-statusPOSTAggiorna lo stato di una o più chat
/api/chat/mute/{idChat}PUTDisattiva le notifiche della chat
/api/chat/unmute/{idChat}PUTRiattiva le notifiche
/api/chat/tags/{idChat}POSTAggiorna i tag associati
/api/chat/close/{idChat}PUTChiude la chat
/api/chat/{idChat}DELETECancellazione logica
/api/chat/erase/{idChat}DELETECancellazione definitiva

Esempio: presa in carico

curl -X POST "https://chat.askme.it/api/chat/join" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"idChat": 123,
"idUser": 456
}'

Risposta (200 OK)

{
"idUser": 456,
"username": "operator1",
"nickname": "Mario"
}

Esempio: cambio categoria

curl -X PUT "https://chat.askme.it/api/chat/change-category" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"idChat": 123,
"idCategory": 2,
"language": "it",
"notes": "Escalation verso vendite"
}'

Esempio: aggiornamento tag

curl -X POST "https://chat.askme.it/api/chat/tags/123" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '[1, 3, 5]'

Pending, joined ed export

EndpointMetodoDescrizione
/api/chat/pending/{priority}GETChat pendenti per priorità
/api/chat/pending/connections/{priority}GETConnessioni pendenti
/api/chat/pending/categories/GETPending aggregate per categoria
/api/chat/pending/operator/{idUser}GETPending di un operatore
/api/chat/pending/operator/{idUser}/top/{top}GETPrime N pending
/api/chat/pending/operator/{idUser}/countGETConteggio pending
/api/chat/joined/{idUser}GETChat già prese in carico
/api/chat/export/{idChat}GETDownload trascrizione singola
/api/chat/exportChatsGETExport CSV delle chat filtrate
/api/chat/exportChatsWithContentGETExport CSV con contenuto messaggi

Categorie chat

La specifica usa il prefisso corretto:

/api/chat/categories/

e non /api/chat-categories/.

Lista categorie

GET /api/chat/categories/

Parametri query

CampoTipoDescrizione
languagestringLingua della risposta
minimalbooleanVersione minimale
countersbooleanInclude contatori
tenantCodestringTenant specifico
waitingTimeElapsedintegerTempo di attesa trascorso
waitingTimeThresholdintegerSoglia alert

CRUD categorie

EndpointMetodoDescrizione
/api/chat/categories/GETElenco categorie
/api/chat/categories/{idChatCategory}GETDettaglio categoria
/api/chat/categories/POSTCreazione
/api/chat/categories/PUTAggiornamento
/api/chat/categories/{idChatCategory}DELETEEliminazione

Esempio: creazione categoria

curl -X POST "https://chat.askme.it/api/chat/categories/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"code": "sales",
"title": "Vendite",
"description": "Categoria commerciale",
"active": true,
"opened": true,
"priority": 2,
"color": "#00cc66",
"lang": "it"
}'

Risposta (200 OK): 2


Utenti e operatori

Endpoint utenti verificati

EndpointMetodoDescrizione
/api/users/?username={username}GETCerca un utente per username
/api/users/{idUser}GETDettaglio utente per ID
/api/users/POSTCrea utente
/api/users/PUTAggiorna utente
/api/users/?username={username}DELETEElimina per username
/api/users/{idUser}DELETEElimina per ID
/api/users/change-nicknamePOSTCambia nickname
/api/users/operatorsGETLista operatori
/api/users/operators/online/{idChatCategory}GETOperatori online per categoria
/api/users/online/{idUser}PUTImposta stato online
/api/users/away/{idUser}PUTImposta stato away
/api/users/busy/{idUser}PUTImposta stato busy
/api/users/offline/{idUser}PUTImposta stato offline
/api/users/update-languagePUTAggiorna lingua operatore
/api/users/update-settingsPUTAggiorna impostazioni
/api/users/validate-passwordPOSTValida password

Esempio: creazione utente

curl -X POST "https://chat.askme.it/api/users/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"username": "nuovo_operatore",
"firstName": "Luca",
"lastName": "Bianchi",
"email": "[email protected]",
"password": "securePassword123"
}'

Risposta (200 OK): 456

Account autenticato

EndpointMetodoDescrizione
/api/accountGETAccount autenticato
/api/authenticateGETVerifica autenticazione
/api/change-passwordPOSTCambio password
/api/recover-passwordPOSTAvvia recupero password
/api/reset-passwordPOSTReset con token
/api/registerPOSTRegistrazione tenant
/api/availabilityGETDisponibilità tenant
/api/username-availabilityGETDisponibilità username
/api/infoGETInformazioni applicazione

Chatbot, workflow e intent

CRUD chatbot

EndpointMetodoDescrizione
/api/bots/GETElenco chatbot
/api/bots/{idChatBot}GETDettaglio chatbot
/api/bots/POSTCrea chatbot
/api/bots/PUTAggiorna chatbot
/api/bots/{idChatBot}DELETEElimina chatbot
/api/bots/clone/{idChatBot}PUTDuplica chatbot
/api/bots/nameGETNome e stato bot attivo

Esempio: creazione chatbot

curl -X POST "https://chat.askme.it/api/bots/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"code": "sales-bot",
"name": "Bot Vendite",
"language": "it",
"active": true
}'

Workflow del chatbot

EndpointMetodoDescrizione
/api/bots/structure/{idChatBot}GETRecupera struttura workflow
/api/bots/structure/{idChatBot}PUTAggiorna struttura workflow
/api/bots/actionsGETAzioni disponibili
/api/bots/conditionsGETCondizioni disponibili

Esempio: lettura workflow

curl -X GET "https://chat.askme.it/api/bots/structure/12" \
-H "X-AskmeToken: {api_token}"

Risposta (200 OK)

{
"idChatBot": 12,
"rootNodeId": 1,
"nodes": {
"1": {
"idNode": 1,
"title": "Benvenuto",
"message": "Ciao, come posso aiutarti?"
}
}
}

Intent

EndpointMetodoDescrizione
/api/bots/intents/allGETTutti gli intent
/api/bots/{idChatBot}/intents/GETIntent del bot
/api/bots/{idChatBot}/intents/POSTCrea intent
/api/bots/{idChatBot}/intents/PUTAggiorna intent
/api/bots/{idChatBot}/intents/multiple/POSTCreazione multipla
/api/bots/intents/{idIntent}GETDettaglio intent
/api/bots/intents/{idIntent}DELETEElimina intent
/api/bots/intents/{idIntent}/utterance/POSTAggiunge utterance

Esempio: creazione intent

curl -X POST "https://chat.askme.it/api/bots/12/intents/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"name": "saluto",
"description": "L'utente saluta",
"active": true,
"closeChat": false,
"closeWidget": false,
"reactivateChat": false
}'

Test, training e media

EndpointMetodoDescrizione
/api/bots/train/{idChatBot}POSTAddestra il bot
/api/bots/test/{idChatBot}?query=...GETTesta una risposta
/api/bots/test-widget/{idChatBot}GETConfigurazione widget di test
/api/bots/avatarPOSTUpload avatar (multipart/form-data)
/api/bots/avatar/{idChatBot}DELETERimuove avatar
/api/bots/upload-mediaPOSTUpload media per messaggi bot

Esempio: test risposta

curl -X GET "https://chat.askme.it/api/bots/test/12?query=ciao" \
-H "X-AskmeToken: {api_token}"

Askme AI

La specifica OpenAPI include un gruppo dedicato agli endpoint AI, oggi non presenti nella precedente pagina endpoints.

EndpointMetodoDescrizione
/api/ai/initialize-tenantPOSTInizializza tenant AI
/api/ai/initialize-entityPOSTInizializza entità AI
/api/ai/agentsGET, POST, PATCHLista / crea / aggiorna agenti
/api/ai/agents/{id}GETDettaglio agente
/api/ai/knowledge-bases/{id}GETDettaglio knowledge base
/api/ai/knowledge-bases/{kbId}/files/uploadPOSTUpload file KB
/api/ai/knowledge-bases/{kbId}/files/{fileId}/deleteDELETEElimina file KB
/api/ai/knowledge-bases/{kbId}/sites/createPOSTCrea sito da indicizzare
/api/ai/knowledge-bases/{kbId}/sites/{siteId}/updatePUTAggiorna sito indicizzato
/api/ai/knowledge-bases/{kbId}/sites/{siteId}/deleteDELETEElimina sito
/api/ai/web-scrapePOSTAvvia scraping web
/api/ai/scrape-statusGETStato scraping
/api/ai/suggestionPOSTSuggerimenti LLM
/api/ai/upload-filePOSTUpload file AI
/api/ai/usersPOSTCrea utente AI

Widget

La specifica usa il prefisso corretto:

/api/widget/

e non /api/widgets/.

EndpointMetodoDescrizione
/api/widget/GETElenco widget
/api/widget/{idChatWidget}GETDettaglio widget
/api/widget/POSTCrea widget
/api/widget/PUTAggiorna widget
/api/widget/{idChatWidget}DELETEElimina widget
/api/widget/clone/{idChatWidget}POSTDuplica widget
/api/widget/enable?idWidget={id}PUTAbilita widget
/api/widget/disable?idWidget={id}PUTDisabilita widget
/api/widget/upload-logoPOSTUpload logo
/api/widget/download-language-labelsGETScarica labels
/api/widget/export-language-labelsPOSTExport labels
/api/widget/import-language-labelsPOSTImport labels

Esempio: creazione widget

curl -X POST "https://chat.askme.it/api/widget/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"title": "Widget Supporto",
"description": "Widget sito principale",
"active": true,
"configuration": "{}",
"customCss": ""
}'

API keys

La specifica usa il gruppo:

/api/keys/

e non /api/api-keys/.

EndpointMetodoDescrizione
/api/keys/GETElenco API key
/api/keys/{idApiKey}GETDettaglio API key
/api/keys/POSTCrea API key
/api/keys/PUTAggiorna API key
/api/keys/enable/{idApiKey}PUTAbilita API key
/api/keys/disable/{idApiKey}PUTDisabilita API key
/api/keys/{idApiKey}DELETEElimina API key

Esempio

curl -X POST "https://chat.askme.it/api/keys/" \
-H "X-AskmeToken: {api_token}" \
-H "Content-Type: application/json" \
-d '{
"description": "Token integrazione CRM",
"active": true,
"validFrom": "2026-03-31T00:00:00Z",
"validTo": "2026-12-31T23:59:59Z"
}'

Altri gruppi funzionali

Configurazioni operative

EndpointMetodoDescrizione
/api/configuration/GET, POST, PUTConfigurazione generale
/api/configuration/appGETConfig app
/api/configuration/exportGETExport configurazione
/api/configuration/importPOSTImport configurazione
/api/configuration/update-business-hoursPUTAggiorna orari
/api/configuration/test-emailPOSTTest email
/api/configuration/complete-tutorialPOSTMarca tutorial completato

Campagne, tag e quick replies

EndpointMetodoDescrizione
/api/campaigns/GET, POST, PUTCRUD campagne
/api/campaigns/{idCampaign}GET, DELETEDettaglio / elimina campagna
/api/campaigns/enable/{idCampaign}PUTAbilita campagna
/api/campaigns/disable/{idCampaign}PUTDisabilita campagna
/api/campaigns/clone/{idCampaign}PUTDuplica campagna
/api/tags/GET, POST, PUTCRUD tag
/api/tags/{idTag}DELETEElimina tag
/api/quick-replies/GET, POST, PUTCRUD quick replies
/api/quick-replies/{idQuickReply}DELETEElimina quick reply
/api/quick-replies/all/{idUser}GETTutte le quick replies di un utente

Blacklist, team e gruppi

EndpointMetodoDescrizione
/api/blacklist/GET, POST, PUTCRUD blacklist
/api/blacklist/{idAddress}GET, DELETEDettaglio / elimina
/api/blacklist/enable/{idAddress}PUTAbilita elemento blacklist
/api/blacklist/disable/{idAddress}PUTDisabilita elemento blacklist
/api/teams/GET, POST, PUTCRUD team
/api/teams/{idTeam}GET, DELETEDettaglio / elimina team
/api/teams/users/{idTeam}GETUtenti del team
/api/groups/GET, POST, PUTCRUD gruppi
/api/groups/{idGroup}GET, DELETEDettaglio / elimina gruppo
/api/groups/users/{idGroup}GETUtenti del gruppo
/api/groups/rolesGETRuoli disponibili

Knowledge base e template

EndpointMetodoDescrizione
/api/knowledge-base/GET, POST, PUTCRUD articoli KB
/api/knowledge-base/{idKnowledgeBase}GET, DELETEDettaglio / elimina articolo
/api/templates/GET, POST, PUTTemplate email
/api/templates/{type}GETTemplate per tipo

Integrazioni

EndpointMetodoDescrizione
/api/integrations/askmedeskGET, POSTIntegrazione Askme Desk
/api/integrations/chat-widgetGETIntegrazione widget
/api/integrations/google-analyticsGET, POSTGoogle Analytics
/api/integrations/google-cloudGET, POSTGoogle Cloud
/api/integrations/google-mapsGET, POSTGoogle Maps
/api/integrations/telegramGET, POSTTelegram
/api/integrations/whatsappGET, POSTWhatsApp

Analytics

EndpointMetodoDescrizione
/api/analytics/started-chats-category-counterGETChat avviate per categoria
/api/analytics/started-chats-timelineGETTimeline chat avviate
/api/analytics/started-chats-slotsGETChat per fascia oraria
/api/analytics/abandoned-chats-countersGETChat abbandonate
/api/analytics/closed-chats-countersGETChat chiuse
/api/analytics/average-waiting-time-timelineGETTempo medio attesa
/api/analytics/average-closing-time-timelineGETTempo medio chiusura
/api/analytics/average-abandoning-time-timelineGETTempo medio abbandono
/api/analytics/closing-time-slotsGETTempo chiusura per fascia
/api/analytics/rating-countersGETDistribuzione rating
/api/analytics/browser-countersGETBrowser usati
/api/analytics/languages-chats-countersGETLingue chat
/api/analytics/charged-chats-operatorsGETChat per operatore
/api/analytics/operators-metricsGETMetriche operatori
/api/analytics/tags-chats-counterGETDistribuzione tag
/api/analytics/required-chat-effortGETEffort richiesto
/api/analytics/real-timeGETDashboard real-time
/api/analytics/starting-pagesGETPagine di ingresso
/api/analytics/starting-pages-countersGETContatori pagine ingresso

Endpoint pubblici del widget

Gli endpoint pubblici restano utili lato frontend/widget e non richiedono token. Nella documentazione attuale sono usati anche negli esempi e nei webhook.

EndpointMetodoDescrizione
/public/api/widgetGETConfigurazione widget pubblico
/public/api/chat/categoriesGETCategorie esposte al widget
/public/api/chat/queue-position/GETPosizione in coda
/public/api/chat/rating/POSTInvio rating chat
/public/api/chat/transcription/GETInvio trascrizione via email
/public/api/chat/contact-request-email/GETRichiesta contatto email
/public/api/chat/contact-request-phone/GETRichiesta contatto telefonico
/public/api/chat/add-navigation-pagePOSTTracciamento navigazione utente
/public/api/chat/input/validatePOSTValidazione input
/public/api/attachments/uploadPOSTUpload allegato
/public/api/attachments/GETInfo allegato
/public/api/attachments/downloadGETDownload allegato
/public/api/attachments/imageGETAnteprima allegato
/public/api/attachments/{uuid}DELETEElimina allegato
/public/api/bot/avatarGETAvatar pubblico bot
/public/api/bot/mediaGETMedia pubblico bot
/public/api/healthGETHealth check
/public/api/versionGETVersione applicazione

WebSocket

La messaggistica realtime usa WebSocket/STOMP.

ws://chat.askme.it/websocket

Header di connessione

HeaderDescrizione
ASKMECHAT_WS_USERUsername
ASKMECHAT_WS_PASSWORDPassword

Prefissi

PrefissoUso
/appInvio verso server
/topicSottoscrizione topic

Gestione errori

CodiceDescrizione
200Richiesta completata con successo
201Risorsa creata
204Completato senza contenuto
400Parametri non validi
401Token non valido o mancante
403Permessi insufficienti
404Risorsa non trovata
429Rate limit superato
500Errore interno del server

Note operative

  • Il token X-AskmeToken va inviato in tutte le chiamate autenticate.
  • Le date in query sono esposte come date-time ISO 8601.
  • Gli array in query string vengono passati come parametri multipli, per esempio ?categories=1&categories=3.
  • Per gli export /api/chat/exportChats e /api/chat/exportChatsWithContent i filtri supportati sono gli stessi della lista chat.