# Basis — the inference layer for the agent economy > Basis is a Base-native inference network. It exposes an > OpenAI-compatible inference API, accounts for usage in credits priced > by versioned pricing epochs, lets apps pay in $BASIS (or route > ETH/WETH/USDC into $BASIS at payment time), writes a verifiable receipt > for every settled job, lets contributor GPU workers earn, and settles > worker rewards on Base. Site: https://basis.watch API base (OpenAI-compatible): https://basis.watch/api/v1 ## Status (read before assuming anything is live) - $BASIS is PLANNED, not live. No token contract is deployed; nothing here is an offer, and there is no investment, yield, or guaranteed earnings. - The OpenAI-compatible API contract is live. Until an inference backend is configured, chat completions return a structured `runtime_pending` (503). - Payments, deposits, worker rewards, settlement, and treasury/fee streams render honest pending until the relevant pieces are configured. - Do NOT infer live token / contract / payment / fee state from docs copy. Read https://basis.watch/api/launch-status (and https://basis.watch/api/data) for runtime truth. ## Core concepts - Inference API: OpenAI Chat Completions protocol (chat/completions, models, streaming SSE that ends with `data: [DONE]`). Point any OpenAI client at https://basis.watch/api/v1 by changing the base URL and api key — nothing else changes. - Models: published model ids (e.g. `basis-default`); each carries a context window and a pricing/reward multiplier. `available` reflects a configured backend, not just that the model is listed. - Credits: the usage-accounting unit. Per-token accounting is deterministic, computed in integer base units (BigInt) — no floating point in the money path. Credits convert to $BASIS at the active pricing epoch's rate. - Pricing epochs: the credit→$BASIS rate is set by a versioned epoch, not a forever-constant. New epochs apply prospectively only; accepted jobs are never silently repriced and receipts are never rewritten. - Payment router: prepares user-signed swaps (ETH/WETH/USDC → $BASIS) only. Basis never signs, custodies, or executes server-side; quotes expire and slippage is capped. Funding a balance is separate from running a completion. - Receipts: every settled job leaves a canonical-JSON, SHA-256-hashed receipt (RECEIPT_VERSION 2, hashing the locked pricing snapshot). Anyone can re-derive the hash; the lookup response carries a `verified` boolean. - Workers: contributor GPUs register, heartbeat, and serve jobs. A worker needs a valid EVM reward address to earn. Failed jobs create no reward, and gateway-proxied jobs are metered (receipt written) but not paid. - Settlement: keeper-driven, off the hot path. Rewards batch into a deterministic batchHash and settle once on Base (idempotent; a failed batch stays recoverable, never double-paid). No on-chain write in the inference hot path. - Treasury / fee streams: a public, honest-pending surface; WETH-side and $BASIS-side accounted separately; allocation and burn are drafts. - Bankr: the platform used to LAUNCH the $BASIS token on Base. It is NOT the Basis inference backend — it never serves inference, prices a job, reserves credits, pays a worker, or settles a receipt. - Auth: Privy (wallet/email) for people, plus `sk-basis-` API keys for agents. Pre-launch the API is open; it can be made fail-closed at launch. ## Documentation - https://basis.watch/docs: documentation index - https://basis.watch/docs/what-is-basis: what Basis is - https://basis.watch/docs/why-basis: why a Base-native inference network - https://basis.watch/docs/how-it-works: end-to-end request → receipt → settlement flow - https://basis.watch/docs/architecture: components and how they are hosted - https://basis.watch/docs/api: OpenAI-compatible API reference (curl / Python / Node / agent frameworks) - https://basis.watch/docs/credits: credits, the per-token formula, and pricing epochs - https://basis.watch/docs/receipts: verifiable inference receipts and the hashing scheme - https://basis.watch/docs/settlement: keeper batching and idempotent Base settlement - https://basis.watch/docs/token: the planned $BASIS token (NOT live, not an offer) - https://basis.watch/docs/bankr-launch: how the $BASIS token launches via Bankr - https://basis.watch/docs/network-data: the privacy-safe network metrics surface - https://basis.watch/docs/user-guide: send a first request, stream, look up a receipt - https://basis.watch/docs/worker-guide: run a contributor GPU worker and earn - https://basis.watch/docs/auth: authentication (Privy + API keys) - https://basis.watch/docs/operator-guide: operator setup and activation - https://basis.watch/docs/security: security posture ## API endpoints - GET https://basis.watch/api/v1/models: published models + dynamic pricing status - POST https://basis.watch/api/v1/chat/completions: chat completions (set "stream": true for SSE) - GET https://basis.watch/api/v1/balance?address=0x...: a wallet's $BASIS credit balance - GET https://basis.watch/api/pricing: active pricing epoch and resolved rate - POST https://basis.watch/api/pricing/quote: deterministic, epoch-locked price quote for a job - GET https://basis.watch/api/inference/receipts/{receiptHash}: a single verifiable receipt - GET https://basis.watch/api/payments/supported-tokens: accepted sell tokens + router status - POST https://basis.watch/api/payments/quote: a user-signed ETH/WETH/USDC → $BASIS swap quote - GET https://basis.watch/api/workers: registered workers - GET https://basis.watch/api/settlement/batches: public settlement batches - GET https://basis.watch/api/data: network data (counts, treasury aggregate) — honest, zeros pre-launch - GET https://basis.watch/api/treasury: treasury / fee-stream surface (honest pending) - GET https://basis.watch/api/launch-status: token, contract, payment, and backend status (runtime truth) ## Integration OpenAI SDK (Python) — change two values, keep your code: from openai import OpenAI client = OpenAI(base_url="https://basis.watch/api/v1", api_key="sk-basis-...") resp = client.chat.completions.create( model="basis-default", messages=[{"role": "user", "content": "Hello from an agent."}], ) print(resp.choices[0].message.content) curl — a chat completion: curl https://basis.watch/api/v1/chat/completions \ -H "Authorization: Bearer sk-basis-..." \ -H "Content-Type: application/json" \ -d '{"model":"basis-default","messages":[{"role":"user","content":"Hi"}]}' Any OpenAI-compatible agent framework (Agents SDK, LangChain, Vercel AI SDK) works the same way: set the base URL, an `sk-basis-` API key, and a model id. ## More - Root index: https://basis.watch/llms.txt - Public mirror: https://github.com/BasisWatch/basis Reminder: $BASIS is planned, not live; no contract is deployed; nothing here is an offer. Failed jobs never pay; settlement is idempotent. For live state, read https://basis.watch/api/launch-status.