-
Notifications
You must be signed in to change notification settings - Fork 0
API Reference
Temp edited this page Jan 27, 2026
·
3 revisions
Complete reference for DO Manager's REST API endpoints.
-
Local Development:
http://localhost:8787/api -
Production:
https://your-domain.com/api
All endpoints require authentication via Cloudflare Access.
GET /api/namespaces
Returns all tracked namespaces.
GET /api/namespaces/discover
Auto-discover Durable Object namespaces from Cloudflare API.
POST /api/namespaces
Content-Type: application/json
{
"name": "my-namespace",
"classId": "abc123",
"scriptName": "my-worker",
"storageType": "sqlite",
"adminHookUrl": "https://my-worker.workers.dev"
}
POST /api/namespaces/:id/clone
Content-Type: application/json
{
"newName": "cloned-namespace"
}
GET /api/namespaces/:id/export
Returns namespace configuration as JSON.
DELETE /api/namespaces/:id
GET /api/namespaces/:id/instances
Returns all instances for a namespace.
POST /api/namespaces/:id/instances
Content-Type: application/json
{
"name": "my-instance",
"objectId": "hex-id-optional"
}
POST /api/instances/:id/clone
Content-Type: application/json
{
"newName": "cloned-instance"
}
GET /api/instances/:id/export
Returns instance storage as JSON.
PUT /api/instances/:id/color
Content-Type: application/json
{
"color": "blue"
}
POST /api/instances/diff
Content-Type: application/json
{
"instanceId1": "id-1",
"instanceId2": "id-2"
}
DELETE /api/instances/:id
POST /api/instances/:id/migrate
Content-Type: application/json
{
"targetNamespaceId": "namespace-id",
"targetInstanceName": "new-instance-name",
"cutoverMode": "copy",
"runVerification": true,
"migrateAlarms": false
}
Cutover Modes:
-
copy— Source unchanged -
copy_freeze— Source frozen (read-only) -
copy_delete— Source deleted after migration
Response:
{
"success": true,
"newInstance": { "id": "...", "name": "...", ... },
"sourceFrozen": false,
"sourceDeleted": false,
"verification": { "passed": true, "sourceKeyCount": 10, "targetKeyCount": 10 },
"warnings": []
}GET /api/instances/:id/storage
Returns all key-value pairs.
PUT /api/instances/:id/storage
Content-Type: application/json
{
"key": "my-key",
"value": { "data": "example" }
}
POST /api/instances/:id/import
Content-Type: application/json
{
"data": {
"key1": "value1",
"key2": "value2"
}
}
POST /api/instances/:id/sql
Content-Type: application/json
{
"query": "SELECT * FROM users LIMIT 10"
}
GET /api/instances/:id/alarm
PUT /api/instances/:id/alarm
Content-Type: application/json
{
"scheduledTime": "2025-12-01T00:00:00Z"
}
DELETE /api/instances/:id/alarm
GET /api/instances/:id/backups
POST /api/instances/:id/backups
POST /api/instances/:id/restore
Content-Type: application/json
{
"backupId": "backup-123"
}
POST /api/batch/namespaces/delete
Content-Type: application/json
{
"ids": ["id-1", "id-2", "id-3"]
}
POST /api/batch/instances/delete
Content-Type: application/json
{
"ids": ["id-1", "id-2", "id-3"]
}
POST /api/batch/instances/backup
Content-Type: application/json
{
"ids": ["id-1", "id-2", "id-3"]
}
POST /api/batch/keys/delete
Content-Type: application/json
{
"instanceId": "instance-id",
"keys": ["key1", "key2", "key3"]
}
POST /api/batch/keys/export
Content-Type: application/json
{
"instanceId": "instance-id",
"keys": ["key1", "key2", "key3"]
}
POST /api/search/keys
Content-Type: application/json
{
"query": "user",
"namespaceId": "optional-filter"
}
POST /api/search/values
Content-Type: application/json
{
"query": "email@example.com",
"namespaceId": "optional-filter"
}
GET /api/namespaces/:id/queries
POST /api/namespaces/:id/queries
Content-Type: application/json
{
"name": "Active Users",
"query": "SELECT * FROM users WHERE active = 1"
}
PUT /api/queries/:id
Content-Type: application/json
{
"name": "Updated Name",
"query": "SELECT * FROM users WHERE active = 1 LIMIT 50"
}
DELETE /api/queries/:id
GET /api/webhooks
POST /api/webhooks
Content-Type: application/json
{
"url": "https://example.com/webhook",
"events": ["backup_complete", "job_failed"],
"secret": "optional-hmac-secret"
}
PUT /api/webhooks/:id
Content-Type: application/json
{
"url": "https://example.com/webhook-updated",
"events": ["backup_complete"],
"enabled": true
}
POST /api/webhooks/:id/test
DELETE /api/webhooks/:id
GET /api/jobs
Optional query parameters:
-
status— Filter by status (pending, running, completed, failed) -
namespaceId— Filter by namespace
GET /api/metrics
Returns request volume, storage usage, and CPU time metrics from Cloudflare GraphQL Analytics.
GET /api/health
Returns:
- Total namespaces, instances, and alarms
- Stale instance detection
- Storage quota alerts
- Recent activity summary