DEVELOPER

WEB6 SDKs

First-class clients for JavaScript/TypeScript and Python. One line of code to reach every AI provider in the OASIS ecosystem.

npm @oasisomniverse/web6-api PyPI oasis-web6 ↗

Installation

npm install @oasisomniverse/web6-api
yarn add @oasisomniverse/web6-api

Quick Start

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);
}

Common Patterns

Cost preview before calling

const est = await client.estimateCost({
  provider: 'openai', model: 'gpt-4o',
  promptTokens: 500, completionTokens: 200,
});
console.log(`Estimated: $${est.estimatedUSD.toFixed(6)}`);

Check your quota

const usage = await client.getUsage({ plan: 'Silver', karma: 5000 });
console.log(`${usage.dailyCallsUsed} / ${usage.dailyCallLimit} calls today`);
console.log(`Karma multiplier: ${usage.karmaMultiplier}×`);

Browse available models

const { models } = await client.listModels({ plan: 'Bronze' });
models.forEach(m =>
  console.log(m.id, m.minPlanLabel, `$${m.inputPer1kUSD}/1K in`)
);

Webhook for async video generation

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

Multi-modal search + rerank

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,
});

All Methods

MethodEndpointDescription
complete(req)POST /v1/completeChat completion
completeStream(req)POST /v1/complete/streamSSE streaming completion
embed(texts, opts)POST /v1/embeddingsVector embeddings
generateImage(prompt, opts)POST /v1/images/generateImage generation
generateVideo(prompt, opts)POST /v1/video/generateVideo generation + webhook
synthesiseSpeech(text, opts)POST /v1/audio/speechText-to-speech
transcribe(file, opts)POST /v1/audio/transcriptionsSpeech-to-text
search(query, opts)POST /v1/searchWeb search
rerank(query, docs, opts)POST /v1/rerankSemantic reranking
moderate(text, opts)POST /v1/moderationContent moderation
translate(text, lang, opts)POST /v1/translateTranslation
classify(text, labels, opts)POST /v1/classifyZero-shot classification
extract(text, schema, opts)POST /v1/extractStructured extraction
parseDocument(file, opts)POST /v1/documents/parseDocument parsing
executeCode(code, opts)POST /v1/code/executeSandboxed code execution
submitBatch(requests, opts)POST /v1/batch/submitBatch submission + webhook
getBatchStatus(batchId, opts)GET /v1/batch/{id}/statusBatch status polling
storeMemory(content, opts)POST /v1/memory/storeStore memory fragment
queryMemory(query, opts)POST /v1/memory/querySemantic memory search
checkGuardrails(text, opts)POST /v1/guardrails/checkSafety guardrails
createFinetune(model, data, opts)POST /v1/fine-tuning/jobsFine-tuning job + webhook
getFinetuneStatus(jobId, opts)GET /v1/fine-tuning/jobs/{id}Fine-tuning status
graphragQuery(query, opts)POST /v1/graphrag/queryGraphRAG
optimisePrompt(prompt, opts)POST /v1/prompts/optimisePrompt optimisation
fahrnDispatch(problem, opts)POST /v1/reasoning-network/dispatchFAHRN reasoning network
listModels(opts)GET /v1/modelsModel catalogue
getModel(modelId)GET /v1/models/{id}Model detail
listProviders()GET /v1/providersProvider status
estimateCost(req)POST /v1/estimateCost preview
getUsage(opts)GET /v1/usageQuota & usage summary
orchestrateCrewAI(req)POST /v1/orchestrate/crewaiCrewAI task dispatch
orchestrateAutoGen(req)POST /v1/orchestrate/autogenAutoGen conversation
orchestrateLangGraph(req)POST /v1/orchestrate/langgraphLangGraph node execution

Installation

pip install oasis-web6

Quick Start

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)

Common Patterns

Cost preview

est = client.estimate_cost("openai", "gpt-4o", prompt_tokens=500, completion_tokens=200)
print(f"Estimated: ${est['estimatedUSD']:.6f}")

Check quota

usage = client.get_usage(plan="Silver", karma=5000)
print(f"{usage['dailyCallsUsed']} / {usage['dailyCallLimit']} calls today")
print(f"Karma multiplier: {usage['karmaMultiplier']}×")

Context manager

with Web6Client(token="<jwt>") as client:
    resp = client.complete(messages=[{"role":"user","content":"Hello"}])

Video with webhook

result = client.generate_video(
    prompt="A glowing OASIS torus rotating in deep space",
    callback_url="https://your-app.com/webhooks/video",
)

Search + rerank

hits   = client.search("holonic consciousness", max_results=20)
ranked = client.rerank(
    "holonic consciousness",
    [h["snippet"] for h in hits["result"]],
    top_n=5,
)

All Methods

MethodEndpoint
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

Async Client

Use AsyncWeb6Client inside FastAPI, asyncio scripts, or any async context. Every method is the same as the sync client but 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}")

FastAPI Example

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()

Direct HTTP

Every endpoint accepts JSON and returns an OASISResult envelope. Authenticate with a Bearer JWT or X-Api-Key header.

Chat completion (curl)

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!"}]
  }'

Streaming (curl)

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"}]}'

Cost estimate

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}'

List models

curl https://api.web6.oasisomniverse.one/v1/models?plan=Bronze \
  -H "Authorization: Bearer $WEB6_JWT"

Check quota

curl "https://api.web6.oasisomniverse.one/v1/usage?plan=Silver&karma=5000" \
  -H "Authorization: Bearer $WEB6_JWT"

Response envelope

{
  "isError": false,
  "message": null,
  "result": { /* endpoint-specific data */ }
}

Rate limit headers (every response)

X-RateLimit-Limit: 1500
X-RateLimit-Remaining: 1453
X-RateLimit-Reset: 1756137600
X-RateLimit-Plan: Silver
X-Karma-Multiplier: 3