Driving Dystopia Generator from your own code
Everything the web app does goes through one public HTTP API. The base URL is https://api.skillsafe.ai/v1/app-api, and every call carries Authorization: Bearer <token>. Get a token on the tokens page.
This app has one contract, not a set of lanes. mode decides whether you are building a new world or continuing an existing one, and every mode returns the same dossier object.
The envelope
Every response is {"ok": true, "data": {...}} or {"ok": false, "error": {"code": "...", "message": "..."}}. Check ok before reading data.
Error codes you will actually meet
| Code | HTTP | What it means |
|---|---|---|
| UNAUTHORIZED | 401 | Missing, malformed or expired token. Mint a new one. |
| INSUFFICIENT_CREDITS | 402 | The balance cannot cover the hold. /estimate is free — call it first and compare against /me. |
| VALIDATION_ERROR | 400 | The body was not the shape above. error.details names the field. |
| RATE_LIMITED | 429 | Back off and retry. Do not tight-loop. |
| JOB_FAILED | 500 | The run reached a terminal failure. The job object carries the reason. |
The input contract
These are the exact fields app.js submits. brief and facts are produced by the free client-side scenario engine; if you are calling the API directly you write them yourself, and they are how you steer the output away from the genre default.
| Field | Type | Meaning |
|---|---|---|
| mode | string, required | One of base, deepen, era, reroll. All four return the same object shape — this is a parameter of one contract, not a lane selector. base builds a new world; the other three continue an existing one and require parent and directive. |
| premise | string, optional | The user’s own idea or constraints, in their words. Clipped to 2,000 characters from the end, keeping the opening, with a marker appended naming what was cut. |
| brief | string, required | The seven axes rendered as prose, plus the naming register, any stated tensions, and the distance from the genre default. This is what actually steers the world. Axes marked [LOCKED by the user] are binding. |
| facts | object, required | The same axes as machine-readable ids — facts.axes carries optimizes, provides, belief, tech, ruler, control and scale — plus register, seed, divergence, locked and tensions. The model echoes these ids back in honoured_axes, and the app compares the two. |
| tone | string, optional | plain, documentary, literary or wry. The register of the writing, not of the regime. |
| length | string, optional | brief, full or deep. Controls how much material comes back, not how many sections. |
| parent | string, non-base modes | A compact recap of the world being continued: name, slogan, premise, how it took power, ideology, its exact vocabulary, what is scarce, how dissent is handled, its fault lines and its named people. Budgeted to about 4,200 characters and clipped on meaning — identity and vocabulary survive, atmosphere is dropped, and what was cut is stated. |
| directive | string, non-base modes | What to change or expand. Generated by the app from the mode and the user’s choice. |
| facet | string, deepen only | Which part to expand: resistance, district, day, economy, law, children, border, faith. |
| era_offset | number, era only | Years to move, negative for earlier. One of -100, -25, 10, 25, 100, 300. |
| reroll_axis | string, reroll only | Which axis id was turned. |
| retry_note | string, optional | Present only on the app’s automatic reformat retry, describing how the previous reply failed to parse. The retry reuses an idempotency key derived from the same input, so it cannot double-bill. |
The output contract
The model returns one JSON object and nothing else, as the output.output string of the job. name and premise are the only required fields; every array may be empty. The app’s parser tolerates a code fence and leading prose, and repairs a truncated object by walking bracket depth, so a stream that dies mid-dossier still renders what arrived.
{
"name": "The Standing Register",
"shortName": "the Register",
"tagline": "Nothing that happened is allowed to stop happening.",
"premise": "2-4 sentences orienting the reader.",
"seizure": { "title": "", "years": "", "account": "" },
"ideology": { "creed": "", "logic": "", "enemy": "" },
"lexicon": [ { "term": "", "gloss": "", "plain": "" } ],
"daily": { "morning": "", "work": "", "evening": "", "law": "" },
"scarcity": [ { "item": "", "why": "", "workaround": "" } ],
"dissent": { "posture": "", "apparatus": "", "fate": "", "story": "" },
"cracks": [ { "crack": "", "who": "", "pressure": "" } ],
"figures": [ { "name": "", "role": "", "note": "" } ],
"hooks": [ "" ],
"sensory": [ "" ],
"honoured_axes": {
"optimizes": "remembrance", "provides": "quiet", "belief": "grateful",
"tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"
},
"caution": "present only when a content limit changed what was asked for"
}
honoured_axes is the reconciliation hook: it echoes back the seven axis ids the model believes it honoured, and the app diffs that against what it sent. A mismatch is surfaced to the user rather than silently accepted.
1. Get a token
Open the tokens page, sign in, and copy the token or the ready-made shell export. A guest token works for browsing but cannot run the model: runs are metered and need an account.
2. Check who you are
/me returns exactly three fields: subject_type, subject_id and credits. A personal token reports subject_type: "user"; that is the only signed-in test there is.
curl -s "https://api.skillsafe.ai/v1/app-api/me" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN"import requests
TOKEN = "YOUR_TOKEN"
r = requests.get(
"https://api.skillsafe.ai/v1/app-api/me",
headers={"Authorization": f"Bearer {TOKEN}"},
)
print(r.json()["data"])const TOKEN = "YOUR_TOKEN";
const res = await fetch("https://api.skillsafe.ai/v1/app-api/me", {
headers: { "Authorization": `Bearer ${TOKEN}` },
});
const { data, error } = await res.json();
if (error) throw new Error(error.message);
console.log(data);package main
import (
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
req, _ := http.NewRequest("GET", "https://api.skillsafe.ai/v1/app-api/me", nil)
req.Header.Set("Authorization", "Bearer "+token)
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/me"))
.header("Authorization", "Bearer " + token)
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/me')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = "Bearer #{token}"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/me");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
var token = "YOUR_TOKEN";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var res = await http.GetAsync("https://api.skillsafe.ai/v1/app-api/me");
Console.WriteLine(await res.Content.ReadAsStringAsync());3. Price the run — free, no job
/estimate costs nothing and creates no job. It returns hold_credits (what will be reserved), min_credits, model, model_alias and markup_bps. Present the hold as reserved, never as the price — the actual charge is usually far lower, because the hold prices the full output cap.
curl -s -X POST "https://api.skillsafe.ai/v1/app-api/estimate" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}'import requests
TOKEN = "YOUR_TOKEN"
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
r = requests.post(
"https://api.skillsafe.ai/v1/app-api/estimate",
headers={"Authorization": f"Bearer {TOKEN}"},
json=body,
)
print(r.json()["data"])const TOKEN = "YOUR_TOKEN";
const body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
};
const res = await fetch("https://api.skillsafe.ai/v1/app-api/estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const { data, error } = await res.json();
if (error) throw new Error(error.message);
console.log(data);package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
body := []byte(`{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}`)
req, _ := http.NewRequest("POST", "https://api.skillsafe.ai/v1/app-api/estimate", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
String body = """
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/estimate"))
.header("Authorization", "Bearer " + token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/estimate')
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{token}"
req['Content-Type'] = 'application/json'
req.body = JSON.generate(body)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$body = <<<JSON
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
JSON;
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/estimate");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var token = "YOUR_TOKEN";
var body = @"{""mode"": ""base"", ""premise"": ""a ship under way so long that nobody aboard remembers anyone choosing to go"", ""brief"": ""AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes."", ""facts"": {""axes"": {""optimizes"": ""remembrance"", ""provides"": ""quiet"", ""belief"": ""grateful"", ""tech"": ""engineered"", ""ruler"": ""drift"", ""control"": ""informants"", ""scale"": ""fleet""}, ""register"": ""civic"", ""register_secondary"": ""liturgical"", ""seed"": ""chalk-drift-722"", ""divergence"": 7, ""locked"": [], ""tensions"": []}, ""tone"": ""documentary"", ""length"": ""full""}";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var content = new StringContent(body, Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://api.skillsafe.ai/v1/app-api/estimate", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());4. Run it, and poll
Send an Idempotency-Key header on every run. Deriving it from a hash of the input plus the mode plus an attempt counter means a network blip, or an automatic reformat retry, can never bill twice.
curl -s -X POST "https://api.skillsafe.ai/v1/app-api/run" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}'import requests
TOKEN = "YOUR_TOKEN"
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
r = requests.post(
"https://api.skillsafe.ai/v1/app-api/run",
headers={"Authorization": f"Bearer {TOKEN}"},
json=body,
)
print(r.json()["data"])const TOKEN = "YOUR_TOKEN";
const body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
};
const res = await fetch("https://api.skillsafe.ai/v1/app-api/run", {
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const { data, error } = await res.json();
if (error) throw new Error(error.message);
console.log(data);package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
body := []byte(`{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}`)
req, _ := http.NewRequest("POST", "https://api.skillsafe.ai/v1/app-api/run", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
String body = """
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/run"))
.header("Authorization", "Bearer " + token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/run')
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{token}"
req['Content-Type'] = 'application/json'
req.body = JSON.generate(body)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$body = <<<JSON
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
JSON;
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/run");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var token = "YOUR_TOKEN";
var body = @"{""mode"": ""base"", ""premise"": ""a ship under way so long that nobody aboard remembers anyone choosing to go"", ""brief"": ""AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes."", ""facts"": {""axes"": {""optimizes"": ""remembrance"", ""provides"": ""quiet"", ""belief"": ""grateful"", ""tech"": ""engineered"", ""ruler"": ""drift"", ""control"": ""informants"", ""scale"": ""fleet""}, ""register"": ""civic"", ""register_secondary"": ""liturgical"", ""seed"": ""chalk-drift-722"", ""divergence"": 7, ""locked"": [], ""tensions"": []}, ""tone"": ""documentary"", ""length"": ""full""}";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var content = new StringContent(body, Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://api.skillsafe.ai/v1/app-api/run", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());/run returns {"job_id": "job_..."}. Poll it until it reaches a terminal state; the dossier arrives as the output.output string.
curl -s "https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN"import requests
TOKEN = "YOUR_TOKEN"
r = requests.get(
"https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ",
headers={"Authorization": f"Bearer {TOKEN}"},
)
print(r.json()["data"])const TOKEN = "YOUR_TOKEN";
const res = await fetch("https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ", {
headers: { "Authorization": `Bearer ${TOKEN}` },
});
const { data, error } = await res.json();
if (error) throw new Error(error.message);
console.log(data);package main
import (
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
req, _ := http.NewRequest("GET", "https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ", nil)
req.Header.Set("Authorization", "Bearer "+token)
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ"))
.header("Authorization", "Bearer " + token)
.GET()
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = "Bearer #{token}"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $token"],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
var token = "YOUR_TOKEN";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var res = await http.GetAsync("https://api.skillsafe.ai/v1/app-api/jobs/job_01J8XYZ");
Console.WriteLine(await res.Content.ReadAsStringAsync());5. Or stream it
/run-stream is the same body over SSE and is what the web app uses. The deltas arrive as the JSON object is written, which is what lets the progress card advance on real signals — it watches for the section keys appearing in the stream — rather than on a timer.
curl -N -s -X POST "https://api.skillsafe.ai/v1/app-api/run-stream" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}'import requests
TOKEN = "YOUR_TOKEN"
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
r = requests.post(
"https://api.skillsafe.ai/v1/app-api/run-stream",
headers={"Authorization": f"Bearer {TOKEN}"},
json=body, stream=True,
)
for line in r.iter_lines():
if line:
print(line.decode())const TOKEN = "YOUR_TOKEN";
const body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
};
const res = await fetch("https://api.skillsafe.ai/v1/app-api/run-stream", {
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const reader = res.body.getReader();
const dec = new TextDecoder();
for (;;) {
const { done, value } = await reader.read();
if (done) break;
process.stdout.write(dec.decode(value));
}package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
body := []byte(`{"mode": "base", "premise": "a ship under way so long that nobody aboard remembers anyone choosing to go", "brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "register_secondary": "liturgical", "seed": "chalk-drift-722", "divergence": 7, "locked": [], "tensions": []}, "tone": "documentary", "length": "full"}`)
req, _ := http.NewRequest("POST", "https://api.skillsafe.ai/v1/app-api/run-stream", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
String body = """
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/run-stream"))
.header("Authorization", "Bearer " + token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/run-stream')
body = {
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{token}"
req['Content-Type'] = 'application/json'
req.body = JSON.generate(body)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$body = <<<JSON
{
"mode": "base",
"premise": "a ship under way so long that nobody aboard remembers anyone choosing to go",
"brief": "AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes.",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"register_secondary": "liturgical",
"seed": "chalk-drift-722",
"divergence": 7,
"locked": [],
"tensions": []
},
"tone": "documentary",
"length": "full"
}
JSON;
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/run-stream");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var token = "YOUR_TOKEN";
var body = @"{""mode"": ""base"", ""premise"": ""a ship under way so long that nobody aboard remembers anyone choosing to go"", ""brief"": ""AXES OF THIS WORLD (all seven are binding):\n- What it optimises for: Remembrance - The past is the point.\n- What it actually provides: Quiet - No noise, no argument, no news.\n- What the population believes: Grateful - They remember what came before.\n- What it is built out of: Biological - Control written into bodies rather than laws.\n- Whose boot: Nobody in particular - No one decided this.\n- How compliance is manufactured: Neighbours - The state barely watches.\n- How big: A fleet in transit - Bound somewhere nobody alive will see.\n\nNAMING REGISTER - primary civic, secondary liturgical.\n\nDIVERGENCE - this world differs from the stock surveillance-state dystopia on 7 of 7 axes."", ""facts"": {""axes"": {""optimizes"": ""remembrance"", ""provides"": ""quiet"", ""belief"": ""grateful"", ""tech"": ""engineered"", ""ruler"": ""drift"", ""control"": ""informants"", ""scale"": ""fleet""}, ""register"": ""civic"", ""register_secondary"": ""liturgical"", ""seed"": ""chalk-drift-722"", ""divergence"": 7, ""locked"": [], ""tensions"": []}, ""tone"": ""documentary"", ""length"": ""full""}";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var content = new StringContent(body, Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://api.skillsafe.ai/v1/app-api/run-stream", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());6. Worked example: iterating on a world
The second run is almost never “make another one”. It is “keep this and change one thing”. Set mode, pass the parent recap and a directive, and you get the same dossier shape back with continuity intact — the same regime name, the same vocabulary, the same people.
This example deepens the resistance. mode: "era" with an era_offset moves the same world through time instead; mode: "reroll" keeps the regime and swaps one axis.
curl -s -X POST "https://api.skillsafe.ai/v1/app-api/run" \
-H "Authorization: Bearer $SKILLSAFE_APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "deepen", "premise": "", "brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "seed": "chalk-drift-722", "divergence": 7}, "tone": "documentary", "length": "full", "parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...", "parent_name": "The Standing Register", "directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.", "facet": "resistance"}'import requests
TOKEN = "YOUR_TOKEN"
body = {
"mode": "deepen",
"premise": "",
"brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"seed": "chalk-drift-722",
"divergence": 7
},
"tone": "documentary",
"length": "full",
"parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...",
"parent_name": "The Standing Register",
"directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.",
"facet": "resistance"
}
r = requests.post(
"https://api.skillsafe.ai/v1/app-api/run",
headers={"Authorization": f"Bearer {TOKEN}"},
json=body,
)
print(r.json()["data"])const TOKEN = "YOUR_TOKEN";
const body = {
"mode": "deepen",
"premise": "",
"brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"seed": "chalk-drift-722",
"divergence": 7
},
"tone": "documentary",
"length": "full",
"parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...",
"parent_name": "The Standing Register",
"directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.",
"facet": "resistance"
};
const res = await fetch("https://api.skillsafe.ai/v1/app-api/run", {
method: "POST",
headers: {
"Authorization": `Bearer ${TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
});
const { data, error } = await res.json();
if (error) throw new Error(error.message);
console.log(data);package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
token := "YOUR_TOKEN"
body := []byte(`{"mode": "deepen", "premise": "", "brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...", "facts": {"axes": {"optimizes": "remembrance", "provides": "quiet", "belief": "grateful", "tech": "engineered", "ruler": "drift", "control": "informants", "scale": "fleet"}, "register": "civic", "seed": "chalk-drift-722", "divergence": 7}, "tone": "documentary", "length": "full", "parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...", "parent_name": "The Standing Register", "directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.", "facet": "resistance"}`)
req, _ := http.NewRequest("POST", "https://api.skillsafe.ai/v1/app-api/run", bytes.NewReader(body))
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(string(out))
}import java.net.URI;
import java.net.http.*;
String token = "YOUR_TOKEN";
String body = """
{
"mode": "deepen",
"premise": "",
"brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"seed": "chalk-drift-722",
"divergence": 7
},
"tone": "documentary",
"length": "full",
"parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...",
"parent_name": "The Standing Register",
"directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.",
"facet": "resistance"
}""";
HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.skillsafe.ai/v1/app-api/run"))
.header("Authorization", "Bearer " + token)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());require 'net/http'
require 'json'
require 'uri'
token = 'YOUR_TOKEN'
uri = URI('https://api.skillsafe.ai/v1/app-api/run')
body = {
"mode": "deepen",
"premise": "",
"brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"seed": "chalk-drift-722",
"divergence": 7
},
"tone": "documentary",
"length": "full",
"parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...",
"parent_name": "The Standing Register",
"directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.",
"facet": "resistance"
}
req = Net::HTTP::Post.new(uri)
req['Authorization'] = "Bearer #{token}"
req['Content-Type'] = 'application/json'
req.body = JSON.generate(body)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)['data']<?php
$token = "YOUR_TOKEN";
$body = <<<JSON
{
"mode": "deepen",
"premise": "",
"brief": "AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run...",
"facts": {
"axes": {
"optimizes": "remembrance",
"provides": "quiet",
"belief": "grateful",
"tech": "engineered",
"ruler": "drift",
"control": "informants",
"scale": "fleet"
},
"register": "civic",
"seed": "chalk-drift-722",
"divergence": 7
},
"tone": "documentary",
"length": "full",
"parent": "REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ...",
"parent_name": "The Standing Register",
"directive": "Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has.",
"facet": "resistance"
}
JSON;
$ch = curl_init("https://api.skillsafe.ai/v1/app-api/run");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $token",
"Content-Type: application/json",
],
]);
$res = json_decode(curl_exec($ch), true);
print_r($res["data"]);using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var token = "YOUR_TOKEN";
var body = @"{""mode"": ""deepen"", ""premise"": """", ""brief"": ""AXES OF THIS WORLD (all seven are binding): ...unchanged from the parent run..."", ""facts"": {""axes"": {""optimizes"": ""remembrance"", ""provides"": ""quiet"", ""belief"": ""grateful"", ""tech"": ""engineered"", ""ruler"": ""drift"", ""control"": ""informants"", ""scale"": ""fleet""}, ""register"": ""civic"", ""seed"": ""chalk-drift-722"", ""divergence"": 7}, ""tone"": ""documentary"", ""length"": ""full"", ""parent"": ""REGIME: The Standing Register\nSLOGAN: ...\nPREMISE: ...\nITS WORDS (reuse these exactly): ..."", ""parent_name"": ""The Standing Register"", ""directive"": ""Expand the opposition: who they are, what they actually want, how they are organised, how they are penetrated, and what they have got wrong about their own situation. Everything already established about this world stays true and is referred to by the names it already has."", ""facet"": ""resistance""}";
var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var content = new StringContent(body, Encoding.UTF8, "application/json");
var res = await http.PostAsync("https://api.skillsafe.ai/v1/app-api/run", content);
Console.WriteLine(await res.Content.ReadAsStringAsync());Notes that will save you a round trip
- The seven axis ids are a closed set. Sending an id the app does not know is not an error, but it will not steer anything either — and the reconciliation will report the axis as unhonoured.
briefis what does the work.factsalone is a machine-readable echo; the prose blurbs inbriefare what the model reads. If you build your own input, write the blurbs.- Truncation is normal at low balances. A run whose balance sits between
min_creditsandhold_creditsstill executes with a reduced output cap and returns"truncated": true. Repair the partial JSON rather than discarding it. - Content limits are enforced in the prompt. A request naming a real nation, people, faith or living person as villain or victim comes back with an invented substitute and a one-sentence
cautionfield, not a refusal.