Browse the API reference

Create Subgraph

post/v1/graphs/{graph_id}/operations/create-subgraph

Part of Graph Operations.

Set fork_parent=true to clone parent graph data into the new subgraph (async, returns a pending OperationEnvelope). Without fork_parent, creates an empty subgraph synchronously.

Idempotency: supply an Idempotency-Key header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.

Authentication

Authenticate in any one of these ways — not all of them:

  • API key in the X-API-Key header.
  • Bearer token in the Authorization header.

Path parameters

NameTypeDescription
graph_idrequiredstringGraph Id

Header parameters

NameTypeDescription
Idempotency-KeyoptionalstringIdempotency-Key

Request body

Required, application/json.

FieldTypeDescription
namerequiredstring

Alphanumeric name for the subgraph (e.g., dev, staging, prod1)

display_namerequiredstring

Human-readable display name for the subgraph

descriptionoptionalstring

Optional description of the subgraph's purpose

schema_extensionsoptionalstring[]

Schema extensions to include (inherits from parent by default)

subgraph_typeoptionalSubgraphType

Type of subgraph: 'static' (parent's base + extensions), 'knowledge' (knowledge-only schema), or 'empty' (bare database, no schema).

One of: static, knowledge, empty

Default: static

metadataoptionalobject

Additional metadata for the subgraph

fork_parentoptionalboolean

If true, copy all data from parent graph to create a 'fork'

Default: false

Example request

curl
curl -X POST "https://api.robosystems.ai/v1/graphs/{graph_id}/operations/create-subgraph" \
  -H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
  -H "Idempotency-Key: <Idempotency-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "dev",
  "display_name": "Development Environment"
}'

Responses

200 Successful Response

FieldTypeDescription
operationrequiredstring

Kebab-case operation name

operationIdrequiredstring

op_-prefixed ULID for audit and SSE correlation

statusrequiredstring

Operation lifecycle state

One of: completed, pending, failed

resultoptionalany

Command-specific result payload

atrequiredstring

ISO-8601 UTC timestamp

createdByoptionalstring

User ID that initiated the operation (null for legacy callers)

idempotentReplayoptionalboolean

True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

Default: false

StatusMeaning
400Invalid request
401Authentication required
403Access denied
404Resource not found
409Idempotency-Key conflict — key reused with different body
422Validation error
429Rate limit exceeded
500Internal server error