Linkit

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"
}
FieldTypeDescription
slugstringUnique identifier
namestringDisplay name
typestringIntegration type
enabledbooleanWhether active
last_syncstringLast execution time

List Integrations

GET /api/v1/apps

Returns 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
ParameterTypeDescription
orgIdstringOrganization ID
slugstringIntegration 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}/execute

Request Body (Optional)

{
  "dry_run": false,
  "timeout_seconds": 120
}
FieldTypeDefaultDescription
dry_runbooleanfalseSimulate without writing changes
timeout_secondsinteger60Maximum 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-batch

Request 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

MethodPurpose
POSTReceive and persist webhook payload
GETReturn the expected payload contract
PATCHEdit a stored webhook entity

Authentication

  • Authorization: Bearer <token>
  • X-Webhook-Token: <token>

The org_app_id resolves tenant and app context directly.


Integration Types

TypeExamples
ecommerceSalla, Zid
marketplaceNoon, Amazon
warehouseCustom WMS, SAP WM
erpSAP, Oracle, NetSuite
posSquare, Lightspeed

Rate Limits

OperationLimit
Single execution60/min per integration
Batch execution10/min
Config reads100/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" }
  }
}