Skip to content

DocsReference

API reference

Every endpoint below is part of the public NextOS API. Authenticate with a scoped API key from Settings > Developer, or your signed-in session where noted.

Model plane

Chat completions

POST /v1/chat/completions

Auth: Gateway API key (Authorization: Bearer ngk_...)

Body: { model, messages: [{ role, content }], max_tokens?, stream?, response_format? } (OpenAI chat-completions shape)

Response: an OpenAI-compatible chat.completion object, or a chunked stream when stream is true

curl -X POST "https://www.jonkum.in/api/v1/chat/completions" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/chat/completions"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

List models

GET /v1/models

Auth: Gateway API key (Authorization: Bearer ngk_...)

Response: { object: 'list', data: [{ id, object, owned_by, context_window, supports_tools }] }

curl -X GET "https://www.jonkum.in/api/v1/models" \
  -H "Authorization: Bearer ngk_live_your_key_here"
const response = await fetch('https://www.jonkum.in/api/v1/models', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/models"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Agents & tasks

List agents

GET /v1/agents

Auth: Gateway API key (Authorization: Bearer ngk_...)

Response: { agents: [...] }

curl -X GET "https://www.jonkum.in/api/v1/agents" \
  -H "Authorization: Bearer ngk_live_your_key_here"
const response = await fetch('https://www.jonkum.in/api/v1/agents', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/agents"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Run a one-off task

POST /v1/tasks

Auth: Gateway API key (Authorization: Bearer ngk_...)

Body: { task, provider?, model?, systemPrompt?, tools?, wait? }

Response: { run } once finished (or immediately with wait:true), else { run: { id, status: 'queued', executor } } to poll

curl -X POST "https://www.jonkum.in/api/v1/tasks" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/tasks', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/tasks"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Start an agent run

POST /v1/agents/:id/runs

Auth: Gateway API key (Authorization: Bearer ngk_...)

Body: { task, wait?, config? }

Response: { run } once finished (or immediately with wait:true), else { run: { id, status: 'queued', executor } } to poll

curl -X POST "https://www.jonkum.in/api/v1/agents/id_123/runs" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/agents/id_123/runs', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/agents/id_123/runs"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Runs

Get a run

GET /v1/runs/:id

Auth: Gateway API key or a signed-in session, scoped to the caller's own account

Response: { run }

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Get a run manifest

GET /v1/runs/:id/manifest

Auth: whatever can already read the run (owner, a scoped key, or a share token)

Response: { manifest }

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123/manifest"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123/manifest', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123/manifest"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Get a run segment

GET /v1/runs/:id/segments/:seq

Auth: whatever can already read the run (owner, a scoped key, or a share token)

Response: one immutable run segment

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123/segments/seq_123"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123/segments/seq_123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123/segments/seq_123"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Get run state

GET /v1/runs/:id/state

Auth: whatever can already read the run (owner, a scoped key, or a share token)

Response: { run, state, cursor, manifest }

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123/state"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123/state', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123/state"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

List runs

GET /v1/runs

Auth: Signed-in session, or a gateway key with the agents:read scope

Response: { runs: [...], nextSince }

curl -X GET "https://www.jonkum.in/api/v1/runs" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/runs', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Stream run events

GET /v1/runs/:id/events

Auth: whatever can already read the run (owner, a scoped key, or a share token)

Response: a Server-Sent Events stream of run events

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123/events"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123/events', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123/events"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Verify a run

GET /v1/runs/:id/verify

Auth: whatever can already read the run (owner, a scoped key, or a share token)

Response: { verified, ... } - the run's content-address chain and segment signatures

curl -X GET "https://www.jonkum.in/api/v1/runs/id_123/verify"
const response = await fetch('https://www.jonkum.in/api/v1/runs/id_123/verify', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/runs/id_123/verify"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Prompts

Add a prompt version

POST /v1/prompts/:id/versions

Auth: Signed-in session cookie

Body: { body, variables?, note? }

Response: { prompt }

curl -X POST "https://www.jonkum.in/api/v1/prompts/id_123/versions" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/prompts/id_123/versions', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts/id_123/versions"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Get, update or delete a prompt

GET /v1/prompts/:id

Auth: Signed-in session cookie

Response: { prompt } (full, including versions)

curl -X GET "https://www.jonkum.in/api/v1/prompts/id_123" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/prompts/id_123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts/id_123"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

PUT /v1/prompts/:id

Auth: Signed-in session cookie

Body: { name?, description?, tags? }

Response: { prompt } (metadata only)

curl -X PUT "https://www.jonkum.in/api/v1/prompts/id_123" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/prompts/id_123', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts/id_123"
headers = {}
response = requests.put(url, headers=headers, json={})
print(response.status_code, response.json())

DELETE /v1/prompts/:id

Auth: Signed-in session cookie

Response: { deleted }

curl -X DELETE "https://www.jonkum.in/api/v1/prompts/id_123" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/prompts/id_123', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts/id_123"
headers = {}
response = requests.delete(url, headers=headers)
print(response.status_code, response.json())

List & create prompts

GET /v1/prompts

Auth: Signed-in session cookie

Response: { prompts: [...] }

curl -X GET "https://www.jonkum.in/api/v1/prompts" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/prompts', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

POST /v1/prompts

Auth: Signed-in session cookie

Body: { id?, name, description?, body, variables?, tags?, note? }

Response: { prompt }

curl -X POST "https://www.jonkum.in/api/v1/prompts" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/prompts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Render a prompt

GET /v1/prompts/:id/render

Auth: Signed-in session cookie

Response: { text, v } or { error, missing }

curl -X GET "https://www.jonkum.in/api/v1/prompts/id_123/render" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/prompts/id_123/render', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/prompts/id_123/render"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

MCP

MCP: public server

POST /api/mcp

Auth: none (public)

Body: a JSON-RPC 2.0 request

Response: a JSON-RPC 2.0 response

curl -X POST "https://www.jonkum.in/api/mcp" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/mcp', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/mcp"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

MCP: your OS files

POST /v1/mcp/os

Auth: Gateway API key (Authorization: Bearer ngk_...)

Body: a JSON-RPC 2.0 request (MCP Streamable HTTP transport)

Response: a JSON-RPC 2.0 response exposing fs_read, fs_list, fs_write, fs_edit and fs_patch

curl -X POST "https://www.jonkum.in/api/v1/mcp/os" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/mcp/os', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/mcp/os"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Hosting

Get a site’s audit report

GET /v1/sites/:slug/audit

Auth: Signed-in session cookie, site owner, Hosting add-on required

Response: { report: object | null, trend: Array<{ version: number, at: number, overall: number }> }

curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/audit" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/audit', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/slug_123/audit"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Get a site’s design review

GET /v1/sites/:slug/design-review

Auth: Signed-in session cookie, site owner, Hosting add-on required

Response: { record: object | null, history: Array<{ version: number, at: number, overall: number }> }

curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/design-review" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/design-review', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/slug_123/design-review"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

List a site’s database tables

GET /api/v1/sites/{slug}/db

Auth: session cookie or a gateway API key with hosting access; the caller must be able to read the site

Response: { tables: Array<{ table, label, columns, capabilities, rowCount }> }

curl -X GET "https://www.jonkum.in/api/v1/sites/{slug}/db" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

List or add rows in a site table

GET /api/v1/sites/{slug}/db/{table}

Auth: session cookie or a gateway API key with hosting access; read access to the site

Response: { rows: RowDTO[], total, nextCursor, columns, capabilities }

curl -X GET "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db/{table}', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

POST /api/v1/sites/{slug}/db/{table}

Auth: session cookie or a gateway API key with hosting access; write access to the site

Body: { cells: Record<string, string | number | boolean | string[] | null> }

Response: { row: RowDTO }

curl -X POST "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db/{table}', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())

Site edge delivery status

GET /v1/sites/:slug/edge

Auth: owner session, Hosting add-on required

Response: { slug, version, publishedAt, deliveryMode, autoRollback, sreAddonActive, rolledBack, rolledBackAt?, history, cache }

curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/edge" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/edge', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/slug_123/edge"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

PATCH /v1/sites/:slug/edge

Auth: same as GET

Body: { autoRollback: boolean }

Response: { autoRollback: boolean }

curl -X PATCH "https://www.jonkum.in/api/v1/sites/slug_123/edge" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/edge', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/slug_123/edge"
headers = {}
response = requests.patch(url, headers=headers, json={})
print(response.status_code, response.json())

Site uptime

GET /v1/sites/:slug/uptime

Auth: owner session, hosting add-on required

Response: { url, uptimePct48h, p95LatencyMs: number | null, samples: [{ at, ok, status?, latencyMs?, error?, region? }], incident: { id, openedAt } | null }

curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/uptime" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/uptime', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/slug_123/uptime"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Stream a site’s database changes

GET /api/v1/sites/{slug}/db/events

Auth: session cookie or a gateway API key with hosting access; site owner only

Response: text/event-stream of { table, rowId, kind: 'inserted'|'updated'|'removed', updatedAt }

curl -X GET "https://www.jonkum.in/api/v1/sites/{slug}/db/events" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db/events', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db/events"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Update or delete a site table row

PATCH /api/v1/sites/{slug}/db/{table}/{rowId}

Auth: session cookie or a gateway API key with hosting access; write access to the site

Body: { cells: Record<string, string | number | boolean | string[] | null> }

Response: { row: RowDTO }

curl -X PATCH "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}', {
  method: 'PATCH',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.patch(url, headers=headers, json={})
print(response.status_code, response.json())

DELETE /api/v1/sites/{slug}/db/{table}/{rowId}

Auth: session cookie or a gateway API key with hosting access; write access to the site

Response: { ok: true }

curl -X DELETE "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}', {
  method: 'DELETE',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/sites/{slug}/db/{table}/{rowId}"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.delete(url, headers=headers)
print(response.status_code, response.json())

Account

Who am I

GET /v1/me

Auth: Gateway API key (Authorization: Bearer ngk_...) or a signed-in session

Response: { account, via, scopes, orgId? }

curl -X GET "https://www.jonkum.in/api/v1/me" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>"
const response = await fetch('https://www.jonkum.in/api/v1/me', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/me"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

App Store

Download a catalogue app’s zip

GET /v1/store/{publisherId}/{appId}.zip

Auth: none

Response: the app's zip bytes (application/zip), or 404

curl -X GET "https://www.jonkum.in/api/v1/store/{publisherId}/{appId}.zip"
const response = await fetch('https://www.jonkum.in/api/v1/store/{publisherId}/{appId}.zip', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/store/{publisherId}/{appId}.zip"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Get a publisher’s catalogue

GET /v1/store/{publisherId}.json

Auth: none (a published catalogue is meant to be shared)

Response: a "kumin-catalog" JSON document listing the publisher's apps, or 404

curl -X GET "https://www.jonkum.in/api/v1/store/{publisherId}.json"
const response = await fetch('https://www.jonkum.in/api/v1/store/{publisherId}.json', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
  },
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/store/{publisherId}.json"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())

Publish an app

POST /v1/store/publish

Auth: Gateway API key (Authorization: Bearer ngk_...) or a signed-in session

Body: { id, name, version, kind, description?, icon?, homepage?, license?, author?, permissions?, tags?, screenshots?, minOs?, zipBase64 }

Response: { entry, catalogUrl, publisherId }

curl -X POST "https://www.jonkum.in/api/v1/store/publish" \
  -H "Authorization: Bearer ngk_live_your_key_here" \
  -H "Cookie: <your signed-in session cookie>" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch('https://www.jonkum.in/api/v1/store/publish', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ngk_live_your_key_here',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({}),
});

console.log(response.status, await response.json());
import requests

url = "https://www.jonkum.in/api/v1/store/publish"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())
How a request flows

Three hops, every time

1
Your app

Your code, or your browser, calls one endpoint with a scoped API key.

2
NextOS

Authenticates the key, applies your plan and (on a team) your governance policy, then routes the call.

3
Your model provider / your storage

The call reaches the model or storage provider you configured - your own key, or a hosted allowance.

/api/v1/workflows/:id/trigger · Auth: none - verified instead by an HMAC-SHA256 request signature (see

curl -X POST "https://www.jonkum.in/api/v1/workflows/id_123/trigger" \
  -H "Content-Type: application/json" \
  -d '{}'

Governance simulator

Try a tool-argument rule (Settings > Governance) against a sample call, using the real evaluator your team’s policy runs on.

Result: denyfs_write: path startsWith /projects