REST API v1

API Documentation

Integriere Calentix-Funnels, Submissions und Leads in deine bestehenden Workflows. Perfekt für Zapier, Make.com, n8n oder eigene Systeme.

Authentifizierung

Alle API-Requests erfordern einen gültigen API-Key im Authorization Header. API-Keys kannst du in den Einstellungen erstellen.

Beispiel-Request
curl -X GET https://calentix.app/api/v1/funnels \
  -H "Authorization: Bearer sk_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345"

Wichtig: Behandle deinen API-Key wie ein Passwort. Teile ihn niemals öffentlich und speichere ihn nicht in Client-Side Code.

Base URL

Production
https://calentix.app/api/v1

Rate Limits

Die API erlaubt maximal 120 Requests pro Minute pro API-Key. Bei Überschreitung wird ein 429 Too Many Requests zurückgegeben.

Requests pro Minute120
Fenster60 Sekunden (rollierend)

Fehlerbehandlung

Fehler werden als JSON mit einem error Objekt zurückgegeben.

Fehler-Response
{
  "error": {
    "message": "Invalid or missing API key",
    "code": "unauthorized"
  }
}
StatusCodeBeschreibung
400invalid_bodyUngültiger Request Body
401unauthorizedFehlender oder ungültiger API-Key
404not_foundRessource nicht gefunden
429rate_limitedRate Limit überschritten
500internal_errorInterner Serverfehler

GET/api/v1/funnels

Funnels auflisten

Gibt alle Funnels des authentifizierten Benutzers zurück, inklusive Submission-Count.

Response 200
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Kontaktformular",
      "slug": "kontaktformular",
      "status": "published",
      "description": "Unser Hauptformular",
      "submission_count": 142,
      "created_at": "2026-03-15T10:30:00.000Z",
      "updated_at": "2026-03-28T14:22:00.000Z"
    }
  ]
}
GET/api/v1/funnels/{funnelId}

Funnel abrufen

Gibt einen einzelnen Funnel mit allen Seiten und Feldern zurück.

Pfad-Parameter

funnelIduuidPflicht

Die ID des Funnels

Response 200
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Kontaktformular",
    "slug": "kontaktformular",
    "status": "published",
    "description": null,
    "created_at": "2026-03-15T10:30:00.000Z",
    "updated_at": "2026-03-28T14:22:00.000Z",
    "pages": [
      {
        "id": "...",
        "title": "Kontaktdaten",
        "page_type": "form",
        "page_order": 0,
        "fields": [
          {
            "id": "...",
            "label": "Name",
            "field_type": "text",
            "is_required": true,
            "field_order": 0
          },
          {
            "id": "...",
            "label": "Email",
            "field_type": "email",
            "is_required": true,
            "field_order": 1
          }
        ]
      }
    ]
  }
}
GET/api/v1/funnels/{funnelId}/submissions

Submissions auflisten

Gibt alle Submissions eines Funnels als paginierte Liste zurück. Antworten werden als flaches Key-Value-Objekt (Label → Wert) geliefert.

Pfad-Parameter

funnelIduuidPflicht

Die ID des Funnels

Query-Parameter

limitinteger

Maximale Anzahl (1–100, Default: 25)

offsetinteger

Offset für Pagination (Default: 0)

sinceISO 8601

Nur Submissions nach diesem Zeitpunkt

Response 200
{
  "data": [
    {
      "id": "...",
      "funnel_id": "...",
      "submitted_at": "2026-04-01T12:00:00.000Z",
      "source": "funnel",
      "source_label": null,
      "answers": {
        "Name": "Max Mustermann",
        "Email": "max@beispiel.de",
        "Telefon": "+49 170 1234567"
      },
      "metadata": {}
    }
  ],
  "pagination": {
    "total": 142,
    "limit": 25,
    "offset": 0
  }
}
GET/api/v1/funnels/{funnelId}/submissions/{submissionId}

Submission abrufen

Gibt eine einzelne Submission mit allen Antworten zurück.

Pfad-Parameter

funnelIduuidPflicht

Die ID des Funnels

submissionIduuidPflicht

Die ID der Submission

Response 200
{
  "data": {
    "id": "...",
    "funnel_id": "...",
    "funnel_name": "Kontaktformular",
    "submitted_at": "2026-04-01T12:00:00.000Z",
    "source": "funnel",
    "source_label": null,
    "answers": {
      "Name": "Max Mustermann",
      "Email": "max@beispiel.de",
      "Telefon": "+49 170 1234567"
    },
    "metadata": {}
  }
}
POST/api/v1/funnels/{funnelId}/leads

Lead erstellen

Erstellt einen neuen Lead (Submission) im Funnel. Die Antworten werden als Key-Value-Objekt übergeben.

Pfad-Parameter

funnelIduuidPflicht

Die ID des Funnels

Request Body

answersobjectPflicht

Key-Value-Objekt mit den Lead-Daten, z.B. {"Name": "Max", "Email": "max@beispiel.de"}

source_labelstring

Quellen-Label, z.B. "Zapier Import" (Default: "API")

metadataobject

Optionale Metadaten

Request
{
  "answers": {
    "Name": "Max Mustermann",
    "Email": "max@beispiel.de",
    "Telefon": "+49 170 1234567"
  },
  "source_label": "Zapier"
}
Response 201
{
  "data": {
    "id": "...",
    "funnel_id": "...",
    "funnel_name": "Kontaktformular",
    "submitted_at": "2026-04-01T12:00:00.000Z",
    "source": "api",
    "source_label": "Zapier",
    "answers": {
      "Name": "Max Mustermann",
      "Email": "max@beispiel.de",
      "Telefon": "+49 170 1234567"
    }
  }
}
POST/api/v1/webhooks/subscribe

Webhook-Subscription erstellen

Registriert eine Callback-URL, die bei jedem neuen Event (z.B. neue Submission) per POST benachrichtigt wird. Wird von Zapier und Make.com automatisch aufgerufen.

Request Body

target_urlstring (URL)Pflicht

Die URL, an die Events gesendet werden

funnel_iduuidPflicht

Die ID des Funnels

eventstringPflicht

Event-Typ. Aktuell verfügbar: "submission.created"

Request
{
  "target_url": "https://hooks.zapier.com/hooks/catch/123/abc",
  "funnel_id": "550e8400-e29b-41d4-a716-446655440000",
  "event": "submission.created"
}
Response 201
{
  "data": {
    "id": "...",
    "funnel_id": "550e8400-e29b-41d4-a716-446655440000",
    "target_url": "https://hooks.zapier.com/hooks/catch/123/abc",
    "event": "submission.created"
  }
}
DELETE/api/v1/webhooks/unsubscribe/{subscriptionId}

Webhook-Subscription löschen

Entfernt eine Webhook-Subscription. Wird von Zapier und Make.com beim Deaktivieren eines Zaps/Szenarios automatisch aufgerufen.

Pfad-Parameter

subscriptionIduuidPflicht

Die ID der Subscription

Response 200
{
  "data": {
    "id": "...",
    "deleted": true
  }
}

Webhook-Payloads

Wenn du eine Webhook-Subscription registriert hast, sendet Calentix bei jedem neuen Event einen POST Request mit folgendem Payload an deine target_url:

submission.createdNeue Submission

POST an deine target_url
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "event": "submission.created",
  "funnel_id": "...",
  "funnel_name": "Kontaktformular",
  "submitted_at": "2026-04-01T12:00:00.000Z",
  "source": "funnel",
  "answers": {
    "Name": "Max Mustermann",
    "Email": "max@beispiel.de"
  },
  "metadata": {}
}

Timeout: 10 Sekunden. Stell sicher, dass dein Endpoint innerhalb dieser Zeit antwortet.

Retries: Aktuell kein automatisches Retry. Fehlgeschlagene Deliveries werden geloggt.

Content-Type: Alle Payloads werden als application/json gesendet.

Integrationsbeispiele

Zapier

  1. API-Key in den Calentix-Einstellungen erstellen
  2. In Zapier: "Webhooks by Zapier" als Trigger wählen
  3. Oder: REST Hook Trigger mit Subscribe/Unsubscribe URL
  4. API-Key als Bearer Token im Auth-Header setzen

Make.com

  1. API-Key in den Calentix-Einstellungen erstellen
  2. In Make: HTTP-Modul oder Custom App nutzen
  3. Base URL: https://calentix.app/api/v1
  4. API-Key als Bearer Token im Auth-Header setzen