Integrations
Connecting external platforms, executing syncs, and webhooks
Integrations
Integrations connect Linkit to external platforms — e-commerce marketplaces, delivery services, ERPs, and warehouse systems. Once configured, integrations sync data automatically on a schedule or on demand via the API.
How Integrations Work
Configure
Set connection details — API keys, endpoints, and custom settings for each platform.
Execute
Run the integration via API, schedule, or both. Supports dry-run mode for testing.
Sync
Products, inventory, and orders flow between systems based on the integration type.
Monitor
Check execution results, telemetry, and error logs through the health endpoints.
Integration Summary Object
{
"slug": "salla",
"name": "Salla",
"type": "ecommerce",
"enabled": true,
"last_sync": "2024-01-15T10:30:00Z"
}| Field | Type | Description |
|---|---|---|
slug | string | Unique identifier |
name | string | Display name |
type | string | Integration type |
enabled | boolean | Whether active |
last_sync | string | Last execution time |
List Integrations
GET /api/v1/appsReturns all installed integrations for the authenticated organization.
Example
curl -X GET "https://linkit.works/api/v1/apps" \
-H "Authorization: your_api_key_here"Get Integration Config
GET /api/v1/integrations/{orgId}/{slug}/config| Parameter | Type | Description |
|---|---|---|
orgId | string | Organization ID |
slug | string | Integration slug |
Response
{
"slug": "salla",
"name": "Salla",
"type": "ecommerce",
"organization_id": "org_123",
"version": "2.1.0",
"base_url": "https://api.salla.dev",
"headers_count": 2,
"params_count": 4,
"supports_staging": true,
"custom_config": {
"sync_products": true,
"sync_inventory": true,
"sync_orders": true
},
"configured_at": "2024-01-10T08:00:00Z"
}Sensitive data (API keys, passwords) are never returned. Only field counts and non-sensitive settings are exposed.
Execute Integration
Trigger an integration immediately.
POST /api/v1/integrations/{orgId}/{slug}/executeRequest Body (Optional)
{
"dry_run": false,
"timeout_seconds": 120
}| Field | Type | Default | Description |
|---|---|---|---|
dry_run | boolean | false | Simulate without writing changes |
timeout_seconds | integer | 60 | Maximum execution time |
Example
curl -X POST "https://linkit.works/api/v1/integrations/org_123/salla/execute" \
-H "Authorization: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"dry_run": false, "timeout_seconds": 120}'const response = await fetch(
'https://linkit.works/api/v1/integrations/org_123/salla/execute',
{
method: 'POST',
headers: {
'Authorization': 'your_api_key_here',
'Content-Type': 'application/json'
},
body: JSON.stringify({ dry_run: false, timeout_seconds: 120 })
}
);
const result = await response.json();import requests
response = requests.post(
'https://linkit.works/api/v1/integrations/org_123/salla/execute',
headers={'Authorization': 'your_api_key_here'},
json={'dry_run': False, 'timeout_seconds': 120}
)
result = response.json()Response
{
"success": true,
"duration_ms": 1523,
"executed_at": "2024-01-15T10:30:00Z",
"processed_ids": ["prd_001", "prd_002"],
"error": null,
"telemetry": {
"products_synced": 150,
"inventory_updates": 89,
"orders_fetched": 12,
"api_calls_made": 45
}
}Batch Execute
Execute multiple integrations with controlled concurrency.
POST /api/v1/integrations/{orgId}/execute-batchRequest Body
{
"slugs": ["salla", "noon", "amazon"],
"max_concurrent": 2
}Response
{
"total_requests": 3,
"successful": 2,
"failed": 1,
"total_duration_ms": 4523,
"results": [
{ "slug": "salla", "success": true, "duration_ms": 1523, "error": null },
{ "slug": "noon", "success": true, "duration_ms": 2156, "error": null },
{ "slug": "amazon", "success": false, "duration_ms": 844, "error": "Authentication failed" }
]
}Dry Run Mode
Set "dry_run": true to test an integration without writing changes:
- External APIs are called normally (validates connectivity)
- Data is fetched and processed
- No changes are written to Linkit's database
- Response includes what would have changed
Useful for testing new configurations and previewing sync results.
Organization App Webhooks
Webhooks receive real-time events from external platforms.
/api/webhooks/org-apps/{org_app_id}Methods
| Method | Purpose |
|---|---|
POST | Receive and persist webhook payload |
GET | Return the expected payload contract |
PATCH | Edit a stored webhook entity |
Authentication
Authorization: Bearer <token>X-Webhook-Token: <token>
The org_app_id resolves tenant and app context directly.
Integration Types
| Type | Examples |
|---|---|
ecommerce | Salla, Zid |
marketplace | Noon, Amazon |
warehouse | Custom WMS, SAP WM |
erp | SAP, Oracle, NetSuite |
pos | Square, Lightspeed |
Rate Limits
| Operation | Limit |
|---|---|
| Single execution | 60/min per integration |
| Batch execution | 10/min |
| Config reads | 100/min |
Error Responses
404 Not Found
{
"code": 404,
"error": "Integration not found",
"details": { "slug": "nonexistent" }
}500 Execution Failed
{
"code": 500,
"error": "Integration execution failed",
"details": {
"slug": "salla",
"error": "Connection timeout after 60 seconds",
"partial_results": { "products_synced": 45, "failed_at": "inventory_sync" }
}
}