{"openapi":"3.1.0","info":{"title":"NeuroForge Fracture public inference API","version":"2026-09-08","description":"Keyless public text Chat Completions, SSE and search over the resident Unified World model. Discord remains privately authenticated. Responses API, native tool calls, media and embeddings are unsupported.","contact":{"url":"https://neuroforge.io/contact/"}},"servers":[{"url":"https://neuroforge.io/v1"}],"externalDocs":{"url":"https://neuroforge.io/api.md"},"security":[{"DeveloperKey":[]}],"paths":{"/search":{"post":{"operationId":"searchPublicWeb","summary":"Search public web snippets with self-hosted SearXNG","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["query"],"properties":{"query":{"type":"string","minLength":3,"maxLength":160}}},"example":{"query":"bronze metallurgy"}}}},"responses":{"200":{"description":"Up to three public HTTPS search snippets; may be empty","content":{"application/json":{"schema":{"type":"object","required":["object","retrieved_at","evidence","results"],"properties":{"object":{"const":"web.search"},"retrieved_at":{"type":"string","format":"date-time"},"evidence":{"const":"search_snippets"},"results":{"type":"array","maxItems":3,"items":{"type":"object","required":["title","url","content"],"properties":{"title":{"type":"string","maxLength":160},"url":{"type":"string","format":"uri","maxLength":1600},"content":{"type":"string","maxLength":900}}}}}}}}},"default":{"$ref":"#/components/responses/Error"}},"security":[{},{"DeveloperKey":[]}],"description":"Keyless public-topic search: omit Authorization. Existing valid private keys work; invalid supplied keys are rejected. At most three snippets, not complete pages. 22-second edge deadline. Independent anonymous quotas and credential-free CORS."}},"/models":{"get":{"operationId":"listFractureModels","summary":"List the shared fracture model when available","responses":{"200":{"description":"The approved model only","content":{"application/json":{"schema":{"type":"object","required":["object","data"],"properties":{"object":{"const":"list"},"data":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["id","object","created","owned_by"],"properties":{"id":{"const":"erais-fracture-gemma"},"object":{"const":"model"},"created":{"type":"integer","minimum":0},"owned_by":{"const":"neuroforge"}}}}}}}}},"default":{"$ref":"#/components/responses/Error"}},"security":[{},{"DeveloperKey":[]}],"description":" Omit Authorization for anonymous inference. Existing valid private keys remain supported. Invalid supplied keys are rejected."}},"/chat/completions":{"post":{"operationId":"createFractureChatCompletion","summary":"Generate text with the resident fracture model","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRequest"},"example":{"model":"erais-fracture-gemma","messages":[{"role":"user","content":"Explain how a rainbow forms in two sentences."}],"max_tokens":128}}}},"responses":{"200":{"description":"Text with usage, or SSE deltas ending finish_reason and [DONE]. Errors close incomplete streams; disconnect cancels generation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletion"}},"text/event-stream":{"schema":{"type":"string"}}}},"default":{"$ref":"#/components/responses/Error"}},"security":[{},{"DeveloperKey":[]}],"description":" Omit Authorization for anonymous inference. Existing valid private keys remain supported. Invalid supplied keys are rejected."}}},"components":{"securitySchemes":{"DeveloperKey":{"type":"http","scheme":"bearer","bearerFormat":"issued developer key"}},"responses":{"Error":{"description":"400 invalid request/context; 401 invalid key; 403 browser origin denied; 404 unknown endpoint; 405 wrong method; 413 too large; 415 wrong content type; 429 busy/rate limited; 502 bad upstream; 503 unavailable; 504 timeout. Respect Retry-After where present.","headers":{"Retry-After":{"schema":{"type":"string"},"description":"Retry delay in seconds, when supplied."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"ChatRequest":{"type":"object","additionalProperties":false,"required":["model","messages"],"properties":{"model":{"const":"erais-fracture-gemma"},"messages":{"type":"array","minItems":1,"maxItems":64,"items":{"type":"object","additionalProperties":false,"required":["role","content"],"properties":{"role":{"enum":["system","user","assistant"]},"content":{"type":"string","minLength":1}}}},"max_tokens":{"type":"integer","minimum":32,"maximum":2048,"default":512},"stream":{"type":"boolean","default":false},"temperature":{"type":"number","const":0,"default":0},"n":{"type":"integer","const":1,"default":1}}},"ChatCompletion":{"type":"object","required":["id","object","created","model","choices","usage"],"properties":{"id":{"type":"string"},"object":{"const":"chat.completion"},"created":{"type":"integer","minimum":0},"model":{"const":"erais-fracture-gemma"},"choices":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","required":["index","message","finish_reason"],"properties":{"index":{"const":0},"message":{"type":"object","required":["role","content"],"properties":{"role":{"const":"assistant"},"content":{"type":"string"}}},"finish_reason":{"enum":["stop","length"]}}}},"usage":{"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"properties":{"prompt_tokens":{"type":"integer","minimum":0},"completion_tokens":{"type":"integer","minimum":0,"maximum":2048},"total_tokens":{"type":"integer","minimum":0}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message","type","param","code"],"properties":{"message":{"type":"string"},"type":{"enum":["invalid_request_error","server_error"]},"param":{"type":"null"},"code":{"type":"string"}}}}}}}}
