Reference 01 / HTTP
HTTP reference.
Nine developer routes. JSON in, JSON out. Everything except /health requires a DEVELOPER bearer token. Operator administration is a separate surface.
GNOMON_API_URL="https://api.gnomon.one"All POST bodies use Content-Type: application/json. Responses are JSON with a JSON Content-Length. The server does not emit CORS headers; call it from a server-side client.
GET /health
no credentialLiveness only. It does not prove a snapshot loaded or that the substrate is empty.
curl -sS "$GNOMON_API_URL/v1/health"{"status":"ok"}GET /status
DEVELOPERDeveloper status plus capacity. The values are a copy, not a live subscription.
curl -sS "$GNOMON_API_URL/v1/status" -H "Authorization: Bearer $GNOMON_TOKEN"{
"working_memory": 0,
"cognitive_load": "STABLE",
"staging_memory": 0,
"strict_mode": true,
"grounding_guard": true,
"total_production_nodes": 0,
"total_production_transitions": 0,
"total_songs": 0,
"capacity": {
"max_nodes": null,
"total_nodes": 0,
"remaining_nodes": null,
"at_capacity": false
}
}capacity.remaining_nodes is null when the instance is unbounded. Check at_capacity before admitting a batch.
GET /instance
DEVELOPERInstance identity and counters. The origin id binds tokens to this deployment.
curl -sS "$GNOMON_API_URL/v1/instance" -H "Authorization: Bearer $GNOMON_TOKEN"{
"version": "0.11.0",
"node_count": 0,
"tick": 0,
"heartbeat": 0,
"accounts_enabled": true,
"origin_id": "<origin-id>",
"clock": 0,
"account_count": 1
}GET /account
DEVELOPERThe authenticated caller's record. It contains no token material.
curl -sS "$GNOMON_API_URL/v1/account" -H "Authorization: Bearer $GNOMON_TOKEN"{
"account": {
"account_id": "<16-hex>",
"name": "...",
"tier": "DEVELOPER",
"status": "ACTIVE",
"epoch": 1,
"min_epoch": 1,
"created_clock": 0
}
}If accounts are disabled, the response is {"account":null}.
POST /observe
DEVELOPERAdmit one text observation as a node.
| Field | Type | Default |
|---|---|---|
text | string | empty string |
curl -sS "$GNOMON_API_URL/v1/observe" -H "Authorization: Bearer $GNOMON_TOKEN" -H "Content-Type: application/json" --data '{"text":"the sky is blue"}'{"node":"<16-hex-invariant>"}The returned hash is the node identity. The text is an epithet, not the key.
POST /observe-seq
DEVELOPERAdmit an ordered sequence and wire consecutive nodes as directed transitions.
| Field | Type | Default |
|---|---|---|
epithets | array of strings | if absent, split text |
text | string | empty |
curl -sS "$GNOMON_API_URL/v1/observe-seq" -H "Authorization: Bearer $GNOMON_TOKEN" -H "Content-Type: application/json" --data '{"epithets":["sky","blue"]}'{"nodes":["<hash>","<hash>"]}{"text":"sky blue"} is split on whitespace. epithets preserves any spaces inside an item.
POST /query
DEVELOPEREmit from a query string or an existing node hash.
| Field | Type | Default |
|---|---|---|
query | string | empty string |
payload_kind | string | text |
curl -sS "$GNOMON_API_URL/v1/query" -H "Authorization: Bearer $GNOMON_TOKEN" -H "Content-Type: application/json" --data '{"query":"sky","payload_kind":"text"}'{"emitted_text":"..."}If query is not an existing hash, it is admitted as a new observation before emission. Querying unknown text mutates the instance. Use /emit for an anchor-only read.
POST /emit
DEVELOPEREmit from an existing anchor without admitting anything.
| Field | Type | Default |
|---|---|---|
node | string | empty string |
mode | nlc_v1 or nlc_v2 | instance default |
max_steps | integer | 15 |
curl -sS "$GNOMON_API_URL/v1/emit" -H "Authorization: Bearer $GNOMON_TOKEN" -H "Content-Type: application/json" --data '{"node":"<node-hash>","mode":"nlc_v2","max_steps":15}'{"verdict":"...","emitted_text":"..."}An unknown anchor returns HTTP 200 with verdict and emitted_text set to UNKNOWN_SEAM. It does not create the node.
POST /derive
DEVELOPERReconstruct a justification and optionally promote the derived edge.
| Field | Type | Default |
|---|---|---|
query | string | empty string |
target | string | empty string |
payload_kind | string | proof |
learn | boolean | true |
curl -sS "$GNOMON_API_URL/v1/derive" -H "Authorization: Bearer $GNOMON_TOKEN" -H "Content-Type: application/json" --data '{"query":"sky","target":"blue","payload_kind":"proof","learn":false}'{"promoted":false}The HTTP response reports promotion only. It does not include the derivation, proof, sigil, or structure digest; those are available through the Python engine.
query and target are admitted if they are not existing hashes.learn:false avoids promotion but still runs the derivation.
Not on this surface
The Python developer API also exposes known_nodes, resolve,observe_bytestream, proof verification, and provenance helpers. Those are not mapped to HTTP routes. Operator account and security administration are also outside this reference.
Next: Errors & limits for the failure contract and operational bounds.