Shared adult creator contract
Psychosis, Espionage, and Espionage Psychosis keep their native payloads and distinct semantics. Contract 1.13.0 adds deterministic compatibility parsing, a shared direct-character interaction contract, consistent typed problems, and byte-verifiable runtime freshness for pages, APIs, assets, server components, exports, OpenAPI mirrors, and the non-cacheable status boundary.
Discover
GET /api/v1/create/adult/
Lists creator routes, common request rules, deterministic envelope precedence, consent values, capability endpoints, truth boundaries, examples, contract version, and package markers.
Validate the common shape
GET /api/v1/create/adult/schema/
Returns a Draft 2020-12 JSON Schema for the shared successful-response fields. Creator-native fields remain intentionally allowed.
Inspect direct-character behavior
GET /api/v1/create/adult/interaction/
Returns the non-generating active-fictional-character-v1 contract, explicit activation and out-of-character routing, profile-isolation rules, image self-reference, epistemic layers, and creator-specific boundaries.
Inspect grounded realism
GET /api/v1/create/adult/realism/
Returns the non-generating grounded-fictional-character-realism-v1 contract, chronology, relationships, bounded expertise, ordinary-life, dialogue, physicality, creator-specific portrayal, and non-stereotyping rules.
Inspect scene-bounded NPC runtime
GET /api/v1/create/adult/runtime/
Returns the non-generating scene-bounded-fictional-npc-runtime-v1 contract for independent goals, reciprocal relationships, source-bound memory, qualitative bodily state, first-person dialogue, and explicit-visual-facts-only image projection.
Inspect international grounding
GET /api/v1/create/adult/international/
Returns the additive global-country-context-fairness-v1 rules for citizenship, legal nationality, identity, birthplace, residence, migration, family origins, language provenance, territories, rare combinations, and non-inference.
Verify deployment markers
GET /api/v1/create/adult/status/
Returns exact package markers, generated SHA-256 manifests for 71 public assets and 10271 critical server components, and a fresh runtime file comparison. It is explicitly non-cacheable, supports a caller freshness probe, never returns a successful 304, and never claims deployment acceptance has passed.
Inspect the full API
GET /openapi.json
OpenAPI 3.1 documents common and creator-specific POST bodies, query parameters, native-compatible responses, typed problems, and all shared contract routes.
Common request rules
| Input | Contract |
adult_consent | Required on every generation request. Accepted values include 1, yes, true, confirmed, over18, and adult. ageConfirmed is a compatible alias. |
seed | Optional deterministic seed, up to 200 characters. Random routes create a new seed when omitted. |
count | One through five on adult batch operations. Direct and random operations normally return one. |
detail | Common documented values are compact, game, standard, and full. Each creator advertises its default and may map unsupported values to its nearest documented mode. |
X-Spiralist-Client | Optional integration identifier. It is not authentication and never replaces explicit adult confirmation. |
Common success fields
| Field | Meaning |
contractVersion / responseContract | 1.13.0 and adult-creator-native-compatible-v1. They identify the shared integration layer, not a creator's independent semantic-engine release. |
interactionContractName / interactionContractVersion / interactionMode | active-fictional-character-v1, 1.0.0, and direct-first-person-character. They identify direct first-person character activation rather than a style overlay. |
realismContractName / realismContractVersion / realismMode | grounded-fictional-character-realism-v1, 1.0.0, and chronology-relationships-expertise-ordinary-life. They identify internal chronology, bounded expertise, reciprocal relationships, ordinary life, personality continuity, and creator-specific realism without demographic quota enforcement. |
npcRuntimeContract / npc_runtime | scene-bounded-fictional-npc-runtime-v1 version 1.1.0 is the scene-bounded playable-character authority. Legacy assistant workflow artifacts remain compatibility-only. |
internationalFairnessContractName / internationalFairnessContractVersion / internationalFairnessMode | global-country-context-fairness-v1, 1.1.0, and equal-questions-distinct-contexts-evidence-layers-balanced-research. They identify the shared worldwide evidence, identity-separation, territory, language-provenance, and non-inference rules. |
internationalFairnessContract / internationalSummary / character internationalContext | Machine-readable fairness rules, response-level conformance summary, and profile-authored identity/language context. Catalog country data never silently becomes biography. |
interactionContract / interactionActivationPrompt / interactionProfileText | Machine-readable routing, provider-portable activation text, and a self-contained profile whose active-character behavior survives export and handoff. |
contractRelease / packageStatus / completionMarker | Immutable package identity used to compare page HTML, API code, OpenAPI, exports, and deployed caches. |
deploymentFingerprint | SHA-256 identity derived from the release, contract, generated public-asset manifest, and critical server-component manifest. |
assetManifestSha256 / componentManifestSha256 | Canonical hashes of the generated asset and server-component inventories. Use the status route to retrieve every expected file hash and its fresh runtime comparison. |
creatorType / creatorLabel | Canonical family identity: psychosis, espionage, or espionage-psychosis. |
character / characters | Canonical normalized object and ordered collection. Batch responses set character to null. Existing native fields remain available. |
count / request | Normalized result count and bounded request controls used by the service. |
requestId / generatedAtUtc | Fresh request tracing and UTC response time. They are not part of deterministic persona identity. |
meta / data / links / contract | Stable integration metadata, aliases, discoverable routes, native-field preservation, and envelope precedence. |
adultOnly / fictionalCharactersOnly / diagnosticUse | Explicit feature and authority boundaries. Adult content remains fictional; generated material is not diagnosis or evidence about a visitor. |
Deterministic envelope precedence
The PHP decorator and browser builder use the same first-non-empty order: characters, character, results, result, data, then payload. Compatibility aliases are not aggregated, so one persona repeated under several aliases renders and exports once.
One parser for all three creators
const endpoint = "https://spiralistai.com/api/v1/create/espionage/random/";
const response = await fetch(endpoint, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Accept": "application/json",
"X-Spiralist-Client": "example-integration-v1"
},
body: JSON.stringify({
adult_consent: 1,
seed: "integration-example-001",
detail: "game"
})
});
const payload = await response.json();
if (!response.ok) {
throw new Error(
`${payload.code ?? "REQUEST_FAILED"}: ${payload.detail ?? response.statusText}` +
(payload.requestId ? ` [${payload.requestId}]` : "")
);
}
console.log(payload.responseContract); // adult-creator-native-compatible-v1
console.log(payload.contractVersion); // 1.13.0console.log(payload.interactionMode); // direct-first-person-character
console.log(payload.realismMode); // chronology-relationships-expertise-ordinary-life
console.log(payload.internationalFairnessMode); // equal-questions-distinct-contexts-evidence-layers-balanced-researchconsole.log(payload.characters); // canonical ordered collection
console.log(payload.operativeProfile); // native creator fields remain available
Fresh, non-cacheable deployment status
Send X-Spiralist-Deployment-Probe or ?probe= to bind a response to a caller-selected nonce. The header takes precedence, accepted values match ^[A-Za-z0-9._:-]{1,96}$, and invalid values are never reflected. Successful GET and HEAD responses use Cache-Control: no-store, no-cache, max-age=0, must-revalidate, Pragma: no-cache, Expires: 0, Surrogate-Control: no-store, and CDN-Cache-Control: no-store. They always run a new runtime verification and return HTTP 200 rather than 304.
The response echoes an accepted probe and exposes X-Spiralist-Runtime-Checked-At plus X-Spiralist-Runtime-Conformant. CORS allows the probe request header, exposes all freshness headers, and varies by Accept, Origin, and the probe header.
Headers, typed errors, and mixed-deployment detection
Generation responses expose X-Spiralist-Request-Id, X-Spiralist-Creator-Type, X-Spiralist-Adult-Only, X-Spiralist-Adult-Consent-Required, X-Spiralist-Response-Envelope, X-Spiralist-Contract-Version, X-Spiralist-Interaction-Contract, X-Spiralist-Interaction-Version, X-Spiralist-Interaction-Mode, X-Spiralist-Realism-Contract, X-Spiralist-Realism-Version, X-Spiralist-Realism-Mode, X-Spiralist-International-Fairness-Contract, X-Spiralist-International-Fairness-Version, X-Spiralist-International-Fairness-Mode, X-Spiralist-Release, X-Spiralist-Package-Status, X-Spiralist-Completion-Marker, X-Spiralist-Deployment-Fingerprint, X-Spiralist-Asset-Manifest-Sha256, X-Spiralist-Component-Manifest-Sha256, X-Spiralist-Default-Detail, and discoverable Link relations. Browser JavaScript may read these through CORS. The shared creator UI reports an actionable deployment-marker mismatch when advertised page and API markers disagree.
Failures use application/problem+json. Missing confirmation returns HTTP 403 with code=AGE_CONFIRMATION_REQUIRED, request and package markers, accepted values, examples, creator type, and documentation links. Malformed JSON, invalid filters, oversized bodies, rate limits, and server failures use the same typed-problem foundation. A failed request is a no-op and does not create or persist persona state.
curl -i -sS "https://spiralistai.com/api/v1/create/adult/status/"
# Compare these values and the status body manifests with the extracted package:
# X-Spiralist-Contract-Version: 1.13.0# X-Spiralist-Interaction-Contract: active-fictional-character-v1# X-Spiralist-Interaction-Version: 1.0.0# X-Spiralist-Interaction-Mode: direct-first-person-character# X-Spiralist-Realism-Contract: grounded-fictional-character-realism-v1# X-Spiralist-Realism-Version: 1.0.0# X-Spiralist-Realism-Mode: chronology-relationships-expertise-ordinary-life# X-Spiralist-International-Fairness-Contract: global-country-context-fairness-v1# X-Spiralist-International-Fairness-Version: 1.1.0# X-Spiralist-International-Fairness-Mode: equal-questions-distinct-contexts-evidence-layers-balanced-research# X-Spiralist-Release: v100.0.66-behavioral-likelihood-character-runtime-integration-wip# X-Spiralist-Package-Status: work-in-progress# X-Spiralist-Completion-Marker: SPIRALIST_BEHAVIORAL_LIKELIHOOD_CHARACTER_RUNTIME_INTEGRATION_WIP_V100_0_66# X-Spiralist-Deployment-Fingerprint: 90442fd660a94d42879da88293f2490b25a051fe718246f787b1ed6c52d50f30# X-Spiralist-Asset-Manifest-Sha256: 7d290de8d0fe067edbe0b12ffdef3a826d3a635e0ab7a8e71e9704009ffb2587# X-Spiralist-Component-Manifest-Sha256: cba1989ddc84e09f8093003fc27cd5a9d698f92375b73e383fa7af4a03331f31