Crea flussi di lavoro di comunicazione di livello carrier con la nostra API RESTful. JSON su HTTPS, autenticazione del token bearer e webhook in tempo reale.
curl -X POST https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+14155551234", "from": "+14155550100", "ai_receptionist": true }'{
"id": "call_8f2a1b3c",
"status": "ringing",
"ai_handler": "receptionist_v2"
}Tutte le richieste vengono autenticate con un token al portatore nel file Authorization intestazione. Genera chiavi dalla scheda API della tua console Ajoxi: usa AJX_LIVE_… per il traffico produttivo e AJX_TEST_… per sabbiera.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"Effettua, elenca, trasferisci e recupera chiamate vocali.
/v1/callsElenca tutte le chiamate con l'impaginazione del cursore e i filtri della data.
/v1/callsAvvia una nuova chiamata in uscita o attiva una campagna dialer.
/v1/calls/{id}Recupera una singola chiamata per ID con metadati completi.
/v1/calls/{id}/transferTrasferisci una chiamata attiva a un altro agente o interno.
Cerca, fornisci, trasferisci e rilascia numeri di telefono.
/v1/numbersCerca i numeri locali, verdi o internazionali disponibili.
/v1/numbersFornisci un nuovo numero al tuo account.
/v1/numbers/{id}Aggiorna il routing, l'ID chiamante o la configurazione SMS su un numero.
/v1/numbers/{id}Rilascia un numero in pool. Irreversibile.
Invia e ricevi SMS, MMS e cronologia delle conversazioni.
/v1/messagesElenca i messaggi, filtra per direzione, canale o conversazione.
/v1/messagesInvia un SMS o un MMS. Supporta allegati multimediali e modelli.
Accedi alle registrazioni delle chiamate, alle trascrizioni e agli approfondimenti generati dall'intelligenza artificiale.
/v1/recordingsElenca le registrazioni delle chiamate con filtri opzionali per data e agente.
/v1/recordings/{id}Recupera una singola registrazione con trascrizione e riepilogo AI.
/v1/transcripts/{id}Recupera la trascrizione completa di una chiamata o di una registrazione.
Iscriviti agli eventi della piattaforma in tempo reale.
/v1/webhooksElenca le sottoscrizioni webhook configurate.
/v1/webhooksIscriviti a uno o più eventi (call.start, message.received).
/v1/webhooks/{id}Rimuovere una sottoscrizione webhook.
Ogni risposta di errore restituisce JSON con un error.code E error.message. Il codice di stato HTTP corrisponde alla categoria.
Gli account standard hanno un limite di 100 richieste al secondo per chiave API. I piani aziendali non hanno limiti fissi: ci adattiamo al tuo traffico. Ogni risposta include tre intestazioni di limite di velocità:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000Quando il limite viene superato riceverai una risposta 429 con a Retry-After intestazione in pochi secondi. I client SDK implementano automaticamente il backoff esponenziale su queste intestazioni.
Gli endpoint dell'elenco restituiscono al massimo 50 elementi per pagina per impostazione predefinita (configurabile fino a 200 tramite ?limit=200). Ogni risposta include a next_cursor - restituiscilo come ?cursor=… per recuperare la pagina successiva. Quando next_cursor è nullo, sei arrivato alla fine.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}Iscriviti agli eventi della piattaforma tramite POST HTTPS firmati. Ogni richiesta di webhook include un file X-Ajoxi-Signature intestazione: verificala come HMAC-SHA256 sul corpo della richiesta non elaborata utilizzando il segreto del webhook.
call.startedViene attivato quando una chiamata in entrata o in uscita inizia a squillare.call.answeredLicenziato quando una chiamata riceve risposta da un receptionist umano o AI.call.completedLicenziato al termine della chiamata. Il payload include durata, URL di registrazione e disposizione finale.message.receivedAttivato quando un SMS o un MMS in entrata arriva a un numero fornito.message.deliveredAttivato quando un messaggio in uscita viene confermato consegnato dal corriere.recording.readyAttivato quando la registrazione di una chiamata viene elaborata e disponibile per il download.transcript.readyAttivato quando la trascrizione AI di una registrazione ha terminato l'elaborazione.Riprovare le consegne non riuscite con backoff esponenziale fino a 24 ore. Dopo l'ultimo tentativo, l'evento viene spostato in una coda di messaggi non recapitabili che puoi riprodurre dalla console.
L'attuale versione stabile è v1. Le modifiche importanti vengono fornite con un nuovo prefisso (/v2/, ecc.) — mai all'interno di una versione esistente. Le versioni deprecate rimangono disponibili per almeno 18 mesi dopo la spedizione del successore, con 6 mesi di avviso via email prima del tramonto.
Gli SDK proprietari sono disponibili per Node.js, Python, Go e Ruby. Ciascuno viene fornito con client tipizzati, logica di ripetizione e a verifyWebhook() aiutante.
Tutte le richieste utilizzano l'autenticazione del token al portatore. Genera una chiave API nella console Ajoxi, quindi passala come "Autorizzazione: Bearer AJX_LIVE_XXXXX" su ogni richiesta. Utilizza una chiave `AJX_TEST_…` separata per il traffico sandbox: l'ambiente di test è isolato e non effettua mai chiamate reali.
SÌ. Le chiamate effettuate con chiavi in modalità test vengono instradate attraverso il nostro simulatore invece che attraverso la rete attiva dell'operatore: perfetto per pipeline CI e test di carico. Le richieste in modalità test non vengono addebitate sui minuti consentiti e non fanno mai squillare un telefono reale.
100 richieste al secondo sul piano standard, illimitate su Enterprise. Ogni risposta include le intestazioni "X-RateLimit-Limit", "X-RateLimit-Remaining" e "X-RateLimit-Reset" in modo da poter regolare il traffico in modo accurato. Quando superi il limite ricevi un 429 con un valore "Retry-After".
Ogni richiesta webhook include un'intestazione "X-Ajoxi-Signature". Calcola HMAC-SHA256 sul corpo della richiesta non elaborata utilizzando il segreto del webhook, quindi confronta i due valori in tempo costante. I client SDK (Node, Python, Go, Ruby) vengono forniti con un helper `verifyWebhook()` che lo gestisce per te.
Non interrompiamo mai una versione API stabile. Le modifiche importanti vengono fornite sotto un nuovo percorso di versione (ad esempio `/v2/`). Le versioni deprecate rimangono attive per almeno 18 mesi dopo la spedizione di quella successiva e ricevi almeno 6 mesi di avvisi via email prima di qualsiasi cessazione.
Non attualmente. L'API è REST + JSON con eventi inviati dal server opzionali per endpoint di streaming come le trascrizioni in tempo reale. Se GraphQL volesse sbloccare un flusso di lavoro specifico per te, presenta una richiesta tramite il team del tuo account: monitoriamo la domanda e stabiliamo le priorità di conseguenza.
Avvia una chiave sandbox, installa un SDK ed effettua la tua prima chiamata programmabile prima di pranzo.