Справочник API
Live — v1 available now

REST API

Uruchom połączenia głosowe AI, synchronizuj kontakty i odczytuj wyniki połączeń z dowolnego backendu, CRM lub narzędzia no-code.

Base URL:https://outboundcalls.ai/api/v1

Authentication

Generate an API key from Dashboard → Settings → API Keys. Przekaż go jako token Bearer w każdym żądaniu.

Authorization: Bearer oc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Klucze są haszowane w spoczynku i wyświetlaneonly onceprzy tworzeniu. Rotuj lub unieważnij w dowolnym momencie z tej samej strony Ustawienia.

Co możesz połączyć

API to zwykły REST + token Bearer, więc działa z każdym, co obsługuje HTTPS — nie wymaga SDK.

Zapier

Webhooks + HTTP

Wywołaj połączenia, gdy nowy lead zostanie dodany do twojego CRM, arkusza kalkulacyjnego lub formularza.

Make (Integromat)

Moduł HTTP

Twórz wizualne przepływy pracy: Formularz → OutboundCalls → aktualizacja Slack/Email/CRM.

n8n

Węzeł żądania HTTP

Automatyzacja hostowana samodzielnie. Połącz swoją bazę danych, harmonogram lub stos komunikacyjny.

HubSpot / Salesforce / Pipedrive

CRM

Automatycznie dodawaj nowe kontakty do kampanii; pobieraj podsumowania połączeń jako rekordy aktywności.

Niestandardowy backend (Node, Python, PHP, Go, Ruby)

Dowolny język

Standardowy REST + token Bearer. Działa z każdym, co może wykonać połączenie HTTPS.

Platformy no-code (Bubble, Retool, Airtable Automations)

No-code

Podłącz punkt końcowy do akcji przepływu pracy — nie potrzebujesz SDK.

Prawdziwe przepływy pracy, które możesz zbudować

Nowy lead wypełnia Twój Typeform → zadzwoń do nich w ciągu 30 sekund
Booking confirmation in Calendly → AI agent calls 24h before to confirm
Failed Stripe payment → reminder call instead of just an email
Codzienne przesyłanie CSV z Twojego CRM → agent AI dzwoni do każdego kontaktu w godzinach pracy
WhatsApp inbound message → callback from voice agent if requested
Postęp długoterminowej kampanii synchronizowany z Twoim magazynem danych co 15 minut

Endpoints

Konto

GET/me

Agenci

GET/agents
GET/agents/:id

Kontakty

GET/contacts
POST/contacts

Połączenia

POST/calls
GET/calls
GET/calls/:id

Kampanie

GET/campaigns
GET/campaigns/:id

Więcej punktów końcowych (tworzenie/aktualizacja/usuwanie agentów, import CSV, kontrola kampanii) jest w planach. Potrzebujesz jednego pilnie?Tell us.

Code examples

cURL
# Trigger an outbound call from your agent
curl -X POST https://outboundcalls.ai/api/v1/calls \
  -H "Authorization: Bearer oc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "agentId": "clxAGENT123",
    "toNumber": "+14155551212",
    "contactId": "clxCONTACT456"
  }'

# Response
{
  "id": "clxCALL789",
  "phoneFrom": "+12025550100",
  "phoneTo": "+14155551212",
  "status": "RINGING",
  "elevenlabsConvId": "conv_abc...",
  "createdAt": "2026-04-29T10:32:11.000Z"
}
JavaScript / Node.js
// Trigger a call from any Node.js / browser app
const r = await fetch('https://outboundcalls.ai/api/v1/calls', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.OC_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    agentId: 'clxAGENT123',
    toNumber: '+14155551212',
  }),
});
const call = await r.json();
console.log(call.id, call.status); // RINGING

// Later — fetch transcript & summary
const detail = await fetch(`https://outboundcalls.ai/api/v1/calls/${call.id}`, {
  headers: { Authorization: `Bearer ${process.env.OC_API_KEY}` },
}).then(r => r.json());
console.log(detail.summary, detail.transcript);

Post-call webhook

Skonfiguruj adres URL webhooka dla każdego agenta. Po każdym połączeniu, OutboundCalls POSTuje podpisany ładunek JSON do twojego punktu końcowego z:

  • Full transcript
  • Recording URL
  • AI-generated summary
  • Sentiment score
  • Goal achieved (true/false)
  • Extracted data fields
  • Duration + credits charged
  • Voicemail flag

Wszystkie ładunki są podpisane HMAC-SHA256. Zweryfikuj nagłówek z sekretem webhooka swojego agenta.

Wysyłaj w minutach, a nie w tygodniach

Utwórz konto, wygeneruj klucz API i uruchom swoje pierwsze połączenie w mniej niż 5 minut.