API v2

Usa la API REST v2 per la gestione degli agenti, la chat in streaming, le conversazioni, il feedback, le fonti, i contatti, i lead e le impostazioni.

API v2 è una API REST strutturata per gestire gli agenti e creare esperienze di chat personalizzate. Aggiunge la gestione degli agenti, la chat in streaming, la cronologia delle conversazioni, il feedback dei messaggi, i contatti, i lead, le fonti, le impostazioni e gli endpoint di addestramento.

L'accesso API richiede un piano Hobby o superiore con fatturazione attiva.

URL di base

https://your-domain.com/api/v2

Autenticazione

Ad eccezione del controllo di stato, invia la chiave API del tuo workspace come token Bearer:

Authorization: Bearer YOUR_API_KEY

Crea e revoca le chiavi API da Impostazioni > Chiavi API.

Formato della risposta

La maggior parte delle risposte con esito positivo restituisce un oggetto risorsa oppure un envelope data:

{
  "data": []
}

Gli endpoint di elenco includono la paginazione tramite cursore:

{
  "data": [],
  "pagination": {
    "cursor": null,
    "hasMore": false,
    "total": 0
  }
}

Gli errori usano un oggetto error strutturato:

{
  "error": {
    "code": "VALIDATION_INVALID_BODY",
    "message": "Invalid request body"
  }
}

Ogni risposta v2 include un'intestazione x-request-id. Includila quando contatti il supporto per una richiesta API.

Ambito delle conversazioni

Gli endpoint di sola lettura per le conversazioni usano per impostazione predefinita source=api_v2. Imposta source=widget per restituire le conversazioni del widget e del Playground; le righe del Playground sono memorizzate con la fonte widget. Imposta source=all per restituire le conversazioni API v2, widget e Playground. I risultati restano sempre limitati all'agente dell'account autenticato. Un valore source non valido, o più di un parametro di query source, restituisce 400 VALIDATION_INVALID_BODY. La prosecuzione della chat, i tentativi di rigenerazione, il feedback, l'elenco dei messaggi e le letture per utente restano limitati alle conversazioni API v2.

Controllo di stato

GET /api/v2/health

Il controllo di stato non richiede autenticazione.

Successo: 200 OK

{
  "status": "ok",
  "timestamp": 1784332800
}

timestamp è il timestamp Unix corrente, in secondi.

Chat

POST /api/v2/agents/{agentId}/chat

Richiesta:

{
  "message": "What plans do you offer?",
  "conversationId": "optional-existing-conversation-id",
  "userId": "optional-user-id",
  "stream": true
}
CampoObbligatorioNote
messageDa 1 a 32.000 caratteri.
conversationIdNoContinua una conversazione API v2. Gli ID sconosciuti restituiscono 404.
userIdNoID utente finale stabile per raggruppare le conversazioni API. Sono ammessi lettere, numeri, ., _ e -.
streamNoIl valore predefinito è true. Imposta false per ottenere un'unica risposta JSON.

Le risposte in streaming usano i Server-Sent Events. Lo stream include gli eventi message-start, text-start, text-delta, text-end, message-metadata, finish e [DONE]. Un errore dello stream o dell'hook di completamento genera un evento error con error.code impostato su CHAT_STREAMING_ERROR; questo codice, valido solo nel protocollo SSE, è separato dal catalogo degli errori REST strutturato. message-metadata contiene l'ID del messaggio dell'assistente quando la persistenza va a buon fine, oltre all'ID della conversazione, all'ID utente, al motivo di conclusione e all'utilizzo. Il suo messageId è null quando non è stato persistito alcun messaggio dell'assistente. Quando la risposta si ferma su un'azione lato client, lo stream emette anche un evento tool-call con { "id", "name", "arguments" }; invia l'esito all'endpoint tool-result per riprendere la conversazione — la risposta a quella richiesta trasmette in streaming la continuazione.

Le risposte non in streaming restituiscono:

{
  "data": {
    "id": "123",
    "role": "assistant",
    "parts": [{ "type": "text", "text": "..." }],
    "pendingToolCall": null,
    "metadata": {
      "userMessageId": "122",
      "conversationId": "abc123",
      "userId": "user_123",
      "finishReason": "stop",
      "usage": { "credits": 1 }
    }
  }
}

Nelle risposte non in streaming, i valori data.id e metadata.userMessageId sono ID numerici dei messaggi serializzati come stringhe, oppure null quando il messaggio corrispondente non è stato persistito. metadata.userId è l'ID utente fornito/memorizzato, oppure null. pendingToolCall è null, a meno che la risposta non si sia fermata su una chiamata a uno strumento lato client; in tal caso contiene { "id", "name", "arguments" } per l'endpoint dei risultati degli strumenti.

Riepilogo degli endpoint

MetodoEndpointDescrizioneRiferimento
GET/api/v2/healthControlla lo stato dell'API.Controllo di stato
GET/api/v2/agentsElenca gli agenti.Agenti e impostazioni
POST/api/v2/agentsCrea un agente.Agenti e impostazioni
GET/api/v2/agents/{agentId}Recupera un agente.Agenti e impostazioni
PATCH/api/v2/agents/{agentId}Aggiorna il nome o l'URL dell'agente.Agenti e impostazioni
DELETE/api/v2/agents/{agentId}Elimina un agente.Agenti e impostazioni
POST/api/v2/agents/{agentId}/chatInvia un messaggio di chat.Chat
GET/api/v2/agents/{agentId}/conversationsElenca le conversazioni per fonte.Conversazioni
GET/api/v2/agents/{agentId}/conversations/exportEsporta le conversazioni con i messaggi.Conversazioni
GET/api/v2/agents/{agentId}/conversations/{conversationId}Recupera una conversazione per fonte.Conversazioni
GET/api/v2/agents/{agentId}/conversations/{conversationId}/messagesElenca i messaggi in una conversazione API v2.Conversazioni
POST/api/v2/agents/{agentId}/conversations/{conversationId}/retryRiprova una risposta dell'assistente API v2.Conversazioni
POST/api/v2/agents/{agentId}/conversations/{conversationId}/tool-resultInvia un risultato di uno strumento lato client.Conversazioni
PATCH/api/v2/agents/{agentId}/conversations/{conversationId}/messages/{messageId}/feedbackImposta o cancella il feedback di un messaggio dell'assistente.Conversazioni
GET/api/v2/agents/{agentId}/users/{userId}/conversationsElenca le conversazioni API v2 di un utente finale.Conversazioni
GET/api/v2/agents/{agentId}/sourcesElenca le fonti di addestramento.Fonti e addestramento
POST/api/v2/agents/{agentId}/sources/textAggiungi una fonte di testo.Fonti e addestramento
POST/api/v2/agents/{agentId}/sources/qnaAggiungi una fonte Q&A.Fonti e addestramento
POST/api/v2/agents/{agentId}/sources/urlAggiungi o riaddestra una fonte URL.Fonti e addestramento
POST/api/v2/agents/{agentId}/sources/file/upload-urlCrea URL firmati per il caricamento diretto dei file.Fonti e addestramento
POST/api/v2/agents/{agentId}/sources/fileRegistra i file caricati e avvia l'elaborazione.Fonti e addestramento
DELETE/api/v2/agents/{agentId}/sources/{documentId}Elimina una fonte.Fonti e addestramento
GET/api/v2/agents/{agentId}/contactsElenca i contatti.Contatti
POST/api/v2/agents/{agentId}/contactsCrea o aggiorna un contatto tramite ID esterno.Contatti
POST/api/v2/agents/{agentId}/contacts/importCrea o aggiorna i contatti in blocco.Contatti
GET/api/v2/agents/{agentId}/leadsElenca i lead raccolti.Contatti e lead
GET/PATCH/api/v2/agents/{agentId}/settings/aiLeggi o aggiorna le impostazioni AI.Agenti e impostazioni
GET/PATCH/api/v2/agents/{agentId}/settings/designLeggi o aggiorna le impostazioni di design.Agenti e impostazioni
GET/PATCH/api/v2/agents/{agentId}/settings/securityLeggi o aggiorna le impostazioni di sicurezza.Agenti e impostazioni
GET/PATCH/api/v2/agents/{agentId}/settings/notificationsLeggi o aggiorna le impostazioni di notifica.Agenti e impostazioni
GET/PATCH/api/v2/agents/{agentId}/settings/trainingLeggi o aggiorna le impostazioni di addestramento.Agenti e impostazioni
GET/api/v2/agents/{agentId}/channels/instagramOttieni la connessione Instagram, le automazioni e gli spunti di conversazione.Canale Instagram
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/automations/{key}Leggi o aggiorna un'automazione Instagram.Canale Instagram
GET/PATCH/api/v2/agents/{agentId}/channels/instagram/conversation-startersLeggi o aggiorna gli spunti di conversazione di Instagram.Canale Instagram
GET/api/v2/agents/{agentId}/trainRecupera lo stato di addestramento.Fonti e addestramento
POST/api/v2/agents/{agentId}/trainAvvia il riaddestramento delle fonti web.Fonti e addestramento

Feedback

Usa il feedback per contrassegnare i messaggi dell'assistente API v2 come positive, negative o null. Consulta Conversazioni, messaggi e feedback per lo schema della richiesta, la risposta e la gestione degli errori.

Paginazione

Tratta i cursori come token opachi restituiti dalla API. Riproponi il valore di pagination.cursor invariato nella richiesta successiva; non costruirlo né decodificarlo.

QueryNote
limitIl valore predefinito è 20. Deve essere un intero da 1 a 100, a meno che un endpoint non documenti un massimo inferiore; l'esportazione delle conversazioni ha un massimo di 20.
cursorCursore opaco restituito dalla pagina precedente. I cursori non validi restituiscono 400 VALIDATION_INVALID_BODY.

I contatti accettano anche search. I lead accettano i filtri di data e ora ISO 8601 inclusivi createdAfter e createdBefore. Le fonti accettano sourceType con i valori web_crawl, file_upload, text_snippet o qna_entry.

Il formato dei cursori è un dettaglio implementativo interno. I client devono trattare ogni cursore come opaco e riproporlo invariato, senza costruirlo né decodificarlo.

Errori comuni

CodiceSignificato
AUTH_INVALID_API_KEYLa chiave API Bearer non può essere validata.
SUBSCRIPTION_PLAN_REQUIREDIl piano del workspace non include l'accesso API.
AGENT_NOT_FOUNDL'agente non esiste o non appartiene all'account della chiave API.
VALIDATION_INVALID_BODYUn corpo della richiesta, un valore di percorso, un parametro di query, il limite o il cursore non ha superato la validazione.

Consulta il catalogo completo degli errori API v2 per tutti i 27 codici dichiarati, gli stati HTTP, le cause scatenanti e i codici riservati.

Riferimento

Prossimi passi