Documentazione API

Guida all'integrazione

Collega il tuo sito web, le app, i flussi di lavoro e le conversazioni con i clienti a Bob attraverso API governati, widget, webhook e automazione del front-office.

Avvio Veloce

Collega Bob al tuo sito web o al flusso di lavoro del front-office in pochi passaggi guidati.

1

Crea o seleziona un inquilino

Scegli il tenant che possiede il sito web, il widget e le credenziali API per questa integrazione.

2

Genera credenziali

Crea una chiave widget specifica per il tenant da Customer Portal → Widget Setup, oppure utilizza un JWT cliente per l'automazione lato server.

3

Installa il widget o chiama il API

Utilizza il widget del sito web per la chat front-end o il API per i flussi di lavoro lato server.

4

Test con browser proof

Verifica l'integrazione dal browser live, non solo una richiesta simulata.

Incorpora il widget (dal Portale Clienti)
<!-- Tenant-scoped bundle — replace YOUR_TENANT_UUID after onboarding -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
Pronto quando verificato: After embed, open your site in a real browser and confirm Bob loads. Use Stato del sistema se la chat non riesce a connettersi.

Impostazione

Completa questi prerequisiti prima di chiamare i API protetti o di pubblicare il widget sui domini di produzione.

External integrations connect systems outside the platform to Bob. Day-to-day front-office work happens in the Portale clienti.

  • Tenant created
  • Business profile completed
  • Website or channel configured
  • API credentials generated
  • Allowed origins configured
  • Test conversation completed
AmbienteScopoDove configurare
ProduzioneTraffico clienti in tempo realePortale Clienti → Configurazione Widget
Staging / anteprimaVerifica pre-lancioOrigini consentiti + dominio di test
AutomazioneWebhook server-side e APIsJWT cliente dal login del portale

Autenticazione

Le richieste protette API devono includere una credenziale a livello di tenant. Mantieni le chiavi private sul server e non esporle mai nel codice del browser.

Importante: Non esporre mai le chiavi API degli inquilini o i JWT dei clienti nel codice lato client. Utilizza chiamate lato server per le richieste protette API.
1

Genera credenziali

richiesto

Sign in to the Customer Portal and create widget keys in Widget Setup, or obtain a customer JWT via POST /api/customer/auth/login per l'automazione.

2

Invia l'intestazione di autorizzazione

Server-to-server automation uses Authorization: Bearer <token> con corpi JSON.

Esempio di richiesta
curl https://office16852.com/api/customer-portal/widget-code \
  -H "Authorization: Bearer YOUR_CUSTOMER_JWT" \
  -H "Content-Type: application/json"
3

Gestisci gli errori di autenticazione

Restituisci errori strutturati al tuo layer di integrazione e riprova solo quando appropriato.

StatoSignificato
401Credenziali mancanti o non valide
403Le credenziali sono valide ma mancano dei permessi.
429Limite di frequenza superato
POST /api/customer/auth/login

Accesso al portale clienti. Restituisce JWT per chiamate di integrazione autenticate.

POST /api/auth/login

Accesso operatore Mission Control (solo amministrazione della piattaforma).

Chat e Conversazioni

Bob espone tre percorsi di chat a seconda del contesto del chiamante: anonimo della stessa origine, widget cross-origin e Mission Control autenticato.

Tre percorsi: (1) Public same-origin → POST /api/chat. (2) Cross-origin embed → POST /api/widget/chat con X-Widget-Key. (3) Mission Control → POST /api/chat/message (richiede chat.manage; non per il recupero pubblico anonimo).
POST /api/chat

Chat anonimo pubblico sul tuo dominio. Corpo: messaggio, session_id, business_id opzionale.

POST /api/widget/chat

Chat widget cross-origin. Intestazioni: X-Widget-Key, Content-Type. L'origine deve essere autorizzata.

POST /api/widget/chat/audio

Trascrizione vocale per input voce del widget. Stesse regole di chiave e origine come per la chat.

POST /api/chat/session

Crea una sessione quando sei connesso a Mission Control (RBAC + CSRF per i cookie).

POST /api/chat/message

L'interfaccia utente dell'amministratore autenticato invia (chat.manage). Restituisce 401 se chiamata in modo anonimo.

GET /api/chat/history/:session_id

Cronologia conversazioni (autenticata).

Stessa origine pubblica (anonimo)
const response = await fetch('/api/chat', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    session_id: sessionId,
    message: userMessage,
    business_id: 'your-tenant-slug'
  })
});
const data = await response.json();

Installazione del Widget

Installa il widget sul tuo sito quando desideri che Bob sia disponibile direttamente per i visitatori. Utilizza la configurazione specifica per il tenant dal Portale Clienti → Impostazione Widget.

After onboarding, your embed code is in the Customer Portal under Configurazione widget. The publishable widget key (pk_live_…) è configurato lì—non incorporato in HTML statico.

HTML
<!-- Tenant-scoped bundle from Customer Portal → Widget Setup -->
<script src="https://office16852.com/widget/YOUR_TENANT_UUID/widget.js" async></script>
ArticoloScopoEsempio
UUID del locatario nel percorso dello scriptIdentifica il tuo pacchetto di widgetDalla Configurazione del Widget
Chiave del widget pubblicabileAutentica la chat cross-originpk_live_… (configurato nel portale, non in HTML)
Origini consentitiDomini consentiti per chiamare il widget chathttps://your-site.com
Browser proof: Verifica il widget in un browser reale su ogni origine consentita prima del lancio in produzione.
GET /api/customer-portal/widget-code

Restituisce il markup di incorporamento pronto per essere incollato. Richiede il JWT del cliente (config.read).

Webhook del Dashboard

Utilizza i webhook in uscita per ricevere aggiornamenti quando le conversazioni, i passaggi di consegna, i lead o gli eventi del flusso di lavoro cambiano nel tuo tenant.

Webhook provider in entrata (Stripe, telephony carriers, etc.) are platform infrastructure—not covered here. This section documents vostri solo endpoint di abbonamento outbound.
EventoDescrizione
conversation.escalatedRichiesta di passaggio umano
conversation.takeover.startedL'agente ha preso il controllo live
conversation.takeover.releasedRestituito a Bob
lead.createdNuovo intake acquisito
appointment.bookedConferma pianificazione
billing.payment_failedSegnale rischio account
billing.payment_recoveredPagamento ripristinato
webhook.testControllo della connettività dal portale
*Tutti gli eventi sopra
1

Crea un abbonamento

Utilizza un JWT dell'amministratore del Portale Clienti. Invia una richiesta POST a /api/webhooks/subscriptions con l'URL, gli eventi e la descrizione.

Corpo JSON
{
  "url": "https://your-app.com/webhooks/bob",
  "events": ["lead.created", "conversation.escalated"],
  "description": "CRM intake"
}
2

Verifica le firme

Verifica le firme dei webhook lato server prima di fidarti del payload.

Payload di consegna (illustrativo)
{
  "event": "lead.created",
  "tenantId": "tenant_...",
  "conversationId": "conv_...",
  "createdAt": "2026-06-19T12:00:00Z",
  "data": {}
}
GET /api/webhooks/subscriptions

Elenca abbonamenti (i segreti non vengono mai restituiti).

POST /api/webhooks/subscriptions

Crea abbonamento. Il segreto di firma viene mostrato una sola volta nella risposta.

DELETE /api/webhooks/subscriptions/:id

Rimuovi un abbonamento.

POST /api/webhooks/subscriptions/:id/test

Metti in coda la consegna del webhook.test.

GET /api/webhooks/deliveries

Log consegne incluse righe dead-letter.

Automazione dei Persona

L'automazione dei persona controlla come Bob rappresenta la tua azienda, quando escalare e come gestire i confini.

La maggior parte dei clienti configura voce e tono di Bob nel Portale clienti. API routes below require an authenticated token with persona.manage.

Voce aziendale

Tono, stile di saluto e risposte allineate al marchio.

Comportamento di escalation

Quando Bob passa il lavoro agli esseri umani o crea compiti.

Confini tematici

Argomenti approvati e schemi di rifiuto sicuri.

Preferenze del flusso di lavoro

Routing dei dipartimenti e ganci di automazione.

GET /api/personas

Elenca le persone per l'inquilino autenticato.

GET /api/personas/:id

Ottieni una persona per id.

POST /api/personas

Crea una persona con nome, campi di tono, systemPrompt, ecc.

PUT /api/personas/:id

Aggiorna una persona esistente.

Le impostazioni del persona devono essere testate prima delle modifiche in produzione. Utilizza la prova del browser e le conversazioni esaminate per convalidare il comportamento.

Piani e Prezzi APIs

Gli endpoint del pricebook pubblicato alimentano le superfici di marketing e il checkout. I APIs della gestione della fatturazione non sono pubblici.

FunzioneStarterProPlan Enterprise
Prezzo di listino (USD/mese)$79$249$899
Crediti AI inclusi / mese15,00075,000250,000
Posti teamFino a 3Fino a 10Illimitato
Integrazioni standard1310
SupportoEmailPrioritarioDedicato
GET /api/pricing/marketing-cards

Schede piano per marketing e checkout (pubblico, senza auth).

GET /api/pricing/snapshot

Snapshot pubblico sicuro del listino (senza campi costo provider).

La gestione dei piani e della fatturazione API è riservata e disponibile solo tramite integrazioni approvate—non documentata in questa guida pubblica.

Health & Status

Utilizza le informazioni sulla salute e sullo stato per verificare la disponibilità, monitorare le dipendenze a monte e risolvere i problemi di integrazione.

GET /api/health

Sonda salute leggera per monitor e load balancer.

GET /api/health/public

Payload di stato pubblico consumato dalla pagina di stato del sistema.

Visualizza lo stato del sistema →

Esempi di integrazione

Punti di partenza pratici per modelli di integrazione comuni.

HTML

Widget di chat per il sito web

Aggiungi Bob a un sito di marketing o a un portale clienti.

Visualizza esempio →
JavaScript

Conversazione lato server API

Chat anonimo con stessa origine dalla tua app.

Visualizza esempio →
Flusso di lavoro

flusso di passaggio CRM

Reagisci agli eventi di conversazione escalati.

Visualizza esempio →
Fetch del widget cross-origin
const response = await fetch('https://office16852.com/api/widget/chat', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Widget-Key': 'pk_live_...',
    'Origin': 'https://your-customer-site.com'
  },
  body: JSON.stringify({ session_id: sessionId, message: userMessage })
});

Panoramica dell'Architettura

Office 168/52 è un front office governato basato su browser: Portale Clienti per gli operatori, Mission Control per l'amministrazione della piattaforma e superfici di integrazione pubbliche per il tuo stack.

Sito web / App
Widget o API Client
Office 168/52 Gateway
Contesto del Locatario
Bob Runtime dell'Agente
Conoscenza e Formazione
Passaggio Umano / Dashboard
Webhook / Sistemi Esterni

Customer Portal and Mission Control APIs are session-backed UI routes—not published here. For a concise platform diagram, see panoramica architettura e centro prove.