Developer API
API per sviluppatori

La guida definitiva alle API per sviluppatori

Questo documento è il riferimento API ufficiale ed esaustivo per l'intera piattaforma AI Chirps. Abbiamo mappato ogni endpoint sicuro per gli sviluppatori nel sistema. Puoi replicare a livello di codice il 100% delle funzionalità della dashboard senza testa.

Developer API

1. Autenticazione e principi fondamentali

URL di base: "https://chirps.cc".

Tutti gli endpoint API richiedono una chiave API Chirps nell'intestazione "Authorization". Puoi generare una chiave API dal Gestore API nella sezione Sviluppatori della dashboard.

http
Authorization: Bearer <YOUR_CHIRPS_API_KEY>

Esempio di richiesta:

bash
curl -X GET https://chirps.cc/api/billing/usage \
  -H "Authorization: Bearer <YOUR_CHIRPS_API_KEY>" \
  -H "Content-Type: application/json"

Gestione degli errori standard

Codice di statoDescrizione
"200 OK".La richiesta ha avuto successo.
"400 Richiesta errata".Convalida del payload JSON non riuscita. Include una matrice di dettagli.
"401 Non autorizzato".Token mancante o scaduto.
"402 Pagamento richiesto".L'area di lavoro ha raggiunto i limiti di fatturazione.
"403 Proibito".L'utente non dispone delle autorizzazioni RBAC richieste.
"404 Non trovato".La risorsa richiesta non esiste.
"Errore server 500".Errore imprevisto della piattaforma.
Developer API

2. Ciclo di vita dell'assistente (creazione)

GET /api/assistents

Elenco Assistenti

Recupera un elenco di tutti gli assistenti associati all'area di lavoro della chiave API.

Crea un assistente

"POST" /api/assistenti

Crea un nuovo assistente con tutte le configurazioni di base.

json
{

  "businessName": "Acme Corp",
  "businessUrl": "https://acme.com",
  "knowledgeBaseType": "both",
  "knowledgeBaseUrl": "https://acme.com/help",
  "knowledgeBaseText": "Raw text content of a document...",
  "knowledgeBaseFileName": "company_handbook.pdf",
  "language": "en",
  "isMultiLanguage": false,
  "tonePersonality": "professional",
  "isCustomPersonality": false,
  "supportEmail": "[email protected]",
  "maxPages": 5,
  "maxDepth": 2,
  "welcomeMessageDelay": 2
}
ParametroTipoNecessarioDescrizione
"nomeazienda".CordaNome dell'attività (2-100 caratteri).
"URLaziendale".CordaURL valido del sito web aziendale (max 500 caratteri).
"knowledgeBaseType".EnumUno tra: "url", "documento", "entrambi", "nessuno".
"knowledgeBaseUrl".CordaNODeve essere fornito se il tipo è "url" o "entrambi".
"knowledgeBaseText".CordaNOTesto non elaborato se il tipo è "documento" o "entrambi".
"knowledgeBaseFileName".CordaNONome del file caricato se si fornisce testo.
"linguaggio".CordaCodice della lingua (ad esempio, "en", "es").
"isMultiLanguage".BooleanoNOAbilita la traduzione automatica. Predefinito "falso".
"tonoPersonalità".CordaAd esempio, "professionale", "amichevole". Massimo 100 caratteri.
"isCustomPersonality".BooleanoNOAbilita tono personalizzato. Predefinito "falso".
"customPersonalityDescription".CordaNOIstruzioni tono personalizzato se abilitato (max 2000 caratteri).
"Istruzioni aggiuntive".CordaNOIstruzioni del prompt principale (max 10000 caratteri).
"E-mail di supporto".CordaIndirizzo email valido per l'escalation.
"maxPages".NumeroNOPagine da scansionare. Min 1, Max 100. Impostazione predefinita "5".
"Profondità massima".NumeroNOProfondità di scansione. Min 1, Max 20. Impostazione predefinita "2".
"welcomeMessageDelay".NumeroNORitardo in secondi prima del saluto. Min 0, Max 6. Impostazione predefinita "2".

Elimina assistente

DELETE /api/assistants/:id

Elimina in modo permanente l'assistente ed elimina a catena tutti i relativi nodi di conoscenza e la cronologia. Nessun carico utile richiesto.

Developer API

3. Assistente analisi e statistiche

Immediatamente dopo la creazione e l'utilizzo, puoi recuperare a livello di codice le metriche sulle prestazioni dell'assistente.

GET /api/analytics/overview?assistantId=uuid&range=30

Recupera statistiche sull'utilizzo, messaggi totali, lead acquisiti e metriche generali sul coinvolgimento per l'assistente specificato. Il parametro "intervallo" è facoltativo (numero di giorni, minimo 7, massimo 365, predefinito 30).

Risposta prevista

json
{

  "totalConversations": 1245,
  "totalMessages": 8420,
  "totalLeads": 156,
  "totalBookings": 42,
  "satisfactionRate": 94,
  "avgMessagesPerSession": 6.7,
  "avgSessionsPerDay": 41.5,
  "liveNow": 3,
  "onlineNow": 12,
  "dailySeries": [
    {
      "date": "2026-07-15",
      "conversations": 45,
      "messages": 310,
      "leads": 5,
      "bookings": 2
    }
  ],
  "agentStats": [
    {
      "name": "Jane Doe",
      "messagesSent": 120,
      "csat": 98
    }
  ]
}
ProprietàTipoDescrizione
"conversazioni totali".NumeroNumero totale di sessioni di chat gestite dall'assistente.
"Messaggi totali".NumeroNumero totale di messaggi (utente + AI) inviati in tutte le conversazioni.
"Lead totali".NumeroNumero totale di lead univoci (nome, email, telefono) estratti.
"Prenotazioni totali".NumeroNumero totale di appuntamenti del calendario prenotati con successo.
"Tasso di soddisfazione".NumeroPercentuale (0-100) di valutazioni di feedback positivo rispetto alle valutazioni totali.
"avgMessagesPerSession".NumeroNumero medio di messaggi scambiati per conversazione.
"avgSessionsPerDay".NumeroNumero medio di conversazioni al giorno nell'intervallo richiesto.
"liveNow".NumeroNumero di conversazioni attive attualmente prese in carico da un agente umano.
"onlineNow".NumeroNumero di utenti che hanno chattato attivamente con l'IA negli ultimi 2 minuti.
"Seriequotidiana".VettoreMatrice di oggetti giornalieri contenenti conteggi per "conversazioni", "messaggi", "lead" e "prenotazioni" per data.
"agentStats".VettoreMetriche delle prestazioni per agenti umani, inclusi "messagesSent" e "csat" (punteggio di soddisfazione del cliente).
Developer API

4. Conoscenza e formazione

Una volta creato un assistente, gestisci il suo cervello tramite "Nodi di conoscenza". Ogni nodo rappresenta una porzione di dati (un URL scansionato, un documento caricato o uno snippet di testo manuale).

Gestione dei nodi di conoscenza

GET /api/assistants/:id/nodes - Elenca tutti i nodi di conoscenza per questo assistente.

POST /api/assistants/:id/nodes - Inserisce manualmente un nuovo blocco di conoscenza.

json
{

  "title": "Return Policy",
  "refined_content": "We offer a 30-day return policy for all unused items...",
  "type": "text",
  "metadata": {}
}

PATCH /api/assistants/:id/nodes/:nodeId - Modifica il contenuto di un nodo esistente o ne attiva lo stato attivo.

json
{

  "title": "Updated Return Policy",
  "refined_content": "We offer a 60-day return policy now...",
  "is_active": true
}

DELETE /api/assistants/:id/nodes/:nodeId - Elimina completamente un blocco di conoscenza.

POST /api/assistants/:id/nodes/:nodeId/re-crawl - Forza lo scraper a ripetere la scansione dell'URL associato a questo nodo e ad aggiornarne il contenuto. Carico utile: "{}".

Formazione sull'intelligenza artificiale

POST /api/assistants/:id/train - Compila tutti i nodi di conoscenza is_active e utilizza un orchestratore AI per sintetizzare dinamicamente un nuovo prompt del sistema principale. Carico utile: "{}".

Developer API

5. Aspetto e configurazione del widget

Personalizza l'interfaccia utente del frontend del fumetto dell'assistente e della finestra di chat.

Aggiorna l'aspetto del widget

PATCH /api/assistants/:id/widget-config

json
{

  "primaryColor": "#000000",
  "position": "bottom-right",
  "language": "en",
  "welcomeMessage": "Hi! How can I help you today?",
  "title": "Acme Support",
  "theme": "light",
  "fontFamily": "default",
  "bubbleStyle": "circle",
  "bubbleText": "Chat with us",
  "headerSubtitle": "We typically reply instantly",
  "inputPlaceholder": "Type your message...",
  "privacyPolicyUrl": "https://acme.com/privacy",
  "voiceEnabled": true,
  "voiceName": "Fenrir",
  "welcomeMessageDelay": 2,
  "fileUploadEnabled": true,
  "dictationEnabled": true,
  "copilotEnabled": true,
  "welcomeSuggestions": ["Pricing plans", "Contact sales"],
  "pageVisibility": {
    "mode": "all",
    "paths": []
  }
}
ParametroTipoNecessarioDescrizione
"Coloreprimario".CordaNOCodice colore esadecimale (ad esempio, "#000000").
"posizione".EnumNO"in basso a destra", "in basso a sinistra", "in alto a destra", "in alto a sinistra".
"linguaggio".CordaNOCodice della lingua del widget (ad esempio, "en", "fr").
"Messaggio di benvenuto".CordaNOIl messaggio di saluto iniziale.
"titolo".CordaNOIl titolo nell'intestazione del widget.
"tema".EnumNO"chiaro" o "scuro".
"fontFamily".EnumNO"default" (Inter) o "eredita".
"BubbleStyle".EnumNO"cerchio", "barra", "cassetto", "cerchio-marchiato", "barra-marchio", "cassetto-marchiato".
"testobolla".CordaNOTesto da visualizzare accanto alla bolla (per gli stili barra/cassetto).
"intestazioneSottotitolo".CordaNOSottotitolo nell'intestazione del widget.
"inputPlaceholder".CordaNOTesto segnaposto per l'input del messaggio.
privacyPolicyUrlCordaNOURL della tua informativa sulla privacy.
avatarUrlCordaNOURL dell'immagine avatar personalizzata.
"customLogoUrl".CordaNOURL dell'immagine del logo dell'intestazione personalizzata.
"VoiceEnabled".BooleanoNOAbilita le chiamate vocali.
"nomevoce".CordaNOL'identità vocale per le risposte audio. Vedi le voci disponibili di seguito.
"welcomeMessageDelay".NumeroNORitardo in secondi prima del saluto.
"fileUploadAbilitato".BooleanoNOConsenti agli utenti di caricare allegati.
"dettatura abilitata".BooleanoNOAbilita la dettatura vocale (discorso in testo).
"copilotEnabled".BooleanoNOAbilita i chip di suggerimento del copilota.
benvenutiSuggerimentiVettoreNOMatrice di stringhe per i chip di risposta rapida iniziali.
"visibilitàpagina".OggettoNODetermina su quali pagine appare il widget (modalità, percorsi).
"rateLimitEnabled".BooleanoNOAbilita la limitazione della velocità della chat. Predefinito vero.
"rateLimitMaxMessages".NumeroNONumero massimo di messaggi nella finestra. Predefinito 30.
"rateLimitTimeWindow".NumeroNOFinestra temporale in minuti. Predefinito 60.
"gdprDataMaskingEnabled".BooleanoNOMaschera le PII prima di salvare. Predefinito falso.

Nomi vocali disponibili

  • Femmina: Zephyr, Aoede, Core, Leda, Callirrhoe, Despina, Erinome, Laomedeia, Achernar, Pulcherrima, Gacrux, Algenib, Sulfat
  • Maschio: Puck, Caronte, Fenrir, Orus, Encelado, Giapeto, Umbriel, Algieba, Autonoe, Rasalgethi, Alnilam

Logo personalizzato

POST /api/assistants/:id/widget-logo

Formato: multipart/form-data con campo file.

Developer API

6. Integrazione e distribuzione

Una volta configurato e addestrato il tuo assistente, hai due modi principali per distribuirlo:

Opzione A: incorporamento Web (frontend)

Il modo più semplice per integrare l'assistente in un sito web standard (WordPress, Shopify, React, ecc.). Il codice di incorporamento è puramente deterministico. Non è necessario un endpoint per recuperarlo. Inserisci semplicemente questo nel <head> del tuo sito:

json
<script src="https://chirps.cc/widget.js" data-assistant-id="YOUR_ASSISTANT_ID_HERE"></script>

Opzione B: integrazioni headless (backend/CRM/bot)

Se stai creando un client personalizzato (come un bot Discord, un'integrazione di Telegram o un'app iOS nativa), NON utilizzerai il Web Embed. Interagirai invece direttamente con l'endpoint /api/chat.

POST /api/chat o /api/chat?stream=true

Nota: questo endpoint è pubblico e *non* richiede l'intestazione della chiave API Authorization: Bearer. L'autenticazione viene gestita implicitamente tramite "assistantId".

json
{

  "assistantId": "123e4567-e89b-12d3-a456-426614174000",
  "sessionId": "unique-session-id-for-user",
  "conversationId": "optional-uuid",
  "message": "Hello, I need help with my billing."
}

*(Supporta anche multipart/form-data con un campo file per gli allegati se fileUploadEnabled è true).*

ParametroTipoNecessarioDescrizione
"IDassistente".CordaL'UUID dell'assistente.
"ID sessione".CordaGeneralo tu. Un identificatore univoco dal tuo sistema per raggruppare la cronologia della chat (ad esempio, un ID utente Discord, un ID chat di Telegram o un UUID casuale).
"messaggio".CordaIl contenuto testuale del messaggio (max 5000 caratteri).
"ID conversazione".CordaNOL'UUID della conversazione (restituito nella prima richiesta).
"id".CordaNOID messaggio lato client facoltativo per impedire la deduplicazione.

Modalità 1: risposta JSON standard (impostazione predefinita)

Inviando una richiesta POST a "/api/chat" (senza il parametro stream), attendi la risposta AI completa e ricevi un oggetto JSON standard.

json
{

  "message": "Here is the information you requested...",
  "conversationId": "uuid-of-conversation",
  "messageId": "uuid-of-message"
}

*(Se viene restituito is_active_agent: true, un essere umano ha preso il controllo della chat e message sarà null.)*

Modalità 2: streaming di eventi inviati dal server (?stream=true)

Aggiungendo ?stream=true all'URL, riceverai un flusso SSE (Server-Sent Events) in tempo reale. Il tuo codice dovrebbe essere in ascolto di questi tipi di eventi specifici:

  • `event: token`: contiene {"text": "chunk"}. Attivato per ogni porzione del testo di risposta dell'IA.
  • `event: status`: contiene {"text": "Ricerca nella knowledge base..."}. Rappresenta gli stati di esecuzione dello strumento backend.
  • `event: done`: contiene {"messageId": "uuid", "conversationId": "uuid", "message": "testo completo"}. Licenziato quando la generazione è completamente terminata.
  • `event: error`: contiene {"error": "Messaggio di errore"}. Attivato se si verificano limiti di velocità o errori.

Endpoint di acquisizione in tempo reale

GET /api/chat/sessions

Recupera sessioni storiche.

POST /api/chat/toggle-agent

Metti in pausa l'IA per consentire l'acquisizione da parte degli esseri umani. Carico utile: { "sessionId": "..." }

POST /api/chat/messaggio-agente

Invia un messaggio umano. Carico utile: { "sessionId": "...", "message": "..." }

Developer API

7. Impostazioni dell'assistente avanzato

PATCH /api/assistants/:id

Aggiorna la configurazione principale

Modifica le impostazioni principali, la personalità e i limiti dell'assistente.

json
{

  "business_name": "Acme Corp",
  "business_url": "acme.com",
  "business_description": "We sell anvils.",
  "system_prompt": "You are a helpful assistant.",
  "language": "en",
  "tone_personality": "Friendly",
  "support_email": "[email protected]",
  "additional_instructions": "Never mention the Roadrunner.",
  "is_multi_language": true,
  "is_dev_mode": false,
  "is_active": true,
  "max_pages": 15,
  "max_depth": 2,
  "widget_config_merge": {
    "rateLimitEnabled": true
  }
}

*Nota: tutti i campi sono facoltativi. Invia solo i campi che desideri aggiornare.*

Elimina assistente

DELETE /api/assistants/:id

Elimina in modo permanente l'assistente e l'eliminazione a cascata si estende a tutti i nodi di conoscenza, conversazioni e messaggi. Se l'assistente non è mai stato completamente configurato, rimborsa la quota di creazione mensile.

Developer API

8. Telefonia e voce

GET /api/phone-numbers - Elenca i numeri disponibili.

POST /api/phone-numbers/:id/assign - Fornisci un numero. Carico utile: "{}".

POST /api/assistants/:id/outbound - Attiva la chiamata in uscita. Carico utile: { "a": "+123...", "messaggio": "..." }

Developer API

9. Estrazione dei lead

GET /api/leads?assistantId=uuid&page=1&limit=50&status=new - Recupera i lead strutturati e impaginati estratti dall'intelligenza artificiale durante le conversazioni.

GET /api/leads?id=leadId: recupera i dettagli di un singolo lead, inclusa la trascrizione completa della conversazione.

Developer API

10. Prenotazioni e calendario

GET /api/bookings?assistantId=uuid&start=ISO-8601&end=ISO-8601 - Recupera gli appuntamenti del calendario pianificati dall'assistente, facoltativamente filtrati per data.

GET /api/bookings?id=bookingId - Recupera i dettagli di una singola prenotazione, inclusa la trascrizione della conversazione.

POST /api/bookings/cancel - Annulla una prenotazione attiva. Carico utile: { "bookingId": "uuid" }

POST /api/bookings/reschedule - Modifica una prenotazione. Carico utile: { "bookingId": "uuid", "newTime": "ISO-8601" }

Developer API

11. Utilizzo dell'account e della fatturazione

"GET" /api/fatturazione/utilizzo

Recupera l'utilizzo del ciclo di fatturazione dell'area di lavoro, i limiti del piano di abbonamento e il conteggio totale degli assistenti. Nota: quando si utilizza una chiave API, l'ambito della richiesta viene automaticamente limitato all'area di lavoro della chiave API; non è necessario fornire un teamId.

Risposta (`200 OK`):

json
{

  "planName": "Pro",
  "periodStr": "2023-10-01",
  "assistantCount": 3,
  "usage": {
    "message_count": 1450,
    "harvest_count": 12,
    "recrawl_count": 5,
    "train_count": 2,
    "assistants_created_count": 1,
    "voice_minutes_used": 0,
    "sms_count": 0,
    "email_count": 0,
    "whatsapp_count": 0
  },
  "limits": {
    "messages": 5000,
    "assistants": 5,
    "training": 50,
    "recrawls": 20
  },
  "workspaceOwnerId": "uuid"
}
Pronto per iniziare?

Avvia il tuo assistente
tra 10 minuti.

Iscriviti, allenati sul tuo sito, personalizza gli avvisi e incorporali nel tuo sito web.