The IDS Halo Data Ingestion and Processing API is designed for server-to-server integration scenarios where external systems need to:
All requests are authenticated using API keys. Data is automatically associated with the workspace linked to the provided API key — no workspace identifier is needed in requests.
https://idshalo.asets.io/api/v1 Authorization: Bearer <API_KEY>┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐
│ 1. Upload │────▶│ 2. Receive │────▶│ 3. Trigger │────▶│ 4. Poll |
│
│ E57 file │ │ scanId │ │ processing │ │ status |
│
└──────────────┘ └──────────────┘ └──────────────┘ └─────────────┘
POST /scans Response POST /scans/ GET /scans/
{scanId}/process {scanId} GET /health {
"status": "ok",
"timestamp": "2026-01-21T10:15:00Z"
}{
"status": "degraded",
"message": "Service temporarily unavailable"
}POST /scans Authorization: Bearer <API_KEY>
Content-Type: multipart/form-data curl -X POST "https://idshalo.asets.io/api/v1/scans" \
-H "Authorization: Bearer <API_KEY>" \
-F "file=@scan.e57"{
"scanId": "scan_abc123",
"fileName": "scan.e57",
"status": "uploaded",
"createdAt": "2026-01-21T10:20:00Z"
}POST /scans/{scanId}/process Authorization: Bearer <API_KEY>curl -X POST "https://idshalo.asets.io/api/v1/scans" \
-H "Authorization: Bearer <API_KEY>" \
-F "file=@scan.e57"{
"scanId": "scan_abc123",
"fileName": "scan.e57",
"status": "uploaded",
"createdAt": "2026-01-21T10:20:00Z"
}GET /scans/{scanId} Authorization: Bearer <API_KEY>curl -X GET "https://idshalo.asets.io/api/v1/scans/scan_abc123" \
-H "Authorization: Bearer <API_KEY>"{
"scanId": "scan_abc123",
"fileName": "scan.e57",
"status": "processing",
"progress": 42,
"createdAt": "2026-01-21T10:20:00Z",
"updatedAt": "2026-01-21T10:25:00Z"
}{
"error": {
"code": "error_code",
"message": "Description of the error"
},
"requestId": "req_abc123xyz"
}curl -X POST "https://idshalo.asets.io/api/v1/scans" \
-H "Authorization: Bearer <API_KEY>" \
-F "file=@scan.e57"{
"scanId": "scan_abc123",
"fileName": "scan.e57",
"status": "uploaded",
"createdAt": "2026-01-21T10:20:00Z"
}curl -X POST "https://idshalo.asets.io/api/v1/scans/scan_abc123/process" \
-H "Authorization: Bearer <API_KEY>"{
"scanId": "scan_abc123",
"jobId": "job_xyz789",
"status": "processing",
"submittedAt": "2026-01-21T10:21:00Z"
}curl -X GET "https://idshalo.asets.io/api/v1/scans/scan_abc123" \
-H "Authorization: Bearer <API_KEY>"{
"scanId": "scan_abc123",
"fileName": "scan.e57",
"status": "completed",
"progress": 100,
"createdAt": "2026-01-21T10:20:00Z",
"updatedAt": "2026-01-21T10:35:00Z"
}