Kom igång
Haitech-API:et låter dig styra dina röstagenter programmatiskt. På fem minuter kan du initiera ett samtal, ta emot en bokning och skicka den vidare till ditt bokningssystem.
Bas-URL för alla anrop är https://api.haitech.se/v1. Alla svar returneras som JSON och alla anrop måste ske över HTTPS.
Så här fungerar det
- Skapa en API-nyckel i din Haitech-panel.
- Konfigurera en röstagent för din restaurang — lunchrush, avhämtning eller bordsbokning.
- Anropa API:et eller ta emot webhooks när en gäst ringer.
Tips: Använd en testnyckel (sk_test_…) medan du bygger. Testsamtal kopplas aldrig fram till en riktig telefonlinje.
Autentisering
Alla anrop autentiseras med en hemlig API-nyckel som skickas i Authorization-headern som en Bearer-token. Håll nyckeln hemlig — exponera den aldrig i klientkod eller publika repositorier.
Skicka din nyckel
Lägg till headern i varje anrop:
Authorization: Bearer sk_live_9c1f4a2b7e6d
Content-Type: application/json
Nycklar som börjar med sk_live_ påverkar riktiga samtal, medan sk_test_ körs i sandlådeläge.
Skicka ett samtal
Med endpointen POST /v1/calls ringer din röstagent upp en gäst — perfekt för att bekräfta en bokning eller påminna om en avhämtning som är klar.
Exempel: cURL-anrop
curl -X POST https://api.haitech.se/v1/calls \
-H "Authorization: Bearer sk_live_9c1f4a2b7e6d" \
-H "Content-Type: application/json" \
-d '{
"to": "+46701234567",
"agent_id": "agent_lunchrush",
"language": "sv-SE",
"context": {
"gast": "Anna",
"bord": 4,
"tid": "19:00"
}
}'
Svar
Ett lyckat anrop returnerar status 201 Created med samtalsobjektet:
{
"id": "call_9f2a3c7d1b",
"status": "queued",
"to": "+46701234567",
"agent_id": "agent_lunchrush",
"language": "sv-SE",
"created_at": "2026-07-03T11:24:00Z"
}
Fältet status går från queued → ringing → completed. Prenumerera på webhooks för att få resultatet i realtid.
Webhooks
När ett samtal avslutas skickar Haitech en POST till din registrerade webhook-URL. Så fångar du en bokning som en gäst gjort via röstagenten — utan att någon behöver svara i telefonen.
Exempel: payload
{
"event": "call.completed",
"data": {
"id": "call_9f2a3c7d1b",
"status": "completed",
"duration": 84,
"bokning": {
"gaster": 4,
"tid": "2026-07-04T19:00:00Z",
"allergener": ["gluten", "nötter"]
}
}
}
Ta emot i Node.js
Verifiera och spara bokningen i ditt eget system. Svara alltid med 200 inom fem sekunder, annars görs ett nytt försök.
app.post('/haitech-webhook', (req, res) => {
const { event, data } = req.body;
if (event === 'call.completed' && data.bokning) {
// Spara bordsbokningen i ditt bokningssystem
sparaBokning(data.bokning);
}
res.sendStatus(200);
});
Felkoder
API:et använder vanliga HTTP-statuskoder. Koder i 2xx betyder lyckat, 4xx ett fel i din förfrågan och 5xx ett fel hos Haitech.
| Kod | Namn | Betydelse |
|---|---|---|
| 401 | Unauthorized | API-nyckeln saknas eller är ogiltig. Kontrollera din Bearer-token. |
| 403 | Forbidden | Nyckeln saknar behörighet för den begärda röstagenten. |
| 404 | Not Found | Samtalet eller agenten hittades inte — kontrollera id. |
| 422 | Unprocessable | Ogiltigt telefonnummer eller fält saknas i förfrågan. |
| 429 | Too Many Requests | Du har passerat gränsen. Vänta och försök igen med backoff. |
| 500 | Server Error | Ett oväntat fel hos Haitech. Försök igen eller kontakta support. |