---
title: "POST /api/v1/{context_id}/scopes"
method: POST
path: "/api/v1/{context_id}/scopes"
---

# POST /api/v1/{context_id}/scopes

`POST /api/v1/{context_id}/scopes`

Register a scope node (auto-vivifies missing ancestors; enforces scope:create, depth, node-budget, and per-node policy).

## Path parameters

- `context_id` string, required

## Request body

- RegisterScopeRequestJson — Body for `POST /{context}/scopes` — the scope path plus optional display metadata. Governance (value policy / `max_children`) is operator-only and lives on the management API, so it is not accepted here.
  - `description` string, nullable — Optional description for the UI.
  - `displayName` string, nullable — Optional display name for the UI.
  - `path` string, required — A validated, canonical scope path in slash form, e.g. `org/apple/product/ipad/`. Root is `/`.

## Response `201`

- ScopeNodeJson — One scope node in the `GET /{context}/scopes` response.
  - `createdAt` string, date-time, required — Creation timestamp.
  - `path` string, required — A validated, canonical scope path in slash form, e.g. `org/apple/product/ipad/`. Root is `/`.
  - `tombstonedAt` string, date-time, nullable — Soft-delete timestamp; `null` while the node is live.

## Other responses

- `400` — Invalid scope path
- `401` — Unauthorized
- `422` — Invalid context id

---

[API](https://skmtc.net/surrealdb/apis/spectron.md) · [All operations](https://skmtc.net/surrealdb/apis/spectron/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/surrealdb/spectron/versions/52b41ab517b6/schema)
