Skip to main content

Registration API

Register self-hosted (Home) and linked (Link) agent installations. These endpoints are backend-only and support the Home and Link deployment modes alongside the default Cloud mode.
Home mode runs the agent container on your own hardware via Docker. Link mode connects an existing OpenClaw instance to the Agentbot platform. Cloud mode (the default) runs the agent on Agentbot infrastructure.

Validate API key

POST /api/validate-key
Validates a bearer token by computing a SHA-256 hash of the raw key and looking it up in the api_keys database table. Raw keys are never stored or compared directly. No session authentication is required — the API key is passed in the Authorization header.
The web application’s key validation endpoint uses a separate bcrypt-based lookup with the sk_ prefix convention. The backend endpoint documented here uses SHA-256 hashing and does not require the sk_ prefix.

Headers

HeaderRequiredDescription
AuthorizationYesBearer token in the format Bearer YOUR_API_KEY

Response

{
  "valid": true,
  "userId": "user-a1b2c3d4",
  "plan": "solo",
  "features": ["dashboard", "marketplace", "analytics"]
}
FieldTypeDescription
validbooleanWhether the key is valid
userIdstringUser identifier
planstringCurrent subscription plan (label, solo, collective, or network)
featuresstring[]List of features available to the user

Errors

CodeDescription
401Missing bearer token or key is invalid
500Internal error during key validation

Register Home installation

POST /api/register-home
Registers a Home mode installation. Requires bearer token (API key) authentication.
The web proxy forwards identity headers (x-user-email, x-user-id, x-user-role) from the active session, but the backend authenticates the request using the bearer token, not these headers.

Request body

FieldTypeRequiredDescription
userIdstringYesUser identifier
modestringNoDeployment mode (defaults to home)
gatewayTokenstringNoGateway token for the installation

Response

{
  "success": true,
  "message": "Home installation registered",
  "dashboardUrl": "https://agentbot.raveculture.xyz/dashboard"
}

Errors

CodeDescription
400userId is required
401Unauthorized — missing or invalid bearer token
500Internal server error
POST /api/register-link
Registers a Link mode installation that connects an existing OpenClaw instance. Requires bearer token (API key) authentication.
The web proxy forwards identity headers (x-user-email, x-user-id, x-user-role) from the active session, but the backend authenticates the request using the bearer token, not these headers.

Request body

FieldTypeRequiredDescription
userIdstringYesUser identifier
modestringNoAlways set to link regardless of the value provided
gatewayTokenstringNoGateway token for the linked instance

Response

{
  "success": true,
  "message": "OpenClaw instance linked",
  "dashboardUrl": "https://agentbot.raveculture.xyz/dashboard"
}

Errors

CodeDescription
400userId is required
401Unauthorized — missing or invalid bearer token
500Internal server error

List installations

GET /api/installations
Returns all registered installations across all deployment modes. Requires bearer token (API key) authentication.

Response

{
  "success": true,
  "count": 2,
  "installations": [
    {
      "userId": "user-a1b2c3d4",
      "mode": "home",
      "registeredAt": "2026-03-21T00:00:00Z",
      "lastSeen": "2026-03-21T12:00:00Z",
      "status": "active"
    },
    {
      "userId": "user-e5f6g7h8",
      "mode": "link",
      "registeredAt": "2026-03-21T01:00:00Z",
      "lastSeen": "2026-03-21T11:00:00Z",
      "status": "active"
    }
  ]
}
FieldTypeDescription
installations[].userIdstringUser identifier
installations[].modestringDeployment mode: home, link, or cloud
installations[].registeredAtstringISO 8601 timestamp of registration
installations[].lastSeenstringISO 8601 timestamp of last heartbeat
installations[].statusstringCurrent status: active or inactive

Errors

CodeDescription
401Unauthorized — missing or invalid bearer token
500Internal server error

Registration heartbeat

POST /api/heartbeat
Reports the status of a registered installation. When the userId matches a known registration, the lastSeen timestamp is updated and the status is set to active. No authentication is required.
This is a backend registration heartbeat for Home and Link installations. It is separate from the web heartbeat settings endpoint, which configures heartbeat scheduling for the web dashboard.

Request body

FieldTypeRequiredDescription
userIdstringNoUser identifier of the registered installation

Response

{
  "success": true,
  "timestamp": "2026-03-21T12:00:00Z"
}