API v1 — Stabil

Auf Kolva aufbauen

RESTful-API zur Integration Ihrer Tools mit Kolva. Verwalten Sie Kunden, Deals, Besuche und Kontakte programmatisch. Echtzeit-Webhooks für jedes Ereignis.

OpenAPI-3.1-Spezifikation

Authentifizierung

Authentifizierung per API-Schlüssel

Erstellen Sie API-Schlüssel unter Einstellungen → Entwickler in Ihrem Kolva-Adminbereich. Jeder Schlüssel verfügt über eingegrenzte Berechtigungen und kann jederzeit widerrufen werden.

Header-Authentifizierung

Empfohlene Methode

# Option 1: X-Kolva-Key-Header
X-Kolva-Key: kolva_sk_abc123...

# Option 2: Bearer-Token
Authorization: Bearer kolva_sk_abc123...

Verfügbare Scopes

Granulare Berechtigungen

read:clients
write:clients
read:deals
write:deals
read:visits
write:visits
read:finance
* (all)

Endpunkte

RESTful-Ressourcen

Alle Endpunkte folgen den REST-Konventionen. Antworten verwenden JSON. Paginierung mit ?page= und ?limit= (max. 100).

Kunden

/api/v1/clients

Verwalten Sie Ihre Kundendatenbank — auflisten, anlegen, aktualisieren, deaktivieren.

GETPOSTPUTDELETE
Scopes: read:clients, write:clients

Kontakte

/api/v1/contacts

CRUD von Kontakten innerhalb von Kundendatensätzen (JSONB-Kontakt-Array).

GETPOSTPUTDELETE
Scopes: read:clients, write:clients

Deals

/api/v1/deals

Aufträge und Deals — anlegen, Status aktualisieren, Umsatz verfolgen.

GETPOSTPUTDELETE
Scopes: read:deals, write:deals

Besuche

/api/v1/visits

Außendienstbesuche — planen, Check-in/Check-out verfolgen, Termine verwalten.

GETPOSTPUTDELETE
Scopes: read:visits, write:visits

Ratenbegrenzungen

Faire Nutzungslimits

100

Anfragen / Minute

429

Status bei Überschreitung

Retry-After

Header enthalten

Webhooks

Echtzeit-Ereignisbenachrichtigungen

Abonnieren Sie Ereignisse unter Einstellungen → Entwickler → Webhooks. Kolva sendet POST-Anfragen an Ihre URL mit HMAC-SHA256-Signaturprüfung.

deal_created

Wird ausgelöst, wenn ein neuer Deal/Auftrag erstellt wird

deal_updated

Wird ausgelöst, wenn sich Status oder Betrag eines Deals ändert

client_created

Wird ausgelöst, wenn ein neuer Kunde hinzugefügt wird

client_updated

Wird ausgelöst, wenn Kundendaten geändert werden

visit_completed

Wird ausgelöst, wenn ein Außendienstmitarbeiter auscheckt

invoice_created

Wird ausgelöst, wenn eine Rechnung erzeugt wird

order_created

Wird ausgelöst, wenn ein Auftrag aufgegeben wird

contact_updated

Wird ausgelöst, wenn ein Kundenkontakt geändert wird

Signaturprüfung

Jeder Webhook-POST enthält einen X-Kolva-Signature -Header. Prüfen Sie ihn mit HMAC-SHA256 anhand Ihres Webhook-Secrets.

// Node.js-Verifizierung
const crypto = require('crypto');
const signature = req.headers['x-kolva-signature'];
const expected = crypto
  .createHmac('sha256', webhookSecret)
  .update(JSON.stringify(req.body))
  .digest('hex');
const valid = crypto.timingSafeEqual(
  Buffer.from(signature), Buffer.from(expected)
);

Wiederholungsrichtlinie: 3 Versuche mit exponentiellem Backoff (1 Min., 5 Min., 30 Min.). Nach 10 aufeinanderfolgenden Fehlern wird der Webhook automatisch deaktiviert.

Beispiele

Schnellstart

cURL — Kunden auflisten
curl -X GET "https://kolva.ai/api/v1/clients?page=1&limit=10" \
  -H "X-Kolva-Key: kolva_sk_your_key_here"
cURL — Einen Deal erstellen
curl -X POST "https://kolva.ai/api/v1/deals" \
  -H "X-Kolva-Key: kolva_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"client_id": "uuid", "total_ht": 1500, "currency": "EUR"}'
JavaScript — Besuche auflisten
const response = await fetch("https://kolva.ai/api/v1/visits?status=completed", {
  headers: { "X-Kolva-Key": process.env.KOLVA_API_KEY },
});
const { data, total } = await response.json();
console.log(`Found ${total} completed visits`);
JavaScript — Einen Besuch erstellen
const visit = await fetch("https://kolva.ai/api/v1/visits", {
  method: "POST",
  headers: {
    "X-Kolva-Key": process.env.KOLVA_API_KEY,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    client_id: "client-uuid",
    commercial_id: "rep-uuid",
    planned_date: "2026-03-15",
    type: "routine",
  }),
});
const { data } = await visit.json();
// Retry the same operation with the same UUID. A replay returns HTTP 200;
// the initial creation returns HTTP 201.

Bereit zur Integration?

Erstellen Sie Ihren API-Schlüssel in den Kolva-Einstellungen oder sehen Sie sich die OpenAPI-Spezifikation für die vollständige Referenz an.