Documentation

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

  1. 01
    Sign up with Google.
  2. 02
    Top up your wallet by UPI or netbanking through PayU — minimum ₹100.
  3. 03
    Create an API key in the console. It is shown once, at creation — copy it and store it somewhere safe.
  4. 04
    Make your first request.

Authentication

Every request needs your API key in the Authorization header:

request header
1  Authorization: Bearer sk-live-your-key-here
Keys are never shown again after creation — they are stored hashed, so there is no plaintext for the console to show you. If you lose one, revoke it and create a new one. There is no recovery.

Endpoints

Three request formats are supported, matching the SDK you already use:

FormatBase URLUse when
OpenAI-compatiblehttps://apiverse.in/v1Using the OpenAI SDK, or calling GPT models.
Anthropic nativehttps://apiverse.in/anthropicUsing Claude models — required for prompt caching to work.
Gemini nativehttps://apiverse.in/geminiUsing 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:

request bodyjson
1  {
2    "model": "claude-sonnet-5",
3    "messages": [{"role": "user", "content": "Hello"}]
4  }

Example request

curl · native Anthropicbash
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

CodeMeaning
400The 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.
401Missing, invalid or revoked API key.
402Wallet balance is ₹0. Top up to continue — requests are blocked rather than served on credit.
403Account suspended.
429Rate 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.
502The provider could not be reached.
503Error 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 / 5xxAny 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.