What is Nbility?
Nbility is a unified AI API gateway. One account can use separate keys and groups for OpenAI, Claude, Gemini, DeepSeek, and other models while centralizing billing and logs.
Is the API identical to OpenAI?
Nbility exposes OpenAI-compatible Chat Completions, Responses, Images, Audio, Embeddings, and other endpoints, plus native Claude- and Gemini-compatible formats. Compatibility depends on the endpoint, model, and route. A field accepted by an OpenAI SDK is not necessarily supported by every upstream model.
Are Token and API Key the same?
In the Nbility console, a token is the API key used for requests. Create separate keys per application and set groups, quotas, expiration, model scope, and IP restrictions.
Which Base URL should I use?
| Format | Base URL |
|---|---|
| OpenAI SDK / Chat / Responses | https://api.nbility.ai/v1 |
| Claude Code / Anthropic SDK | https://api.nbility.ai |
| Native Gemini | https://api.nbility.ai |
Claude and Gemini clients append their own versioned resource paths, so they usually should not copy the OpenAI /v1 Base URL.
Does every model support streaming?
No. stream: true depends on the endpoint, model, and selected route. Verify it on the target model. Asynchronous image and video tasks are not chat SSE streams.
Why do I receive 401?
- The request omitted
Authorization: Bearer YOUR_API_KEY, or a native format used the wrong auth header. - The key is disabled, deleted, or expired.
- The copied value contains whitespace or is only a masked display value.
Do not validate keys by an sk- prefix alone; send a minimal API request.
Why do I receive 403 or model not found?
- The key group or model allowlist does not include that model.
- The client used a built-in alias instead of the complete Nbility model ID.
- The model exists but does not support the selected protocol.
Check Models and Token Management.
Why do I receive 429?
429 can mean rate limiting, concurrency limiting, or insufficient quota. Read error.message / error.code, then check key quota and account balance. Use jittered exponential backoff for retryable rate limits; do not blindly retry exhausted quota.
Why is the request slow or the stream interrupted?
- Latency varies by model and route; long reasoning and large outputs take longer.
- A client, reverse proxy, or CDN has a short read timeout.
- A network proxy interferes with SSE or WebSocket connections.
Record the request ID and time, then inspect console logs. Never include a complete API key in tickets or screenshots.
Can a browser call the API directly?
It should not hold a long-lived API key. Shipping keys in browser code, mobile bundles, or public repositories exposes them. Keep the key on your own server and authenticate, rate-limit, and quota end users there.
How do I control cost?
- Create separate keys and quotas per application.
- Restrict models and set reasonable
max_tokens/max_output_tokens. - Review Pricing and console usage logs.
- Use bounded retries for
429, timeout, and network errors to avoid duplicate spend.
Where should troubleshooting start?
Use the minimal cURL request in API Quickstart to rule out client issues. If direct API access works, check the client's Base URL, protocol, model ID, and environment variables.