Skip to content

Panoramica API

La REST API di Queria consente di integrare le funzionalita di ricerca documentale intelligente, chat AI e gestione documenti all'interno di qualsiasi applicazione.

Base URL

Tutte le richieste API utilizzano il seguente base URL:

https://api.queria.pro

L'API segue il versionamento tramite path. La versione corrente e v3.1.0. Gli endpoint pubblici sono accessibili sotto /api/public/, mentre quelli autenticati sotto /api/.

Formato delle Risposte

Tutte le risposte sono in formato JSON con una struttura consistente.

Risposta di successo:

json
{
  "success": true,
  "data": {
    "id": "doc_8f3a2b1c",
    "name": "Contratto Fornitura 2025",
    "status": "VECTORIZED",
    "createdAt": "2026-02-15T10:30:00Z"
  }
}

Risposta con paginazione:

json
{
  "success": true,
  "data": {
    "items": [],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 143,
      "totalPages": 8
    }
  }
}

Risposta di errore:

json
{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Il campo 'message' e obbligatorio.",
    "details": [
      { "field": "message", "reason": "Campo richiesto" }
    ]
  }
}

Codici di Stato HTTP

CodiceSignificatoDescrizione
200OKRichiesta completata con successo
201CreatedRisorsa creata con successo
400Bad RequestParametri mancanti o non validi
401UnauthorizedAutenticazione mancante o non valida
403ForbiddenPermessi insufficienti per l'operazione
404Not FoundRisorsa non trovata
429Too Many RequestsLimite di richieste superato
500Internal Server ErrorErrore interno del server

Rate Limiting

L'API applica limiti di frequenza per garantire stabilita e prestazioni.

Tipo di EndpointLimiteFinestra
Endpoint pubblici60 richieste1 minuto
Endpoint autenticati300 richieste1 minuto
Upload documenti10 richieste1 minuto
Chat streaming20 richieste1 minuto

Le risposte includono header informativi sul rate limit:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1709542800

Quando il limite viene superato, l'API restituisce un errore 429:

json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Limite di richieste superato. Riprova tra 23 secondi.",
    "retryAfter": 23
  }
}

Content-Type

Tutte le richieste JSON devono includere l'header:

Content-Type: application/json

Per gli upload di file, utilizzare:

Content-Type: multipart/form-data

Autenticazione

L'API supporta due metodi di autenticazione:

  • JWT Token: per sessioni utente nelle applicazioni web. Incluso tramite header Authorization: Bearer {token}.
  • API Key: per integrazioni server-to-server e widget. Inclusa tramite header X-API-Key.

Le API Key seguono il formato qk_live_* per la produzione e qk_test_* per gli ambienti di test.

Per i dettagli completi, consulta la guida all'autenticazione.

Esempio Rapido

Una chiamata tipica alla chat API con autenticazione tramite API Key:

bash
curl -X POST https://api.queria.pro/api/public/chat/stream \
  -H "Content-Type: application/json" \
  -H "X-API-Key: qk_live_abc123def456ghi789" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Quali sono le clausole principali del contratto?",
    "sessionId": "sess_a1b2c3d4"
  }'

Risposta streaming (Server-Sent Events):

data: {"type":"token","content":"Le clausole"}
data: {"type":"token","content":" principali del contratto"}
data: {"type":"token","content":" sono le seguenti [1]:"}
data: {"type":"sources","sources":[{"id":"doc_8f3a","name":"Contratto Fornitura","score":0.92}]}
data: {"type":"done","citationMap":{"1":{"documentId":"doc_8f3a","chunkId":"chk_001"}}}

Endpoint Principali

Autenticazione

MetodoEndpointDescrizione
POST/api/auth/loginLogin utente
POST/api/auth/registerRegistrazione
POST/api/auth/refreshRefresh token
POST/api/auth/logoutLogout

Chat

MetodoEndpointDescrizione
GET/api/conversationsLista conversazioni
POST/api/conversationsNuova conversazione
POST/api/chat/messageInvia messaggio
POST/api/chat/streamChat streaming

Documenti

MetodoEndpointDescrizione
GET/api/documentsLista documenti
POST/api/documents/uploadUpload documento
GET/api/documents/:idDettaglio documento
PUT/api/documents/:idAggiorna documento
DELETE/api/documents/:idElimina documento

Topics

MetodoEndpointDescrizione
GET/api/topicsLista categorie
POST/api/topicsCrea categoria
PUT/api/topics/:idAggiorna categoria
DELETE/api/topics/:idElimina categoria

Aziende

MetodoEndpointDescrizione
GET/api/companiesLista aziende
GET/api/companies/:idDettaglio azienda
PUT/api/companies/:idAggiorna azienda

API Pubbliche (Widget)

MetodoEndpointDescrizione
POST/api/public/chatChat non-streaming
POST/api/public/chat/streamChat streaming SSE
POST/api/public/search/webRicerca web
GET/api/public/topicsLista categorie

Paginazione

Query parameters standard per le liste:

ParametroDefaultDescrizione
page1Numero pagina
limit20Elementi per pagina (max 100)
sortcreatedAtCampo ordinamento
orderdescDirezione: asc o desc

Esempio:

bash
curl -X GET "https://api.queria.pro/api/documents?page=2&limit=50&sort=name&order=asc" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."

Webhook (Coming Soon)

Notifiche per eventi asincroni:

  • document.uploaded - Documento caricato
  • document.vectorized - Elaborazione completata
  • document.error - Errore di elaborazione
  • conversation.created - Nuova conversazione

SDK

SDK ufficiali in fase di sviluppo:

  • JavaScript / TypeScript
  • Python
  • PHP

Nel frattempo, utilizza la REST API direttamente con qualsiasi client HTTP.

Prossimi Passi

Queria - Document Intelligence con Cog-RAG