KI-Werkzeuge
Prompts verbessern und übersetzen, Opportunitäts- und Erfolgskriterien generieren, LLM-Chat-Completions ausführen und persönliche Prompt-Vorlagen über die Talkturo API verwalten.
const response = await fetch("https://api.talkturo.com/api/improve-prompt", {
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_7xmk2q9p",
"Content-Type": "application/json"
},
body: JSON.stringify({
prompt: "Fasse die wichtigsten Kundeneinwände zusammen."
})
});
const result = await response.json();
console.log(result.text);
curl -X POST "https://api.talkturo.com/api/improve-prompt" \
-H "Authorization: Bearer tk_live_example_7xmk2q9p" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Fasse die wichtigsten Kundeneinwände zusammen."
}'
{
"text": "Analysieren Sie die Kundengespräche und fassen Sie die drei häufigsten Einwände mit jeweils einem repräsentativen Zitat zusammen."
}
{
"error": "No prompt provided"
}
{
"error": "Failed to improve prompt"
}
const response = await fetch("https://api.talkturo.com/api/translate-prompt", {
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_7xmk2q9p",
"Content-Type": "application/json"
},
body: JSON.stringify({
prompt: "Summarize the key objections from each customer call.",
targetLanguage: "German"
})
});
const result = await response.json();
console.log(result.text);
curl -X POST "https://api.talkturo.com/api/translate-prompt" \
-H "Authorization: Bearer tk_live_example_7xmk2q9p" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Summarize the key objections from each customer call.",
"targetLanguage": "German"
}'
{
"text": "Fassen Sie die wichtigsten Einwände aus jedem Kundengespräch zusammen."
}
{
"error": "No target language provided"
}
{
"error": "Failed to translate prompt"
}
const response = await fetch("https://api.talkturo.com/api/generate-opportunity-prompt", {
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_7xmk2q9p",
"Content-Type": "application/json"
},
body: JSON.stringify({
systemPrompt: "Sie qualifizieren eingehende B2B-Leads für ein Vertriebsteam."
})
});
const result = await response.json();
console.log(result.text);
curl -X POST "https://api.talkturo.com/api/generate-opportunity-prompt" \
-H "Authorization: Bearer tk_live_example_7xmk2q9p" \
-H "Content-Type: application/json" \
-d '{
"systemPrompt": "Sie qualifizieren eingehende B2B-Leads für ein Vertriebsteam."
}'
{
"text": "Bewerten Sie, ob das Gespräch eine qualifizierte Vertriebsopportunität enthält. Berücksichtigen Sie Bedarf, Budget, Entscheidungsbefugnis und den geplanten Zeitrahmen."
}
{
"error": "No system prompt provided"
}
{
"error": "Failed to generate prompt"
}
const response = await fetch(
"https://api.talkturo.com/api/generate-success-prompt?accountSlug=acme-sales",
{
method: "POST",
headers: {
"Authorization": "Bearer tk_live_example_7xmk2q9p",
"Content-Type": "application/json"
},
body: JSON.stringify({
"systemPrompt": "Sie analysieren Gespräche eines Customer-Success-Teams."
})
}
);
const result = await response.json();
console.log(result.text);
curl -X POST "https://api.talkturo.com/api/generate-success-prompt?accountSlug=acme-sales" \
-H "Authorization: Bearer tk_live_example_7xmk2q9p" \
-H "Content-Type: application/json" \
-d '{
"systemPrompt": "Sie analysieren Gespräche eines Customer-Success-Teams."
}'
{
"text": "Bestimmen Sie, ob der Kunde sein Ziel erreicht hat. Prüfen Sie, ob das Anliegen gelöst wurde, nächste Schritte vereinbart wurden und ein konkreter Mehrwert erkennbar ist."
}
{
"error": "No system prompt provided"
}
{
"error": "Failed to generate the success definition"
}
const response = await fetch("https://api.talkturo.com/api/llm/chat", {
method: "POST",
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [
{
role: "system",
content: "Sie sind ein Assistent für Gesprächsanalysen."
},
{
role: "user",
content: "Fassen Sie die wichtigsten nächsten Schritte zusammen."
}
]
})
});
const result = await response.json();
console.log(result.choices[0].message.content);
curl -X POST "https://api.talkturo.com/api/llm/chat" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "Sie sind ein Assistent für Gesprächsanalysen."
},
{
"role": "user",
"content": "Fassen Sie die wichtigsten nächsten Schritte zusammen."
}
]
}'
{
"id": "chatcmpl_example_8f3k",
"object": "chat.completion",
"created": 1735689600,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Die nächsten Schritte sind die Terminbestätigung und die Zusendung des Angebots."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 42,
"completion_tokens": 18,
"total_tokens": 60
}
}
{
"success": false,
"error": "messages required"
}
const response = await fetch("https://api.talkturo.com/api/llm/chat", {
method: "POST",
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gpt-4o-mini",
messages: [
{
role: "user",
content: "Nennen Sie drei nächste Schritte."
}
],
stream: true
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(decoder.decode(value, { stream: true }));
}
curl -N -X POST "https://api.talkturo.com/api/llm/chat" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "Nennen Sie drei nächste Schritte."
}
],
"stream": true
}'
data: {"id":"chatcmpl_example_8f3k","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Die"},"finish_reason":null}]}
data: {"id":"chatcmpl_example_8f3k","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":" nächsten Schritte"},"finish_reason":null}]}
data: [DONE]
const response = await fetch("https://api.talkturo.com/api/prompt-presets", {
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
}
});
const result = await response.json();
console.log(result.data.presets);
curl "https://api.talkturo.com/api/prompt-presets" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
{
"success": true,
"data": {
"presets": [
{
"id": "preset_4f8a2c",
"user_id": "user_91d2e7",
"uid": "user_91d2e7",
"title": "Gesprächszusammenfassung",
"prompt": "Fassen Sie das Gespräch mit den wichtigsten Aktionen zusammen.",
"is_default": 0,
"is_template": 0,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T10:30:00.000Z"
}
]
}
}
const response = await fetch("https://api.talkturo.com/api/prompt-presets", {
method: "POST",
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
"Content-Type": "application/json"
},
body: JSON.stringify({
title: "Gesprächszusammenfassung",
prompt: "Fassen Sie das Gespräch mit den wichtigsten Aktionen zusammen."
})
});
const result = await response.json();
console.log(result.data.preset.id);
curl -X POST "https://api.talkturo.com/api/prompt-presets" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-H "Content-Type: application/json" \
-d '{
"title": "Gesprächszusammenfassung",
"prompt": "Fassen Sie das Gespräch mit den wichtigsten Aktionen zusammen."
}'
{
"success": true,
"data": {
"preset": {
"id": "preset_4f8a2c",
"user_id": "user_91d2e7",
"uid": "user_91d2e7",
"title": "Gesprächszusammenfassung",
"prompt": "Fassen Sie das Gespräch mit den wichtigsten Aktionen zusammen.",
"is_default": 0,
"is_template": 0,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T10:30:00.000Z"
}
}
}
{
"success": false,
"error": "title and prompt required"
}
const response = await fetch(
"https://api.talkturo.com/api/prompt-presets/preset_4f8a2c",
{
method: "PUT",
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example",
"Content-Type": "application/json"
},
body: JSON.stringify({
title: "Zusammenfassung und nächste Schritte"
})
}
);
const result = await response.json();
console.log(result.data.preset);
curl -X PUT "https://api.talkturo.com/api/prompt-presets/preset_4f8a2c" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-H "Content-Type: application/json" \
-d '{
"title": "Zusammenfassung und nächste Schritte"
}'
{
"success": true,
"data": {
"preset": {
"id": "preset_4f8a2c",
"user_id": "user_91d2e7",
"uid": "user_91d2e7",
"title": "Zusammenfassung und nächste Schritte",
"prompt": "Fassen Sie das Gespräch mit den wichtigsten Aktionen zusammen.",
"is_default": 0,
"is_template": 0,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T11:45:00.000Z"
}
}
}
{
"success": false,
"error": "Nothing to update"
}
{
"success": false,
"error": "Preset not found or permission denied"
}
const response = await fetch(
"https://api.talkturo.com/api/prompt-presets/preset_4f8a2c",
{
method: "DELETE",
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
}
}
);
const result = await response.json();
console.log(result.data.changes);
curl -X DELETE "https://api.talkturo.com/api/prompt-presets/preset_4f8a2c" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
{
"success": true,
"data": {
"changes": 1
}
}
{
"success": false,
"error": "Preset not found or permission denied"
}
const response = await fetch(
"https://api.talkturo.com/api/prompt-presets/templates",
{
headers: {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
}
}
);
const result = await response.json();
console.log(result.data.templates);
curl "https://api.talkturo.com/api/prompt-presets/templates" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
{
"success": true,
"data": {
"templates": []
}
}
KI-Werkzeuge über die API nutzen
Verwenden Sie die Talkturo API, um Prompts zu verbessern und zu übersetzen, strukturierte Prompts zu generieren, LLM-Chat-Completions auszuführen und persönliche Prompt-Vorlagen zu verwalten.
Die API verwendet zwei Authentifizierungsmethoden. Die Prompt-Endpunkte akzeptieren Talkturo API-Keys oder Supabase-Session-Token. Die Desktop-Endpunkte für LLMs und Prompt-Vorlagen erfordern ein Supabase-JWT im Authorization-Header.
Authentifizierung
Verwenden Sie diese Methode für /api/improve-prompt, /api/translate-prompt, /api/generate-opportunity-prompt und /api/generate-success-prompt.
Authorization: Bearer tk_live_example_7xmk2q9p
Akzeptiert werden:
- ein Talkturo API-Key mit dem Präfix
tk_live_odertk_test_ - ein Supabase-Session-Token als Bearer-Token
- eine authentifizierte Supabase-Cookie-Session
Verwenden Sie ein gültiges Supabase-Access-Token für /api/llm/chat und die Prompt-Presets-Endpunkte.
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example
Das Token muss gültig und darf nicht abgelaufen sein.
Prompt verbessern
Verbessern Sie einen bestehenden Prompt, ohne dessen erkannte Eingabesprache zu ändern.
POST /api/improve-prompt
Body-Parameter
Der zu verbessernde Prompt. Der Endpoint prüft, ob ein wahrer Wert übergeben wurde.
Antwortfelder
Der verbesserte Prompt. Die Antwort bleibt in der erkannten Eingabesprache.
Prompt übersetzen
Übersetzen Sie einen Prompt in eine angegebene Zielsprache.
POST /api/translate-prompt
Body-Parameter
Der zu übersetzende Prompt. Der Endpoint prüft, ob ein wahrer Wert übergeben wurde.
Die Zielsprache. Sie können beispielsweise German oder de übergeben.
Antwortfelder
Der übersetzte Prompt.
Opportunitäts-Prompt generieren
Generieren Sie aus einem System-Prompt einen Prompt für die Bewertung von Vertriebsopportunitäten.
POST /api/generate-opportunity-prompt
Body-Parameter
Der System-Prompt, aus dem der Opportunitäts-Prompt generiert wird.
Antwortfelder
Der generierte Opportunitäts-Prompt.
Erfolgskriterien-Prompt generieren
Generieren Sie aus einem System-Prompt einen Prompt zur Definition von Erfolgskriterien.
POST /api/generate-success-prompt
Body-Parameter
Der System-Prompt, aus dem der Prompt für Erfolgskriterien generiert wird.
Authentifizierungskontext
Bei API-Key-Aufrufen wird der Account über den API-Key bestimmt. Bei Session-Token-Aufrufen müssen Sie accountSlug als Query-Parameter übergeben. Bei Cookie-Sessions benötigt die Authentifizierung entweder accountSlug oder teamId als Query-Parameter oder Body-Feld.
Der Account-Slug. Er kann für Session-Token-Aufrufe erforderlich sein.
Die Account- oder Team-ID. Sie kann für Cookie-Session-Aufrufe anstelle von accountSlug erforderlich sein.
Antwortfelder
Der generierte Prompt für die Erfolgskriterien.
LLM-Chat-Completions
Führen Sie OpenAI-kompatible Chat-Completions mit einer zugelassenen Modell-ID aus. Sie können die Antwort als vollständiges JSON-Dokument oder als Server-Sent Events streamen.
POST /api/llm/chat
Der Endpoint erfordert ein Desktop-Supabase-JWT. Die URL lautet /api/llm/chat; verwenden Sie nicht /api/desktop/llm/chat.
Body-Parameter
Die Modell-ID. Der Wert muss in der Zulassungsliste enthalten sein. Bei Modellnamen mit dem Suffix -proxied entfernt Talkturo das Suffix vor dem Aufruf von OpenAI.
gpt-4.1gpt-4.1-proxiedgpt-4ogpt-4o-proxiedgpt-4o-minigpt-4o-mini-proxiedgpt-4.1-nanogpt-4.1-nano-proxiedgpt-5-nanogpt-5-nano-proxiedgpt-4o-mini-transcribeEin nicht leeres Array mit OpenAI-kompatiblen Chat-Nachrichten.
Steuert, ob die Antwort gestreamt wird. Der Standardwert ist false.
Weitere OpenAI-Chat-Completion-Optionen werden unverändert an OpenAI weitergeleitet.
Streaming
Setzen Sie stream auf true, um eine SSE-Antwort zu erhalten.
Die Antwort verwendet Content-Type: text/event-stream; charset=utf-8. Weitere gesetzte Header sind Cache-Control: no-cache, no-transform, Connection: keep-alive und X-Accel-Buffering: no.
Der Server benötigt den Schlüssel OPENAI_API_KEY. Fehlt dieser Schlüssel, antwortet der Endpoint mit HTTP-Status 500.
Prompt-Presets
Verwalten Sie persönliche Prompt-Presets mit den Desktop-Endpunkten. Alle Methoden in diesem Abschnitt erfordern ein Desktop-Supabase-JWT.
GET /api/prompt-presets
Rufen Sie die Presets des authentifizierten Benutzers ab. Die Antwort ist nach is_default absteigend und anschließend nach title aufsteigend sortiert.
POST /api/prompt-presets
Erstellen Sie ein persönliches Prompt-Preset.
Body-Parameter
Der Titel des Presets.
Der Prompt-Inhalt des Presets.
PUT /api/prompt-presets/{id}
Aktualisieren Sie den Titel oder den Prompt eines persönlichen Presets. Übergeben Sie mindestens eines der beiden Felder. Leere Strings werden ignoriert.
Pfadparameter
Die ID des zu aktualisierenden Presets.
Body-Parameter
Der neue Titel des Presets.
Der neue Prompt-Inhalt.
Standard-Presets und Presets, die nicht dem authentifizierten Benutzer gehören, können nicht aktualisiert werden.
DELETE /api/prompt-presets/{id}
Löschen Sie ein persönliches Prompt-Preset.
Pfadparameter
Die ID des zu löschenden Presets.
Standard-Presets und Presets, die nicht dem authentifizierten Benutzer gehören, können nicht gelöscht werden.
GET /api/prompt-presets/templates
Rufen Sie verfügbare Prompt-Vorlagen ab. Dieser Endpoint liefert derzeit immer ein leeres Array.
Fehlerbehandlung
Die Endpoints verwenden je nach Route unterschiedliche Antwortformate. Prüfen Sie neben dem HTTP-Status immer die Antwortfelder error, success oder reason.