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())Count tokens (Anthropic-compatible)
POST /v1/messages/count_tokens
Auth: Gateway API key (Authorization: Bearer ngk_...)
Body: an Anthropic count_tokens request ({ model, messages, system?, tools? })
Response: { input_tokens }
curl -X POST "https://www.jonkum.in/api/v1/messages/count_tokens" \
-H "Authorization: Bearer ngk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/messages/count_tokens', {
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/messages/count_tokens"
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())Messages (Anthropic-compatible)
POST /v1/messages
Auth: Gateway API key (Authorization: Bearer ngk_...)
Body: an Anthropic Messages request ({ model, max_tokens, messages, system?, tools?, stream? })
Response: an Anthropic Messages reply, streamed as server-sent events when stream is true; the model runs as the plan's included model unless your own Anthropic key is in the vault
curl -X POST "https://www.jonkum.in/api/v1/messages" \
-H "Authorization: Bearer ngk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/messages', {
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/messages"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Responses (OpenAI-compatible)
POST /v1/responses
Auth: Gateway API key (Authorization: Bearer ngk_...)
Body: an OpenAI Responses request ({ model, input, instructions?, tools?, stream? })
Response: an OpenAI Responses reply, streamed as server-sent events when stream is true; the model runs as the plan's included model unless your own OpenAI key is in the vault
curl -X POST "https://www.jonkum.in/api/v1/responses" \
-H "Authorization: Bearer ngk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/responses', {
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/responses"
headers = {"Authorization": "Bearer ngk_live_your_key_here"}
response = requests.post(url, headers=headers, json={})
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
A site’s branded email status
GET /v1/sites/:slug/email
Auth: Signed-in session cookie, Hosting add-on required, site read access
Response: { email: object | null } | { error: string }
curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/email" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/email', {
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/email"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())PATCH /v1/sites/:slug/email
Auth: same as GET, site write access
Body: { addresses?: string[], forwardTo?: string }
Response: { email: object | null } | { error: string }
curl -X PATCH "https://www.jonkum.in/api/v1/sites/slug_123/email" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/email', {
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/email"
headers = {}
response = requests.patch(url, headers=headers, json={})
print(response.status_code, response.json())Generate art-directed imagery for a site
POST /v1/sites/:slug/images
Auth: Signed-in session cookie, site owner, Hosting add-on required
Body: { slots?: string[], spec: SiteSpec }
Response: { files: Array<{ path, base64, contentType }>, generated, placeholders, reason? }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/images" \
-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_123/images', {
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/sites/slug_123/images"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())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())Plan a site’s pages and sections
POST /v1/sites/:slug/blueprint
Auth: Signed-in session cookie, site owner, Hosting add-on required
Body: { name?: string, brief?: string, templateId?: string, industry?: string, city?: string, whoFor?: string, tone?: string, research?: boolean }
Response: { spec: SiteSpec, rationale: string[], source: 'model' | 'deterministic', model?: { attempted: true, error?: string, head?: string } }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/blueprint" \
-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_123/blueprint', {
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/sites/slug_123/blueprint"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Re-check a site’s branded email setup
POST /v1/sites/:slug/email/recheck
Auth: Signed-in session cookie, Hosting add-on required, site write access
Response: { email: object | null } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/email/recheck" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/email/recheck', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/sites/slug_123/email/recheck"
headers = {}
response = requests.post(url, headers=headers)
print(response.status_code, response.json())Research a site’s competitors
GET /v1/sites/:slug/research
Auth: Signed-in session cookie, site owner, Hosting add-on required
Response: { dossier: object } | 404 { error: 'no_research' }
curl -X GET "https://www.jonkum.in/api/v1/sites/slug_123/research" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/research', {
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/research"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())POST /v1/sites/:slug/research
Auth: same as GET
Body: { name?: string, brief?: string, city?: string, industry?: string, competitorUrls?: string[] }
Response: { dossier: object, reason?: string } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/research" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/research', {
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/sites/slug_123/research"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Review a site before publishing
POST /v1/sites/:slug/review
Auth: Signed-in session cookie, site owner, Hosting add-on required
Body: { spec: SiteSpec }
Response: { findings: Array<{ severity: 'high'|'medium'|'low', path?: string, message: string, suggestion?: string }>, score: number, model?: { attempted: true, error: string, head?: string } }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/review" \
-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_123/review', {
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/sites/slug_123/review"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Send a test branded email
POST /v1/sites/:slug/email/test
Auth: Signed-in session cookie, Hosting add-on required, site read access
Response: { sent: boolean, from?: string, reason?: string } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/email/test" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/sites/slug_123/email/test', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/sites/slug_123/email/test"
headers = {}
response = requests.post(url, headers=headers)
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())Write a site’s copy
POST /v1/sites/:slug/write-copy
Auth: Signed-in session cookie, site owner, Hosting add-on required
Body: { answers: { name, whatYouDo?, whoFor?, tone?, city?, templateId?, industry? }, spec: SiteSpec }
Response: { spec: SiteSpec, source: 'model' | 'deterministic', reason?: string, pagesWritten: number, model?: { attempted: true, source: 'model'|'deterministic', error?: string, head?: string } }
curl -X POST "https://www.jonkum.in/api/v1/sites/slug_123/write-copy" \
-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_123/write-copy', {
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/sites/slug_123/write-copy"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Domains
Attach a domain you own to a site
POST /v1/domains/attach
Auth: Signed-in session cookie, Hosting add-on required, same-origin request
curl -X POST "https://www.jonkum.in/api/v1/domains/attach" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/domains/attach', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/domains/attach"
headers = {}
response = requests.post(url, headers=headers)
print(response.status_code, response.json())Buy a domain
POST /v1/domains/checkout
Auth: Signed-in session cookie, Hosting add-on required
Body: { quoteId: string }
Response: { url: string, orderId: string } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/domains/checkout" \
-H "Cookie: <your signed-in session cookie>" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/domains/checkout', {
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/domains/checkout"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())List domain orders
GET /v1/domains/orders
Auth: Signed-in session cookie, Hosting add-on required
Response: { orders: Array<object> }
curl -X GET "https://www.jonkum.in/api/v1/domains/orders" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/domains/orders', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/domains/orders"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())Manage a bought domain’s DNS records
GET /v1/domains/:name/dns
Auth: Signed-in session cookie, Hosting add-on required, must have bought this domain
Response: { records: Array<object> }
curl -X GET "https://www.jonkum.in/api/v1/domains/name_123/dns" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/domains/name_123/dns', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/domains/name_123/dns"
headers = {}
response = requests.get(url, headers=headers)
print(response.status_code, response.json())POST /v1/domains/:name/dns
Auth: same as GET
Body: { type: 'A'|'AAAA'|'ANAME'|'CNAME'|'MX'|'NS'|'SRV'|'TXT', host: string, answer: string, ttl?: number, priority?: number }
Response: { record: object } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/domains/name_123/dns" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/domains/name_123/dns', {
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/domains/name_123/dns"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Quote a domain
POST /v1/domains/quote
Auth: Signed-in session cookie, Hosting add-on required
Body: { domainName: string, siteSlug?: string }
Response: { quoteId: string, domainName: string, priceUsd: number, renewalUsd: number, expiresAt: number } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/domains/quote" \
-H "Cookie: <your signed-in session cookie>" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/domains/quote', {
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/domains/quote"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Retry a stuck domain order
POST /v1/domains/orders/:id/retry
Auth: Signed-in session cookie, Hosting add-on required, order owner
Response: { order: object } | { error: string }
curl -X POST "https://www.jonkum.in/api/v1/domains/orders/id_123/retry" \
-H "Cookie: <your signed-in session cookie>"const response = await fetch('https://www.jonkum.in/api/v1/domains/orders/id_123/retry', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/v1/domains/orders/id_123/retry"
headers = {}
response = requests.post(url, headers=headers)
print(response.status_code, response.json())Search for a domain
POST /v1/domains/search
Auth: Signed-in session cookie, Hosting add-on required
Body: { keyword: string, tlds?: string[] }
Response: { results: Array<{ domainName: string, available: boolean, premium: boolean, priceUsd?: number, renewalUsd?: number, reason?: string }> }
curl -X POST "https://www.jonkum.in/api/v1/domains/search" \
-H "Cookie: <your signed-in session cookie>" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/v1/domains/search', {
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/domains/search"
headers = {}
response = requests.post(url, headers=headers, json={})
print(response.status_code, response.json())Account
Download the DPA
GET /api/legal/dpa
Auth: none
Body: none
Response: text/plain, Content-Disposition: attachment - the DPA text
curl -X GET "https://www.jonkum.in/api/legal/dpa" \
-H "Content-Type: application/json" \
-d '{}'const response = await fetch('https://www.jonkum.in/api/legal/dpa', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
});
console.log(response.status, await response.json());import requests
url = "https://www.jonkum.in/api/legal/dpa"
headers = {}
response = requests.get(url, headers=headers, json={})
print(response.status_code, response.json())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())Three hops, every time
Your code, or your browser, calls one endpoint with a scoped API key.
Authenticates the key, applies your plan and (on a team) your governance policy, then routes the call.
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: deny — fs_write: path startsWith /projects