VibeLearning / Docs
VibeLearning API guide

Build with one gateway

Create an API key, select an available model, and connect OpenAI-compatible, Anthropic, Gemini, or asynchronous image workflows through VibeLearning.

Halo international endpointCustomer-safe examples

Quickstart

Create an account, issue a dedicated API key, and run a minimal request against the OpenAI-compatible endpoint.

1

Create an API key

Sign in to the dashboard and create a key for one client or workload.

2

Select a model

Use a model name currently available to your account.

3

Send a test request

Replace the placeholder key below and keep the initial test small.

Shell · Responses API
curl https://halo.vibelearning.top/v1/responses \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "input": "Reply with: connection successful"
  }'

Base URLs

Use the endpoint that matches the client's native protocol. Do not append OpenAI paths to Anthropic or Gemini-native configuration fields.

OpenAI compatiblehttps://halo.vibelearning.top/v1
Anthropic nativehttps://halo.vibelearning.top
Gemini nativehttps://halo.vibelearning.top
Client base URL and request path are different concepts.

OpenAI SDK configuration normally ends in /v1. Claude Code and Gemini CLI use the site root.

API keys

Create separate keys for separate clients. This makes usage easier to audit and lets you revoke one integration without affecting another.

NameUse a workload label such as “Production Codex” or “Image worker”.
QuotaSet a dedicated limit for automation and test keys whenever possible.
ExpirationUse an explicit expiration time for temporary or shared tests.
Model accessRestrict the key to required models when you need tighter control.
Authorization header
Authorization: Bearer sk-your-key

Claude Code

Claude Code uses the Anthropic Messages protocol. Configure the Halo site root and a dedicated API key.

macOS / Linux
export ANTHROPIC_BASE_URL="https://halo.vibelearning.top"
export ANTHROPIC_AUTH_TOKEN="sk-your-key"
claude

Codex CLI

Configure an OpenAI-compatible provider with the Halo /v1 endpoint.

config.toml
[model_providers.vibelearning]
name = "VibeLearning"
base_url = "https://halo.vibelearning.top/v1"
env_key = "VIBELEARNING_API_KEY"
wire_api = "responses"

model_provider = "vibelearning"
model = "your-model"

Gemini CLI

Use the Gemini-native site root with a dedicated key.

macOS / Linux
export GOOGLE_GEMINI_BASE_URL="https://halo.vibelearning.top"
export GEMINI_API_KEY="sk-your-key"
gemini

Core endpoints

All requests require an API key. Availability depends on the models enabled for your account.

MethodPathPurpose
POST/v1/responsesOpenAI Responses
POST/v1/chat/completionsChat Completions
POST/v1/messagesAnthropic Messages
GET/v1/modelsModels available to the key
POST/api/image/jobsAsynchronous image generation or editing
GET/api/image/jobs/{job_id}Poll an image job

Request examples

Chat Completions

cURL
curl https://halo.vibelearning.top/v1/chat/completions \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "messages": [{"role": "user", "content": "Reply with: connection successful"}],
    "stream": false
  }'

Anthropic Messages

cURL
curl https://halo.vibelearning.top/v1/messages \
  -H "x-api-key: sk-your-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Reply with: connection successful"}]
  }'

Asynchronous image jobs

Long-running image requests should use task submission and polling. Save the returned job ID and poll until the task reaches a terminal state.

Submit a generation job
curl https://halo.vibelearning.top/api/image/jobs \
  -H "Authorization: Bearer sk-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "endpoint": "images/generations",
    "body": {
      "model": "your-image-model",
      "prompt": "A minimal product photograph on a neutral background",
      "n": 1,
      "size": "1024x1024"
    }
  }'
Poll a job
curl https://halo.vibelearning.top/api/image/jobs/job_xxx \
  -H "Authorization: Bearer sk-your-key"

Recommended polling interval: 5–10 seconds. Stop polling after succeeded, failed, or timeout.

Troubleshooting

HTML returned instead of JSON

Check that OpenAI-compatible requests include /v1. The correct paths are /v1/responses and /v1/chat/completions.

401 / Invalid token

Confirm the key is active, unexpired, and sent in the required authentication header.

403 / Access denied

Confirm the key can access the selected model and has sufficient quota.

429 / Rate limit

Reduce concurrency and apply exponential backoff with jitter.

No available channel for the model

Refresh the model list and select a model currently available to your account.

Protect credentials in support requests.

Share the request time, model, path, HTTP status, error message, and log ID. Never send a complete API key.