_ _ _ _____ _ _ __ | | | | ( ) / __ \ | (_)/ _| | | ___| |_|/ ___ | / \/ | __ _ _ __ _| |_ _ _ | | / _ \ __| / __| | | | |/ _` | '__| | _| | | | | |___| __/ |_ \__ \ | \__/\ | (_| | | | | | | |_| | \_____/\___|\__| |___/ \____/_|\__,_|_| |_|_| \__, | __/ | |___/

Human-in-the-Loop
für KI-Agenten

Kostenlose API — Keine Kreditkarte

Dein KI-Agent erstellt ein Formular per API — einen Empfänger für eine schnelle Freigabe oder Tausende für eine unternehmensweite Umfrage. Jede Person bekommt eine eigene URL, die du über deine Kanäle versendest: E-Mail, Slack oder eingebettet auf deiner Seite. Sobald sie antworten, bekommt dein Agent strukturiertes JSON zurück.

So läuft's ab

Dein Agent stößt es an. Ein Mensch antwortet. Dein Agent macht weiter.

human-in-the-loop.txt
    ┌─────────────┐
       KI-Agent  
    └──────┬──────┘
           
     1. POST /api/v1/forms
           
           
    ┌───────────────┐
     Let's Clarify 
    └──────┬────────┘
           
     2. URL teilen
           
           
    ┌─────────────┐
       Mensch    
    └──────┬──────┘
           
     3. Sendet Antwort ab
           
           
    ┌───────────────┐
     Let's Clarify 
    └──────┬────────┘
           
     4. Webhook / GET Ergebnisse
           
           
    ┌─────────────┐
       KI-Agent  
    └─────────────┘
7
Feldtypen
10K
Empfänger / Formular
10 MB
Max. Dateigröße
365 d
Max. Speicherdauer

Drei Schritte. Strukturierte Daten.

Keine SDKs, kein Frontend nötig. Nur HTTP und ein API Key.

01

Formular erstellen

Sende dein Schema und Kontext per POST an die API. Zurück bekommst du ein Form-Token und individuelle URLs für jeden Empfänger.

02

Link verschicken

Verteile die URL per E-Mail, Slack, WhatsApp — über jeden Kanal. Jeder Empfänger bekommt seinen eigenen Link.

03

Strukturiertes JSON erhalten

Frag die Ergebnisse per API ab oder empfang einen Webhook. Jede Antwort entspricht exakt deinem Schema.

Live-Beispiel

Ein API-Aufruf. Ein Formular. Strukturiertes JSON zurück.

Dein KI-Agent organisiert das Team-Offsite. Er hat den Veranstaltungsort gebucht, Kalendereinladungen verschickt und den Transport organisiert. Aber er kennt nicht die Essensvorlieben aller — und erraten kann er sie auch nicht. Also erstellt er per API-Aufruf ein Formular, schickt jeder Person einen eigenen Link und bekommt strukturiertes JSON mit genau den Daten zurück, die er für die Catering-Bestellung braucht.

API Key holen

curl — Register
curl -X POST https://letsclarify.ai/api/v1/register \
  -H "Content-Type: application/json" \
  -d '{ "name": "My Agent", "email": "you@example.com" }'
Response — 201 Created
{
  "api_key": "lc_...",
  "warning": "Store securely. Shown only once."
}

Keine Kreditkarte. Kein Account-Dashboard. Nur ein API Key.

curl — Create Form
curl -X POST https://letsclarify.ai/api/v1/forms \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer lc_..." \
  -d '{
    "title": "Team Lunch Preferences",
    "context_markdown":
      "**Friday Team Lunch — March 21st**\n\nOrdering catering for **Loft 42**.\nShare your preferences by Wednesday.",
    "recipient_count": 12,
    "retention_days": 3,
    "webhook_url": "https://your-agent.ai/hook",
    "schema": [
      { "id": "name", "type": "text",
        "label": "Your name", "required": true },
      { "id": "cuisine", "type": "select",
        "label": "Preferred cuisine",
        "required": true,
        "options": [
          { "value": "italian", "label": "Italian" },
          { "value": "japanese", "label": "Japanese" },
          { "value": "mexican", "label": "Mexican" },
          { "value": "indian", "label": "Indian" }
        ] },
      { "id": "restrictions",
        "type": "checkbox_group",
        "label": "Dietary restrictions",
        "options": [
          { "value": "vegetarian", "label": "Vegetarian" },
          { "value": "vegan", "label": "Vegan" },
          { "value": "gluten_free", "label": "Gluten-free" },
          { "value": "halal", "label": "Halal" }
        ] }
    ]
  }'
Response — 201 Created
{
  "form_token": "BVyzfoQB8IqZvt1OfUI-3fM9iGg3xdTnDutienigIPk",
  "delete_token": "NGgulTYu-sCtwll53a8o2hcQjwV3dVIFGr7ctfpuPOU",
  "base_url_template":
    "https://letsclarify.ai/f/BVyzfoQB8IqZ.../{recipient_uuid}",
  "poll_url":
    "https://letsclarify.ai/api/v1/forms/BVyzfoQB8IqZ.../results",
  "summary_url":
    "https://letsclarify.ai/api/v1/forms/BVyzfoQB8IqZ.../summary",
  "delete_url":
    "https://letsclarify.ai/api/v1/forms/BVyzfoQB8IqZ...",
  "recipients": [
    "9c95f23c-878b-441b-8e1a-5a6af2f2c35f",
    "8859a8f5-e28c-465b-9972-e641db1c61dd",
    "0f56c698-4088-4e0e-9c60-ed21ae26cf28",
    // ...12 unique UUIDs total
  ]
}
Was der Mensch sieht

Team Lunch Preferences

Friday Team Lunch — March 21st

We're ordering catering for the offsite at Loft 42. Please share your food preferences so we can place the order by Wednesday.

response_json — Live-Vorschau
{
  "name": "",
  "cuisine": "",
  "restrictions": []
}

Was dein Server empfängt

Wenn ein Mensch das Formular absendet, schickt Let's Clarify strukturiertes JSON per POST an deine Webhook-URL.

POST https://your-agent.ai/hook
{
  "form_token": "BVyzfoQB8IqZvt1O...",
  "recipient_uuid": "9c95f23c-878b-...",
  "submitted_at": "2025-03-19T14:32:07Z",
  "response_json": {
    "name": "Alice Chen",
    "cuisine": "japanese",
    "restrictions": ["vegetarian"]
  }
}

Automatische Wiederholung mit exponentiellem Backoff. SSRF-Schutz per DNS-Validierung. HTTPS erforderlich.

Unterstützte Typen: text, textarea, checkbox, checkbox_group, radio, select, file

Oder direkt einbetten

Formulare in jede beliebige Seite einbinden. Das Widget übernimmt Rendering, Validierung, Datei-Uploads und Absenden. Kein extra CSS nötig.

index.html — Embed Widget
<script src="https://letsclarify.ai/embed.js"></script>
<div data-letsclarify-form="{token}"
     data-letsclarify-recipient="{uuid}"></div>

Zwei Zeilen Code. Mehr braucht es nicht. Funktioniert in jeder HTML-Seite, React, Vue oder statischen Seiten.

Install the Skill

Give your AI agent the ability to collect human input — one command.

terminal
claude install github:heisee/LetsClarify-Skill

Works with Claude Code, or any agent that supports skill files.

Alles, was dein Agent braucht

Eine API. Alle Funktionen. Kein Frontend nötig.

Datei-Uploads

Bis zu 10 Dateien, je 10 MB. MIME-Erkennung per Magic Bytes.

Webhooks

Automatischer POST bei Absendung. Retry mit Backoff. SSRF-geschützt.

Feld-Validierung

Regex, Min/Max-Länge, Pflichtfelder, Min/Max-Auswahl.

Cursor-Paginierung

Stabile Cursor. Filter nach Status oder letzter Änderung.

Theme-Farben

Eigene Hex-Farbe pro Formular. Das Widget passt sich automatisch an.

Markdown-Kontext

Formatierter Kontext über den Feldern. Überschriften, Listen, Code.

Viele Empfänger

Bis zu 10.000 individuelle URLs pro Formular. Jederzeit per API erweiterbar.

Automatischer Ablauf

1 bis 365 Tage Speicherdauer. Danach werden Daten und Dateien gelöscht.

Korrektur möglich

Empfänger können ihre Antwort aktualisieren. Es zählt immer die letzte.

7 Feldtypen

text, textarea, select, radio, checkbox, checkbox_group, file.

Embed Widget

Einfach JS einbinden. Kein Build-Schritt. Läuft sofort.

Vorausgefüllte Werte

Felder pro Empfänger vorbelegen. Eigene UUIDs möglich.

Sofort löschbar

Mit Delete-Token löschen. Alle Daten sofort und dauerhaft entfernt.

Funktioniert mit jedem Agenten

Reines HTTP. Kein SDK nötig. Hier ein Formular in drei Sprachen.

agent.py
import requests

resp = requests.post(
    "https://letsclarify.ai/api/v1/forms",
    headers={"Authorization": f"Bearer {api_key}"},
    json={
        "title": "Approve budget",
        "recipient_count": 1,
        "schema": [{"id": "ok", "type": "radio",
                    "label": "Approved?",
                    "options": [{"value": "yes"}, {"value": "no"}]},
                   {"id": "limit", "type": "text",
                    "label": "Approved up to ($)",
                    "placeholder": "50000"}]
    }
)
url = resp.json()["base_url_template"]

Gemacht für KI-Workflows

Immer wenn dein Agent einen Menschen im Loop braucht.

Freigaben

Menschliches OK für KI-generierte Vorschläge, Budgets oder Pläne einholen, bevor es weitergeht.

Datenerfassung

Strukturierte Informationen von Personen einsammeln, die keinen API-Zugang oder Entwickler-Tools haben.

Menschliche Prüfung

KI-Ergebnisse von Menschen prüfen lassen, bevor irreversible Aktionen ausgeführt werden.

Entscheidungen

Menschen zwischen Optionen wählen lassen, die dein Agent vorbereitet hat &mdash; mit vollem Kontext.

Dokumentenprüfung

Dokumente zur Durchsicht vorlegen und strukturiertes Feedback einsammeln.

Einwilligung

Explizite Zustimmung zu Bedingungen einholen, bevor ein Workflow fortgesetzt wird.

Sicherheit als Grundprinzip

Kein Tracking. Daten werden automatisch gelöscht.

Nur HTTPS

Gesamter Datenverkehr verschlüsselt. Webhook-URLs müssen HTTPS sein.

Automatische Löschung

Alle Daten werden nach der eingestellten Frist gelöscht. Keine unbefristete Speicherung.

DSGVO-konform

Datenminimierung. Kein Marketing. Kein Profiling. Keine Cookies.

Kein Tracking

Keine Analyse-Tools. Kein Fingerprinting. Keine Drittanbieter-Skripte.

Offen. Fair. Rate-Limited.

Keine Kreditkarte. Kein Abo. Einmal registrieren und los.

Endpunkt Limit Zeitfenster
POST /api/v1/register 3 Anfragen 1 Stunde
POST /api/v1/forms 10 Anfragen 1 Minute
GET /api/v1/forms/* 60 Anfragen 1 Minute
GET /api/v1/embed/* 30 Anfragen 1 Minute
POST /api/v1/embed/* 20 Anfragen 1 Minute

Bei Überschreitung kommt HTTP 429 mit Retry-After Header.

Häufige Fragen

Nein. Keine Kreditkarte nötig. Mit Name und E-Mail registrieren, API Key erhalten, loslegen.
Ja. Registriere dich per POST an /api/v1/register (Name + E-Mail). Der Key beginnt mit lc_ und wird nur einmal angezeigt. Danach als Authorization: Bearer Header in alle Anfragen einbinden.
Abgelaufene Formulare zeigen eine Hinweisseite. Die API liefert expired: true. Ein Hintergrund-Job löscht danach alle Daten und hochgeladenen Dateien dauerhaft.
Ja. Erneutes Absenden ist möglich und überschreibt die vorherige Antwort. Die API liefert immer die aktuellste Version.
Zwei Wege: (1) Den /summary- oder /results-Endpunkt abfragen, oder (2) beim Erstellen eine webhook_url angeben. Dann bekommst du bei jeder Antwort einen POST.
Der POST-Body enthält form_token, recipient_uuid, submitted_at und response_json mit den strukturierten Daten. Bei Fehlern wird bis zu 3-mal mit exponentiellem Backoff wiederholt.
Ja. Jedes Feld unterstützt: required, min_length, max_length, pattern (Regex), min_items und max_items für Checkbox-Gruppen.
Ja. POST an /api/v1/forms/{token}/recipients mit count-Parameter. Neue UUIDs kommen zurück. Bis zu 10.000 Empfänger pro Formular.
Ja. Beim Erstellen oder Hinzufügen von Empfängern ein recipients-Array mit prefill-Objekten übergeben. Eigene UUIDs sind ebenfalls möglich. Die vorausgefüllten Werte erscheinen als Vorgabe, die der Empfänger ändern kann.
Ja. Beim Erstellen einen theme_color Hex-Wert angeben. Sowohl die gehostete Seite als auch das Embed Widget passen sich an.
Im Schema file-Felder mit Accept-Typen und Größenlimits definieren. Dateien werden serverseitig gespeichert und über die API als base64 ausgeliefert (include_files=1).
Schema-Definitionen: max. 50 KB. Einzelne Datei-Uploads: max. 10 MB. Pro Absendung: max. 10 Dateien.
Ja. DELETE-Request mit X-Delete-Token Header senden. Alle Daten und Dateien werden sofort und dauerhaft entfernt.
Auf einem Hetzner-Server in Deutschland. Dateien auf lokaler Festplatte. Nach Ablauf der Speicherdauer wird alles gelöscht.

Bereit loszulegen?

API Key holen und in unter einer Minute starten.

API Key holen →

Keine Kreditkarte. Kein Dashboard. Nur curl und ein API Key.