Base URL
https://app.nurosentrix.com/api/v1Authentication
All API requests require authentication using a Bearer token. Include the token in the Authorization header:
Authorization: Bearer YOUR_API_TOKEN
Generate API tokens from Settings → API Keys in the Nurosentrix dashboard.
Request Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer token for authentication |
Content-Type | Yes (POST/PUT) | Must be application/json |
X-Request-ID | No | Optional request ID for tracing |
Response Format
All responses are JSON with this structure:
{
"success": true,
"data": { ... },
"meta": {
"page": 1,
"per_page": 20,
"total": 100
}
}Error Responses
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": {
"field": "name",
"reason": "Name is required"
}
}
}Servers
List Servers
GET /serversReturns a list of all servers in your account.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
per_page | integer | Items per page (default: 20, max: 100) |
status | string | Filter by status: active, provisioning, offline |
Response
{
"success": true,
"data": [
{
"id": "srv_abc123",
"name": "web-server-1",
"ip_address": "192.168.1.100",
"status": "active",
"provider": "digitalocean",
"region": "nyc1",
"specs": {
"cpu": 4,
"memory_gb": 8,
"disk_gb": 160
},
"created_at": "2024-01-15T10:30:00Z"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 3
}
}Get Server
GET /servers/:idCreate Server
POST /serversRequest Body
{
"name": "web-server-2",
"provider": "digitalocean",
"region": "nyc1",
"size": "s-4vcpu-8gb",
"ssh_key_id": "key_xyz789"
}Delete Server
DELETE /servers/:idInstances
List Instances
GET /instancesCreate Instance
POST /instancesRequest Body
{
"name": "production-crm",
"server_id": "srv_abc123",
"odoo_version": "17.0",
"edition": "community",
"database_name": "production_crm",
"admin_email": "admin@example.com",
"domain": "crm.example.com"
}Clone Instance
POST /instances/:id/cloneCreates a new instance from a completed backup. If admin_password is omitted, Nurosentrix will generate one and return it in the response.
Request Body
{
"name": "staging-crm",
"domain": "staging-crm.example.com",
"backup_id": "bkp_123",
"neutralize": true,
"restore_database": true,
"restore_filestore": true
}Instance Actions
POST /instances/:id/actionsAvailable Actions
| Action | Description |
|---|---|
start | Start a stopped instance |
stop | Stop a running instance |
restart | Restart the instance |
backup | Create an immediate backup |
Backups
List Backups
GET /instances/:id/backupsCreate Backup
POST /instances/:id/backupsRestore Backup
POST /backups/:id/restoreRate Limits
| Endpoint | Rate Limit |
|---|---|
| All endpoints | 100 requests per minute |
| Create/Delete operations | 20 requests per minute |
SDKs and Libraries
Official SDKs are coming soon. In the meantime, you can use any HTTP client to interact with the API. Here are examples in popular languages:
cURL
curl -X GET "https://app.nurosentrix.com/api/v1/servers" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json"
Python
import requests
response = requests.get(
"https://app.nurosentrix.com/api/v1/servers",
headers={
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
)
servers = response.json()["data"]JavaScript
const response = await fetch(
"https://app.nurosentrix.com/api/v1/servers",
{
headers: {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
}
);
const { data: servers } = await response.json();