First-class clients for JavaScript/TypeScript and Python. One line of code to reach every AI provider in the OASIS ecosystem.
npm install @oasisomniverse/web6-api
yarn add @oasisomniverse/web6-api
import { Web6Client } from '@oasisomniverse/web6-api';
const client = new Web6Client({ token: process.env.WEB6_JWT });
// Chat completion
const resp = await client.complete({
messages: [{ role: 'user', content: 'What is holonic memory?' }],
provider: 'auto', // WEB6 picks the best model for your plan
});
console.log(resp.result.content);
// Streaming
for await (const chunk of client.completeStream({
messages: [{ role: 'user', content: 'Tell me a story' }],
})) {
process.stdout.write(chunk);
}
const est = await client.estimateCost({
provider: 'openai', model: 'gpt-4o',
promptTokens: 500, completionTokens: 200,
});
console.log(`Estimated: $${est.estimatedUSD.toFixed(6)}`);
const usage = await client.getUsage({ plan: 'Silver', karma: 5000 });
console.log(`${usage.dailyCallsUsed} / ${usage.dailyCallLimit} calls today`);
console.log(`Karma multiplier: ${usage.karmaMultiplier}×`);
const { models } = await client.listModels({ plan: 'Bronze' });
models.forEach(m =>
console.log(m.id, m.minPlanLabel, `$${m.inputPer1kUSD}/1K in`)
);
const result = await client.generateVideo({
prompt: 'A glowing OASIS torus rotating in deep space',
callbackUrl: 'https://your-app.com/webhooks/video',
});
// WEB6 POSTs { jobId, jobType, status, result } to your endpoint when done
const hits = await client.search({ query: 'holonic consciousness', maxResults: 20 });
const ranked = await client.rerank({
query: 'holonic consciousness',
documents: hits.result.map(h => h.snippet),
topN: 5,
});
| Method | Endpoint | Description |
|---|---|---|
| complete(req) | POST /v1/complete | Chat completion |
| completeStream(req) | POST /v1/complete/stream | SSE streaming completion |
| embed(texts, opts) | POST /v1/embeddings | Vector embeddings |
| generateImage(prompt, opts) | POST /v1/images/generate | Image generation |
| generateVideo(prompt, opts) | POST /v1/video/generate | Video generation + webhook |
| synthesiseSpeech(text, opts) | POST /v1/audio/speech | Text-to-speech |
| transcribe(file, opts) | POST /v1/audio/transcriptions | Speech-to-text |
| search(query, opts) | POST /v1/search | Web search |
| rerank(query, docs, opts) | POST /v1/rerank | Semantic reranking |
| moderate(text, opts) | POST /v1/moderation | Content moderation |
| translate(text, lang, opts) | POST /v1/translate | Translation |
| classify(text, labels, opts) | POST /v1/classify | Zero-shot classification |
| extract(text, schema, opts) | POST /v1/extract | Structured extraction |
| parseDocument(file, opts) | POST /v1/documents/parse | Document parsing |
| executeCode(code, opts) | POST /v1/code/execute | Sandboxed code execution |
| submitBatch(requests, opts) | POST /v1/batch/submit | Batch submission + webhook |
| getBatchStatus(batchId, opts) | GET /v1/batch/{id}/status | Batch status polling |
| storeMemory(content, opts) | POST /v1/memory/store | Store memory fragment |
| queryMemory(query, opts) | POST /v1/memory/query | Semantic memory search |
| checkGuardrails(text, opts) | POST /v1/guardrails/check | Safety guardrails |
| createFinetune(model, data, opts) | POST /v1/fine-tuning/jobs | Fine-tuning job + webhook |
| getFinetuneStatus(jobId, opts) | GET /v1/fine-tuning/jobs/{id} | Fine-tuning status |
| graphragQuery(query, opts) | POST /v1/graphrag/query | GraphRAG |
| optimisePrompt(prompt, opts) | POST /v1/prompts/optimise | Prompt optimisation |
| fahrnDispatch(problem, opts) | POST /v1/reasoning-network/dispatch | FAHRN reasoning network |
| listModels(opts) | GET /v1/models | Model catalogue |
| getModel(modelId) | GET /v1/models/{id} | Model detail |
| listProviders() | GET /v1/providers | Provider status |
| estimateCost(req) | POST /v1/estimate | Cost preview |
| getUsage(opts) | GET /v1/usage | Quota & usage summary |
| orchestrateCrewAI(req) | POST /v1/orchestrate/crewai | CrewAI task dispatch |
| orchestrateAutoGen(req) | POST /v1/orchestrate/autogen | AutoGen conversation |
| orchestrateLangGraph(req) | POST /v1/orchestrate/langgraph | LangGraph node execution |
pip install oasis-web6
from web6 import Web6Client
client = Web6Client(token="<your-oasis-jwt>")
# Chat completion
resp = client.complete(
messages=[{"role": "user", "content": "What is holonic memory?"}],
provider="auto",
)
print(resp["result"]["content"])
# Streaming
for chunk in client.complete_stream(
messages=[{"role": "user", "content": "Tell me a story"}]
):
print(chunk, end="", flush=True)
est = client.estimate_cost("openai", "gpt-4o", prompt_tokens=500, completion_tokens=200)
print(f"Estimated: ${est['estimatedUSD']:.6f}")
usage = client.get_usage(plan="Silver", karma=5000)
print(f"{usage['dailyCallsUsed']} / {usage['dailyCallLimit']} calls today")
print(f"Karma multiplier: {usage['karmaMultiplier']}×")
with Web6Client(token="<jwt>") as client:
resp = client.complete(messages=[{"role":"user","content":"Hello"}])
result = client.generate_video(
prompt="A glowing OASIS torus rotating in deep space",
callback_url="https://your-app.com/webhooks/video",
)
hits = client.search("holonic consciousness", max_results=20)
ranked = client.rerank(
"holonic consciousness",
[h["snippet"] for h in hits["result"]],
top_n=5,
)
| Method | Endpoint |
|---|---|
| complete(messages, **kw) | POST /v1/complete |
| complete_stream(messages, **kw) | POST /v1/complete/stream |
| embed(texts, **kw) | POST /v1/embeddings |
| generate_image(prompt, **kw) | POST /v1/images/generate |
| generate_video(prompt, **kw) | POST /v1/video/generate |
| synthesise_speech(text, **kw) | POST /v1/audio/speech |
| transcribe(audio_bytes, **kw) | POST /v1/audio/transcriptions |
| search(query, **kw) | POST /v1/search |
| rerank(query, docs, **kw) | POST /v1/rerank |
| moderate(text, **kw) | POST /v1/moderation |
| translate(text, target_language, **kw) | POST /v1/translate |
| classify(text, labels, **kw) | POST /v1/classify |
| extract(text, schema, **kw) | POST /v1/extract |
| parse_document(file_bytes, filename) | POST /v1/documents/parse |
| execute_code(code, **kw) | POST /v1/code/execute |
| submit_batch(requests, **kw) | POST /v1/batch/submit |
| get_batch_status(batch_id, **kw) | GET /v1/batch/{id}/status |
| store_memory(content, **kw) | POST /v1/memory/store |
| query_memory(query, **kw) | POST /v1/memory/query |
| check_guardrails(text, **kw) | POST /v1/guardrails/check |
| create_finetune(base_model, data, **kw) | POST /v1/fine-tuning/jobs |
| get_finetune_status(job_id, **kw) | GET /v1/fine-tuning/jobs/{id} |
| graphrag_query(query, **kw) | POST /v1/graphrag/query |
| optimise_prompt(prompt, **kw) | POST /v1/prompts/optimise |
| fahrn_dispatch(problem, **kw) | POST /v1/reasoning-network/dispatch |
| list_models(plan=None) | GET /v1/models |
| get_model(model_id) | GET /v1/models/{id} |
| list_providers() | GET /v1/providers |
| estimate_cost(provider, model, tokens) | POST /v1/estimate |
| get_usage(plan=None, karma=0) | GET /v1/usage |
| orchestrate_crewai(tasks, **kw) | POST /v1/orchestrate/crewai |
| orchestrate_autogen(initial_message, **kw) | POST /v1/orchestrate/autogen |
| orchestrate_langgraph(node_name, state, **kw) | POST /v1/orchestrate/langgraph |
awaitable.
from web6 import AsyncWeb6Client
async def main():
async with AsyncWeb6Client(token="<jwt>") as client:
# Completion
resp = await client.complete(
messages=[{"role": "user", "content": "Hello from async!"}]
)
print(resp["result"]["content"])
# Async streaming
async for chunk in client.complete_stream(
messages=[{"role": "user", "content": "Tell me a story"}]
):
print(chunk, end="", flush=True)
# Cost preview
est = await client.estimate_cost("openai", "gpt-4o", prompt_tokens=500)
print(f"${est['estimatedUSD']:.6f}")
from fastapi import FastAPI
from web6 import AsyncWeb6Client
import os
app = FastAPI()
client = AsyncWeb6Client(token=os.environ["WEB6_JWT"])
@app.post("/chat")
async def chat(message: str):
resp = await client.complete(
messages=[{"role": "user", "content": message}],
provider="auto",
)
return {"reply": resp["result"]["content"]}
@app.get("/shutdown")
async def shutdown():
await client.close()
Every endpoint accepts JSON and returns an OASISResult envelope. Authenticate with a Bearer JWT or X-Api-Key header.
curl -X POST https://api.web6.oasisomniverse.one/v1/complete \
-H "Authorization: Bearer $WEB6_JWT" \
-H "Content-Type: application/json" \
-d '{
"provider": "auto",
"messages": [{"role":"user","content":"Hello!"}]
}'
curl -N -X POST https://api.web6.oasisomniverse.one/v1/complete/stream \
-H "Authorization: Bearer $WEB6_JWT" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Tell me a story"}]}'
curl -X POST https://api.web6.oasisomniverse.one/v1/estimate \
-H "Authorization: Bearer $WEB6_JWT" \
-H "Content-Type: application/json" \
-d '{"provider":"openai","model":"gpt-4o","promptTokens":500,"completionTokens":200}'
curl https://api.web6.oasisomniverse.one/v1/models?plan=Bronze \ -H "Authorization: Bearer $WEB6_JWT"
curl "https://api.web6.oasisomniverse.one/v1/usage?plan=Silver&karma=5000" \ -H "Authorization: Bearer $WEB6_JWT"
{
"isError": false,
"message": null,
"result": { /* endpoint-specific data */ }
}
X-RateLimit-Limit: 1500 X-RateLimit-Remaining: 1453 X-RateLimit-Reset: 1756137600 X-RateLimit-Plan: Silver X-Karma-Multiplier: 3