Bygg kommunikationsarbetsflöden av operatörsklass med vårt RESTful API. JSON över HTTPS, Bearer token auth och realtids webhooks.
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"
}Alla förfrågningar autentiseras med en bärartoken i Authorization rubrik. Generera nycklar från API-fliken på din Ajoxi-konsol — använd AJX_LIVE_… för produktionstrafik och AJX_TEST_… för sandlåda.
curl https://api.ajoxi.com/v1/calls \
-H "Authorization: Bearer AJX_LIVE_XXXXX"Ring, lista, överför och hämta röstsamtal.
/v1/callsLista alla samtal med markörpaginering och datumfilter.
/v1/callsInitiera ett nytt utgående samtal eller starta en uppringningskampanj.
/v1/calls/{id}Hämta ett enda samtal med ID med fullständig metadata.
/v1/calls/{id}/transferÖverför ett aktivt samtal till en annan agent eller anknytning.
Sök, tillhandahåll, portera och släpp telefonnummer.
/v1/numbersSök efter tillgängliga lokala, avgiftsfria eller internationella nummer.
/v1/numbersAnge ett nytt nummer på ditt konto.
/v1/numbers/{id}Uppdatera routing, nummerpresentation eller SMS-konfiguration för ett nummer.
/v1/numbers/{id}Släpp ett nummer tillbaka till poolen. Irreversibel.
Skicka och ta emot SMS, MMS och konversationshistorik.
/v1/messagesLista meddelanden, filtrera efter riktning, kanal eller konversation.
/v1/messagesSkicka ett SMS eller MMS. Stöder mediabilagor och mallar.
Få tillgång till samtalsinspelningar, transkriptioner och AI-genererade insikter.
/v1/recordingsLista samtalsinspelningar med valfria datum- och agentfilter.
/v1/recordings/{id}Hämta en enda inspelning med transkription och AI-sammanfattning.
/v1/transcripts/{id}Hämta hela utskriften för ett samtal eller inspelning.
Prenumerera på plattformsevenemang i realtid.
/v1/webhooksLista konfigurerade webhook-prenumerationer.
/v1/webhooksPrenumerera på ett eller flera event (samtal.start, meddelande.mottaget).
/v1/webhooks/{id}Ta bort en webhook-prenumeration.
Varje felsvar returnerar JSON med en error.code och error.message. HTTP-statuskoden matchar kategorin.
Standardkonton är begränsade till 100 förfrågningar per sekund per API-nyckel. Företagsplaner har inget fast tak – vi skalar tillsammans med din trafik. Varje svar innehåller tre rubriker för hastighetsgränser:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715800000När gränsen överskrids får du ett 429-svar med ett Retry-After header på några sekunder. SDK-klienterna implementerar exponentiell backoff mot dessa rubriker automatiskt.
Listslutpunkter returnerar högst 50 objekt per sida som standard (kan konfigureras upp till 200 via ?limit=200). Varje svar innehåller en next_cursor — skicka tillbaka det som ?cursor=… för att hämta nästa sida. När next_cursor är null, har du nått slutet.
{
"data": [ ... ],
"next_cursor": "Y3Vyc29yX2FmMmI...",
"has_more": true
}Prenumerera på plattformshändelser via signerade HTTPS POST. Varje webhook-förfrågan inkluderar en X-Ajoxi-Signature header — verifiera det som HMAC-SHA256 över råbegäran med hjälp av din webhook-hemlighet.
call.startedUtlöses när ett inkommande eller utgående samtal börjar ringa.call.answeredAvfyras när ett samtal besvaras av en mänsklig eller AI-receptionist.call.completedAvfyras när ett samtal avslutas. Nyttolasten inkluderar varaktighet, inspelnings-URL och slutlig disposition.message.receivedUtlöses när ett inkommande SMS eller MMS kommer till ett tillhandahållet nummer.message.deliveredAvfyras när ett utgående meddelande bekräftas levererat av operatören.recording.readyAvfyras när en samtalsinspelning bearbetas och tillgänglig för nedladdning.transcript.readyAvfyras när AI-transkriptionen för en inspelning har avslutats.Misslyckade leveranser försök igen med exponentiell backoff i upp till 24 timmar. Efter det sista försöket flyttas händelsen till en dödbokstav som du kan spela om från konsolen.
Den nuvarande stabila versionen är v1. Bryter ändringar skickas under ett nytt prefix (/v2/, etc.) — aldrig i en befintlig version. Utfasade versioner förblir tillgängliga i minst 18 månader efter att en efterföljare har skickats, med 6 månaders e-postvarning före solnedgången.
Förstaparts-SDK:er är tillgängliga för Node.js, Python, Go och Ruby. Var och en levereras med maskinskrivna klienter, försök igen logik och en verifyWebhook() hjälpare.
Alla förfrågningar använder Bearer-token-autentisering. Generera en API-nyckel i Ajoxi-konsolen och skicka den sedan som `Auktorisering: Bärare AJX_LIVE_XXXXX` vid varje begäran. Använd en separat `AJX_TEST_…`-nyckel för sandlådetrafik — testmiljön är isolerad och ringer aldrig riktiga samtal.
Ja. Samtal som görs med testlägesnycklar dirigeras genom vår simulator istället för live-operatörsnätverket – perfekt för CI-pipelines och belastningstestning. Förfrågningar i testläge faktureras inte mot din minuttillägg och ringer aldrig en riktig telefon.
100 förfrågningar per sekund på standardplanen, obegränsat på företag. Varje svar innehåller rubriker "X-RateLimit-Limit", "X-RateLimit-Remaining" och "X-RateLimit-Reset" så att du kan takta din trafik korrekt. När du överskrider gränsen får du ett 429:a med ett "Retry-After"-värde.
Varje webhook-förfrågan innehåller en "X-Ajoxi-Signature"-huvud. Beräkna HMAC-SHA256 över råbegäran med hjälp av din webhook-hemlighet och jämför sedan de två värdena konstant-tid. SDK-klienter (Node, Python, Go, Ruby) levereras med en `verifyWebhook()`-hjälpare som hanterar detta åt dig.
Vi bryter aldrig en stabil API-version. Brytande ändringar skickas under en ny versionssökväg (t.ex. `/v2/`). Utfasade versioner förblir aktiva i minst 18 månader efter att en efterföljare har skickats, och du får minst 6 månaders e-postvarningar före eventuell solnedgång.
Inte för närvarande. API:et är REST + JSON med valfria serverskickade händelser för streaming av slutpunkter som live-transkriptioner. Om GraphQL skulle avblockera ett specifikt arbetsflöde för dig, skicka in en begäran via ditt kontoteam – vi spårar efterfrågan och prioriterar därefter.
Snurra upp en sandlådenyckel, installera en SDK och ring ditt första programmerbara samtal före lunch.