Nutzt du unsere API über ein Dedicated Deployment? Ersetze einfach api.langdock.com mit der Basis-URL deines Deployments: <deployment-url>/api/public
Erstellt eine neue Action für eine Integration. Actions sind Fähigkeiten, die Agenten ausführen können, wie zum Beispiel Nachrichten senden, Daten abrufen oder Datensätze in externen Systemen erstellen.
Erforderliche Scopes
Dieser Endpoint erfordert den INTEGRATION_API Scope.
Pfad-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|
integrationId | string | Ja | UUID der Integration |
Request Body
| Parameter | Typ | Erforderlich | Beschreibung |
|---|
name | string | Ja | Action-Name (max. 100 Zeichen) |
description | string | Nein | Action-Beschreibung (max. 1.000 Zeichen) |
code | string | Nein | Auszuführender JavaScript-Code (max. 40.000 Zeichen) |
inputFields | array | Nein | Eingabefelder für die Action |
Eingabefeld-Schema
Jedes Eingabefeld hat die folgenden Eigenschaften:
| Eigenschaft | Typ | Erforderlich | Beschreibung |
|---|
label | string | Ja | Feld-Label (max. 100 Zeichen) |
type | string | Nein | Feldtyp (Standard: “TEXT”) |
description | string | Nein | Feld-Beschreibung (max. 500 Zeichen) |
placeholder | string | Nein | Platzhaltertext (max. 200 Zeichen) |
required | boolean | Nein | Ob das Feld erforderlich ist (Standard: false) |
options | array | Nein | Optionen für SELECT-Felder |
allowMultiSelect | boolean | Nein | Mehrfachauswahl für SELECT-Felder erlauben |
contextActionId | string | Nein | UUID der Action für dynamische Optionen |
Feldtypen
| Typ | Beschreibung |
|---|
TEXT | Einzeilige Texteingabe |
MULTI_LINE_TEXT | Mehrzeilige Texteingabe |
NUMBER | Numerische Eingabe |
BOOLEAN | Wahr/Falsch-Umschalter |
SELECT | Dropdown-Auswahl |
PASSWORD | Passwort-Eingabe (maskiert) |
VECTOR | Vektor-Eingabe |
OBJECT | Objekt-Eingabe |
FILE | Datei-Eingabe |
ID | Bezeichner-Eingabe |
Beispiel
const axios = require("axios");
async function createAction(integrationId) {
const response = await axios.post(
`https://api.langdock.com/integrations/v1/${integrationId}/actions/create`,
{
name: "Get User Data",
description: "Retrieves user information from the internal API by user ID",
code: `
const response = await fetch('https://api.example.com/users/' + inputs.userId, {
headers: {
'Authorization': 'Bearer ' + secrets.API_TOKEN
}
});
if (!response.ok) {
throw new Error('User not found');
}
return await response.json();
`,
inputFields: [
{
label: "User ID",
type: "TEXT",
description: "The unique identifier of the user",
placeholder: "e.g., user_123",
required: true
},
{
label: "Include Details",
type: "BOOLEAN",
description: "Include extended user details",
required: false
}
]
},
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
}
);
console.log("Created action:", response.data.action);
}
createAction("550e8400-e29b-41d4-a716-446655440000");
Erfolgreiche Antwort (201 Created)
{
action: {
id: string; // UUID der erstellten Action
name: string; // Action-Name
slug: string; // URL-freundliche Kennung (automatisch generiert)
description: string; // Action-Beschreibung
code: string | null; // JavaScript-Code
order: number; // Anzeigereihenfolge
inputFields: Array<{
slug: string; // Feld-Kennung
label: string; // Anzeige-Label
type: string; // Feldtyp
description: string;
placeholder: string | null;
required: boolean;
order: number;
options: Array<{label: string, value: string}> | null;
allowMultiSelect: boolean | null;
contextActionId: string | null;
}>;
};
}
Fehlerbehandlung
| Status Code | Beschreibung |
|---|
| 400 | Ungültiger Request Body oder ungültige Integration-ID |
| 401 | Ungültiger oder fehlender API-Schlüssel |
| 403 | Kein Zugriff auf diese Integration |
| 404 | Integration nicht gefunden |
| 409 | Eine Action mit diesem Namen existiert bereits in der Integration |
| 429 | Rate Limit überschritten |
| 500 | Interner Serverfehler |
Code-Ausführungsumgebung
Action-Code läuft in einer isolierten JavaScript-Umgebung mit Zugriff auf:
inputs - Objekt mit den Werten der Eingabefelder
secrets - Objekt mit konfigurierten Secrets für die Integration
fetch - Standard fetch API für HTTP-Anfragen
- Standard JavaScript-Built-ins
Action-Code sollte Fehler sauber behandeln. Unbehandelte Fehler führen dazu, dass die Action fehlschlägt und eine Fehlermeldung an den Agenten zurückgegeben wird.
Langdock blockiert bewusst Browser-basierte Anfragen, um deinen API-Schlüssel zu schützen und die Sicherheit deiner Anwendungen zu gewährleisten. Weitere Informationen findest du in unserem Guide zu Best Practices für API-Schlüssel.