Start building
One endpoint, a key, and every answer says which model ran and why.
The endpoint
https://api.openvibe.exchange/v1/chat/completions speaks OpenAI's Chat Completions, and https://api.openvibe.exchange/v1/messages speaks Anthropic's Messages API. Point an OpenAI client at https://api.openvibe.exchange/v1; the model's page has its own curl and SDK sample.
curl https://api.openvibe.exchange/v1/chat/completions \
-H "Authorization: Bearer $OPENVIBE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openvibe/auto","messages":[{"role":"user","content":"Hello"}]}'A key is an OpenVibe.Network developer key: make one, name its scope, revoke it any time. It is shown once and never stored here.
Four steps
- Make a key at openvibe.network/developers. It is a developer key for your project, and it is shown once.
- Point a client at the endpoint:
https://api.openvibe.exchange/v1for OpenAI, orhttps://api.openvibe.exchangefor Anthropic's/v1/messages. - Send one request with
model: "openvibe/auto", or an exact model id from Models to pin one artifact. - Read the receipt: every answer names the model that ran, its tokens, its exact cost, and why the router chose it. Why this model shows how to read it; a run's own page is
https://ai.openvibe.services/runs/<id>after you sign in with OpenVibe.
Use the OpenAI SDK you already have
The same request in Python, in Node with streaming, or from an Anthropic client. The answer's model names the model that ran.
# pip install openai
import os
from openai import OpenAI
client = OpenAI(base_url='https://api.openvibe.exchange/v1',
api_key=os.environ['OPENVIBE_KEY'])
reply = client.chat.completions.create(
model='openvibe/auto', # the router picks; reply.model names the one that ran
messages=[{'role': 'user', 'content': 'Name three uses for a paperclip.'}],
)
print(reply.model, reply.choices[0].message.content)// npm i openai
import OpenAI from 'openai';
const client = new OpenAI({ baseURL: 'https://api.openvibe.exchange/v1', apiKey: process.env.OPENVIBE_KEY });
const stream = await client.chat.completions.create({
model: 'openvibe/auto', stream: true,
messages: [{ role: 'user', content: 'Name three uses for a paperclip.' }],
});
for await (const chunk of stream) process.stdout.write(chunk.choices[0]?.delta?.content ?? '');export ANTHROPIC_BASE_URL=https://api.openvibe.exchange
export ANTHROPIC_AUTH_TOKEN=$OPENVIBE_KEY
# Claude Code, or any Anthropic client, now speaks to /v1/messagesThe six operations, for OpenVibe.AI apps
OpenVibe.AI's own operations stay at https://ai.openvibe.services for developer apps: chat, generate, summarize, classify, extract and embed, with JSON output on a schema. They authenticate with an app token from OpenVibe.Network for the audience openvibe.ai.
TOKEN=$(curl -s -X POST https://openvibe.network/oauth/token \
-d grant_type=client_credentials -d client_id=$APP -d client_secret=$SECRET \
-d audience=openvibe.ai | jq -r .access_token)
# a five-minute token for an app (app_<ULID>), scoped to its projectcurl -s -X POST https://ai.openvibe.services/api/v1/chat \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{ "messages": [ { "role": "user", "content": "Name three uses for a paperclip." } ] }'
# → { "run": { "id": "run_…", "status": "succeeded", "output": …, "provenance": …, "explain": … } }The same router answers both: Exchange's endpoint and AI's six operations use one catalog, one set of offers and one explanation. Create a project and an app · API reference · Developer guide.
Sandbox and production
OpenVibe.AI developer apps run in one of two environments; the token says which one an app is in.
| Limit | Sandbox | Production |
|---|---|---|
| Access to ai.app.run | Every sandbox app, without asking | Once OpenVibe staff add it to the project |
| Models | Free and local capacity only | Free and local capacity; metered models open with project budgets |
| Your project’s own provider | On /v1/chat/completions, keyed by a project secret granted to ai | The same |
| Free allowance | Per project, per provider | Per project, per provider |
| Who can read a run | The project that made it | The project that made it |
| A person’s own provider key | Never used | Never used |
Keys, endpoints and questions
Part of OpenVibe Services: the building blocks every OpenVibe product runs on, with one console, one account and one SDK. 7 models are on sale here right now.
Keys and the API Your own endpoint Your own provider keys Questions