234 lines
5.0 KiB
Markdown
234 lines
5.0 KiB
Markdown
# n8n API Complete Documentation
|
|
|
|
**Base URL:** `https://n8n.oky.sh/api/v1/`
|
|
|
|
## Authentication
|
|
|
|
Use the JWT token from `/home/bam/.n8n_api_key`:
|
|
|
|
```bash
|
|
Authorization: Bearer <token-from-.n8n_api_key>
|
|
Content-Type: application/json
|
|
```
|
|
|
|
## API Operations
|
|
|
|
### 1. List All Workflows
|
|
```bash
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/workflows
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
[
|
|
{
|
|
"id": "workflow_id",
|
|
"name": "Workflow Name",
|
|
"active": true,
|
|
"nodes": [...],
|
|
"connections": {...}
|
|
}
|
|
]
|
|
```
|
|
|
|
### 2. Create New Workflow
|
|
```bash
|
|
curl -X POST \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
-H "Content-Type: application/json" \
|
|
https://n8n.oky.sh/api/v1/workflows \
|
|
-d '{
|
|
"name": "My New Workflow",
|
|
"nodes": [...],
|
|
"connections": {...}
|
|
}'
|
|
```
|
|
|
|
### 3. Get Specific Workflow
|
|
```bash
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID>
|
|
```
|
|
|
|
### 4. Update Workflow
|
|
```bash
|
|
curl -X PUT \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
-H "Content-Type: application/json" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID> \
|
|
-d '{
|
|
"name": "Updated Name",
|
|
"nodes": [...],
|
|
"connections": {...}
|
|
}'
|
|
```
|
|
|
|
### 5. Activate Workflow
|
|
```bash
|
|
curl -X POST \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID>/activate
|
|
```
|
|
|
|
### 6. Deactivate Workflow
|
|
```bash
|
|
curl -X POST \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID>/deactivate
|
|
```
|
|
|
|
### 7. Delete Workflow
|
|
```bash
|
|
curl -X DELETE \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID>
|
|
```
|
|
|
|
### 8. Execute Workflow (Manual Trigger)
|
|
```bash
|
|
curl -X POST \
|
|
-H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
-H "Content-Type: application/json" \
|
|
https://n8n.oky.sh/api/v1/workflows/<WORKFLOW_ID>/execute \
|
|
-d '{
|
|
"input": {
|
|
"key": "value"
|
|
}
|
|
}'
|
|
```
|
|
|
|
### 9. Get Execution Details
|
|
```bash
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/executions/<EXECUTION_ID>
|
|
```
|
|
|
|
### 10. List All Executions
|
|
```bash
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/executions?filter='{"workflowId":"<WORKFLOW_ID>"}'
|
|
```
|
|
|
|
### 11. Get Workflow Credentials
|
|
```bash
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/credentials
|
|
```
|
|
|
|
## Webhook URLs
|
|
|
|
### Manual Webhook (Publicly Accessible)
|
|
```
|
|
https://n8n.oky.sh/webhook/<WEBHOOK_ID>
|
|
```
|
|
|
|
### Workflow-Specific Webhooks
|
|
Navigate to: Workflow Settings → Webhook URLs in n8n UI
|
|
|
|
## Error Codes
|
|
|
|
- **200** - Success
|
|
- **401** - Unauthorized (check API token)
|
|
- **404** - Not found (check workflow ID)
|
|
- **422** - Validation error (check request body)
|
|
|
|
## Python Example
|
|
|
|
```python
|
|
import requests
|
|
|
|
API_URL = "https://n8n.oky.sh/api/v1"
|
|
with open("/home/bam/.n8n_api_key", "r") as f:
|
|
headers = {"Authorization": f"Bearer {f.read().strip()}"}
|
|
|
|
# List workflows
|
|
response = requests.get(f"{API_URL}/workflows", headers=headers)
|
|
workflows = response.json()
|
|
print(f"Found {len(workflows)} workflows")
|
|
|
|
# Create workflow
|
|
new_workflow = {
|
|
"name": "My Test Workflow",
|
|
"nodes": [...],
|
|
"connections": {...}
|
|
}
|
|
response = requests.post(
|
|
f"{API_URL}/workflows",
|
|
headers=headers,
|
|
json=new_workflow
|
|
)
|
|
workflow = response.json()
|
|
print(f"Created workflow: {workflow['id']}")
|
|
|
|
# Activate workflow
|
|
requests.post(
|
|
f"{API_URL}/workflows/{workflow['id']}/activate",
|
|
headers=headers
|
|
)
|
|
```
|
|
|
|
## Working with Webhooks
|
|
|
|
### Testing Webhook
|
|
```bash
|
|
curl -X POST https://n8n.oky.sh/webhook/test-webhook-id \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"test": "data"}'
|
|
```
|
|
|
|
### Checking Executions
|
|
```bash
|
|
# List recent executions
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/executions
|
|
|
|
# Get specific execution details
|
|
curl -H "Authorization: Bearer $(cat /home/bam/.n8n_api_key)" \
|
|
https://n8n.oky.sh/api/v1/executions/<EXECUTION_ID>
|
|
```
|
|
|
|
## Managing Workflow Data
|
|
|
|
### Using staticData
|
|
```javascript
|
|
// Store data across workflow execution
|
|
$workflow.staticData = $workflow.staticData || {};
|
|
$workflow.staticData.retry_count = ($workflow.staticData.retry_count || 0) + 1;
|
|
|
|
// Retrieve data
|
|
const retryCount = $workflow.staticData.retry_count || 0;
|
|
```
|
|
|
|
### Accessing Previous Node Data
|
|
```javascript
|
|
// SSH nodes overwrite ALL data
|
|
// Use $node to access previous node output
|
|
const repoData = $node["Extract Repo Info"].json;
|
|
const sshOutput = $json;
|
|
|
|
return {
|
|
...repoData, // Preserved from previous node
|
|
...sshOutput // Current node output
|
|
};
|
|
```
|
|
|
|
## API Token Location
|
|
|
|
**File:** `/home/bam/.n8n_api_key`
|
|
**Format:** JWT Token
|
|
**Permissions:** Should be 600 (readable only by owner)
|
|
|
|
```bash
|
|
# View token (DO NOT commit this file)
|
|
cat /home/bam/.n8n_api_key
|
|
|
|
# Set proper permissions
|
|
chmod 600 /home/bam/.n8n_api_key
|
|
```
|
|
|
|
---
|
|
|
|
*Last Updated: 2025-12-02*
|
|
*Complete n8n API reference*
|