One key, one base URL, your existing SDK.
Everything needed to make the first request, and to understand what it cost. API VERSE speaks three request formats, so the client you already have keeps working — you change the base URL and the key, and nothing else.
Quick start
- 01Sign up with Google.
- 02Top up your wallet by UPI or netbanking through PayU — minimum ₹100.
- 03Create an API key in the console. It is shown once, at creation — copy it and store it somewhere safe.
- 04Make your first request.
Authentication
Every request needs your API key in the Authorization header:
1 Authorization: Bearer sk-live-your-key-hereEndpoints
Three request formats are supported, matching the SDK you already use:
| Format | Base URL | Use when |
|---|---|---|
| OpenAI-compatible | https://apiverse.in/v1 | Using the OpenAI SDK, or calling GPT models. |
| Anthropic native | https://apiverse.in/anthropic | Using Claude models — required for prompt caching to work. |
| Gemini native | https://apiverse.in/gemini | Using Gemini models — required for native features to work. |
Switching models doesn’t mean switching endpoints. Change the model field inside your request — same URL, same key, every time:
1 {
2 "model": "claude-sonnet-5",
3 "messages": [{"role": "user", "content": "Hello"}]
4 }Example request
1 curl https://apiverse.in/anthropic/v1/messages \
2 -H "Authorization: Bearer sk-live-your-key-here" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "model": "claude-sonnet-5",
6 "max_tokens": 1024,
7 "messages": [{"role": "user", "content": "Hello"}]
8 }'Pricing
Every model’s real, current price is on the Models page. Prices there are shown in USD, matching the provider’s own published rate — check any row against Anthropic’s, OpenAI’s or Google’s pricing page and it will match.
What you are actually charged is that rate converted to rupees at ₹101.24283 to the dollar, plus a 9% margin. That conversion rate is not the mid-market rate: it is the mid-market rate with the 5.1% fee our card charges to buy dollars already included, passed through at cost. The two compound, so the all-in cost over mid-market is 14.56%. Only the token counts the provider returns are ever priced — never an estimate of what you sent — and every call is itemised in ₹ on your Cost dashboard.
Rate limits
60 requests per minute, per API key, counted in fixed 60-second windows. A request over the limit is refused with a 429 carrying a retry-after header, and is not billed. If you need a higher limit for a specific use case, contact support.
Requests also have a concurrency limit: at most five in progress per account, across all of its keys. A streamed request counts until its stream ends. A sixth is refused with a 429 of type pending_limit_error, is not billed, and can be retried as soon as one finishes.
Image and video generation have a separate concurrency limit: at most three generations in progress per account, across all of its keys. An image counts until its response returns; a video counts from submission until it is completed or has failed — poll GET /v1/videos/{id} to collect it. A fourth is refused with a 429 of type pending_limit_error, is not billed, and can be retried as soon as one finishes.
Errors
| Code | Meaning |
|---|---|
| 400 | The request body is not valid JSON, has no model field, or asks /v1/responses to recall an earlier turn. Rejected before it reaches the provider. |
| 401 | Missing, invalid or revoked API key. |
| 402 | Wallet balance is ₹0. Top up to continue — requests are blocked rather than served on credit. |
| 403 | Account suspended. |
| 429 | Rate limit exceeded — the response carries retry-after and x-ratelimit-limit headers. Or, with error type pending_limit_error, the account already has five requests, or three image or video generations, in progress. |
| 502 | The provider could not be reached. |
| 503 | Error type service_unavailable: the service is temporarily unavailable. You have not been charged for the request. Retry after a few minutes — the response carries a retry-after header. |
| 4xx / 5xx | Any other error from the model provider is passed through with the provider’s own status code and body, unchanged — a 400 for a malformed prompt, for example. |
You are never charged for a failed request.
Whatever the status code, a request that returned no usage is recorded and billed ₹0 — a charge is computed from the token counts the provider reports, and a failure reports none.
Streaming
Supported on all three endpoints. Responses stream token-by-token over server-sent events, in the same format as the underlying provider’s own streaming API — so an SDK that already parses their stream parses this one.
Usage is billed from the totals the provider sends in the final events of the stream. A stream you disconnect from early is still billed for what the provider generated, because that is what they charge us for.
Need help?
Contact us at krishchoudhary300@gmail.com, or read the FAQ on the homepage.
