Bootstrap API
Agent initialization endpoints
Bootstrap API
Initialize Arctic agents with a license.
POST /v1/bootstrap
Initialize an agent with a license file.
Authentication
None required (public endpoint).
Request Body
{
"license": {
"customer_id": "cust_...",
"license_id": "lic_...",
"issued_at": "2024-01-01T00:00:00Z",
"expires_at": "2025-12-31T23:59:59Z",
"max_nodes": 10,
"max_services": 100,
"signature": "base64..."
},
"name": "Agent A",
"description": "Production server"
}| Field | Type | Required | Description |
|---|---|---|---|
license | object | Yes | License object |
name | string | No | Human-readable name |
description | string | No | Description |
Response
{
"peer_id": "01HXYZ...",
"peer_public_key": "base64...",
"client_id": "cl_01HXYZ...",
"client_secret": "sec_...",
"license_id": "lic_...",
"cluster_id": "01HABC...",
"expires_at": "2025-12-31T23:59:59Z",
"max_nodes": 10,
"max_services": 100
}| Field | Type | Description |
|---|---|---|
peer_id | string | Unique peer identifier |
peer_public_key | string | Ed25519 public key (base64) |
client_id | string | OAuth client ID |
client_secret | string | OAuth client secret (shown once) |
license_id | string | License identifier |
cluster_id | string | Cluster identifier |
expires_at | string | License expiration (ISO 8601) |
max_nodes | integer | Maximum allowed nodes |
max_services | integer | Maximum allowed services |
Errors
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Malformed request |
| 409 | ALREADY_BOOTSTRAPPED | Agent already initialized |
| 422 | LICENSE_EXPIRED | License has expired |
| 422 | LICENSE_INVALID | Invalid signature |
Example
curl -X POST http://192.168.1.10:8080/v1/bootstrap \
-H "Content-Type: application/json" \
-d @license.jsonNotes
- An agent can only be bootstrapped once
- The
client_secretis only returned during bootstrap - Store credentials securely