API Endpoints

Complete API endpoint reference.

Deployments

List Deployments

GET /api/v1/deployments

curl -H "Authorization: Bearer TOKEN" \
  https://test.kovanetwork.com/api/v1/deployments

Create Deployment

POST /api/v1/deployments

curl -X POST \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sdl": "version: 2.0\nservices:..."}' \
  https://test.kovanetwork.com/api/v1/deployments

Get Deployment

GET /api/v1/deployments/:id

Close Deployment

POST /api/v1/deployments/:id/close

Restart Deployment

POST /api/v1/deployments/:id/restart

Logs

Fetch Logs (HTTP)

GET /api/v1/deployments/:id/logs

| Parameter | Type | Description | |-----------|------|-------------| | limit | number | Max logs to return (default: 100) | | offset | number | Skip first n logs (pagination) | | service | string | Filter by service name | | search | string | Search log content |

# Get last 100 logs
curl -H "Authorization: Bearer TOKEN" \
  https://test.kovanetwork.com/api/v1/deployments/ID/logs?limit=100

# Search logs
curl -H "Authorization: Bearer TOKEN" \
  https://test.kovanetwork.com/api/v1/deployments/ID/logs?search=error

Stream Logs (WebSocket)

Connect to WebSocket for real-time log streaming:

const ws = new WebSocket(
  'wss://test.kovanetwork.com/api/v1/deployments/logs/stream?deploymentId=YOUR_ID'
);

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);

  if (data.type === 'log') {
    console.log(`[${data.serviceName}] ${data.logLine}`);
  }
};

WebSocket Message Format

{
  "type": "log",
  "id": 4268,
  "deploymentId": "9d4a6656-02c8-4e16-a4c3-910efe92e7e2-1762873887351",
  "serviceName": "web",
  "timestamp": "2025-11-12T09:45:02.963133Z",
  "logLine": "GET / HTTP/1.1 200 90",
  "stream": "stdout"
}