> ## Documentation Index
> Fetch the complete documentation index at: https://docs.langdock.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP Request

> Stelle HTTP-Anfragen an externe APIs für benutzerdefinierte Integrationen und Datenabruf.

<img src="https://mintcdn.com/langdock-34/cWyoB3RsITQmAUnM/images/workflows/nodes/http-request.jpg?fit=max&auto=format&n=cWyoB3RsITQmAUnM&q=85&s=617a4f6f8141d8ccf0ec5bf4497c17c8" alt="HTTP Request" width="1920" height="903" data-path="images/workflows/nodes/http-request.jpg" />

## Überblick

Der HTTP-Request-Node ermöglicht es dir, jede externe API aufzurufen - hole Daten ab, sende Updates, triggere Aktionen oder integriere mit Services, die keine nativen Integrationen haben.

<Info>
  **Am besten für**: Benutzerdefinierte API-Integrationen, Abrufen externer Daten, Senden von Webhooks und Verbinden mit jedem HTTP-basierten Service.
</Info>

## Konfiguration

### Aus cURL importieren

Klicke auf "Aus cURL importieren", um einen cURL-Befehl einzufügen und automatisch alle Felder zu füllen (URL, Methode, Header, Parameter). Großartig zum schnellen Einrichten von Anfragen aus API-Dokumentation.

### URL (Erforderlich)

Der API-Endpoint zum Aufrufen. Unterstützt Auto-, Manual- und Prompt-AI-Modi.

**Manual-Modus-Beispiel:**

```handlebars theme={null}
https://api.example.com/users/{{trigger.output.user_id}}/orders
```

### Methode

Wähle die HTTP-Methode:

* **GET**: Daten abrufen
* **POST**: Neue Ressourcen erstellen
* **PUT**: Bestehende Ressourcen ersetzen
* **PATCH**: Bestehende Ressourcen aktualisieren
* **DELETE**: Ressourcen entfernen

### Header

Füge benutzerdefinierte Header als Schlüssel-Wert-Paare hinzu. Häufige Header:

**Authentifizierung:**

```text theme={null}
Key: Authorization
Value: Bearer {{trigger.output.api_token}}
```

**Content-Type:**

```text theme={null}
Key: Content-Type
Value: application/json
```

Klicke auf "Header hinzufügen", um mehrere Header einzufügen.

### Query-Parameter

Füge URL-Query-Parameter als Schlüssel-Wert-Paare hinzu, anstatt sie in die URL einzufügen.

**Beispiel:**

```text theme={null}
URL: https://api.example.com/search
Parameter:
  - Key: query, Value: {{trigger.output.search_term}}
  - Key: limit, Value: 10

Ergibt: https://api.example.com/search?query=laptops&limit=10
```

### Body (Nur POST/PUT/PATCH)

Die Request-Payload, typischerweise im JSON-Format. Unterstützt Variablen von vorherigen Nodes.

```json theme={null}
{
  "name": "{{trigger.output.name}}",
  "email": "{{trigger.output.email}}",
  "status": "{{agent.output.structured.category}}",
  "metadata": {
    "source": "workflow",
    "processed_at": "{{trigger.output.timestamp}}"
  }
}
```

## Beispiel-Anwendungsfälle

### Benutzerdaten abrufen (GET)

```text theme={null}
Methode: GET
URL: https://api.crm.com/users/{{trigger.output.user_id}}
Header:
  - Authorization: Bearer YOUR_TOKEN
```

### Datensatz erstellen (POST)

```text theme={null}
Methode: POST
URL: https://api.system.com/records
Header:
  - Content-Type: application/json
Body:
{
  "title": "{{trigger.output.title}}",
  "category": "{{agent.output.structured.category}}",
  "priority": "{{agent.output.structured.priority}}"
}
```

### Suchen mit Parametern (GET)

```text theme={null}
Methode: GET
URL: https://api.example.com/search
Query-Parameter:
  - q: {{trigger.output.search_term}}
  - limit: 20
  - format: json
```

### Status aktualisieren (PATCH)

```text theme={null}
Methode: PATCH
URL: https://api.app.com/items/{{trigger.output.id}}
Header:
  - Content-Type: application/json
Body:
{
  "status": "completed",
  "updated_by": "workflow"
}
```

## Auf Response-Daten zugreifen

Nach Ausführung des HTTP-Requests greife auf die Antwort in nachfolgenden Nodes zu:

```handlebars theme={null}
{{http_node.output.status}}              → Status-Code (200, 404, etc.)
{{http_node.output.data}}                 → Response-Body
{{http_node.output.data.user.name}}       → Verschachtelte Response-Daten
{{http_node.output.data.items[0].id}}     → Array-Items
{{http_node.output.headers}}              → Response-Header
```

### Response-Status-Codes

Verwende den Status-Code, um zu prüfen, ob die Anfrage erfolgreich war:

```handlebars theme={null}
{{ http_node.output.status === 200 }}     → Erfolg
{{ http_node.output.status >= 400 }}      → Fehler aufgetreten
```

## Best Practices

<AccordionGroup>
  <Accordion title="Verwende 'Aus cURL importieren'">
    Wenn du einen funktionierenden cURL-Befehl aus API-Docs hast, verwende "Aus cURL importieren", um automatisch alle Felder korrekt einzurichten.
  </Accordion>

  <Accordion title="Handle Fehler">
    Füge immer Fehlerbehandlung hinzu. Verwende einen Condition-Node nach dem HTTP-Request, um `{{ http_node.output.status === 200 }}` zu prüfen.
  </Accordion>

  <Accordion title="Verwende Query-Parameter">
    Füge Query-Parameter im Parameter-Bereich hinzu, anstatt sie in der URL fest zu codieren.
  </Accordion>

  <Accordion title="Sichere API-Keys">
    Speichere API-Keys nie direkt im Workflow. Verwende Umgebungsvariablen oder sichere Secrets.
  </Accordion>
</AccordionGroup>

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Webhook-Trigger" icon="webhook" href="/de/using-langdock/workflows/nodes/triggers/webhook-trigger">
    Empfange HTTP-Anfragen von externen Systemen
  </Card>

  <Card title="Code-Node" icon="code" href="/de/using-langdock/workflows/nodes/code-node">
    Transformiere API-Antworten
  </Card>
</CardGroup>
