From sign-up to your first LLM request in 5 minutes
This guide takes you from a blank screen to your first successful request to OpenAI / Claude / Gemini through RuAPI.
Base URL — in your client this is the only thing you swap (click the icon at the top-right of each box to copy):OpenAI-compatible · Cursor / Cline / Codex / OpenAI SDK — with /v1
https://www.ruapi.ai/v1
Anthropic · Claude Code / Anthropic SDK — without /v1
https://www.ruapi.ai
⚠️ The Anthropic endpoint takes no/v1 — the SDK appends /v1/messages itself, so an extra /v1 returns 404.
Once logged in, go to Wallet and pick an amount to top up.
Minimum is 10 USDT.
Send USDT only via the network you selected on the payment page
(TRC20 / BEP20 / Polygon). Sending via a different network will result in
permanent loss of funds.
After the on-chain transaction is confirmed (typically 1-5 minutes), your balance updates automatically.
Name: anything for your own reference, e.g. local-dev.
Expiry: leave “Never” unless you need otherwise.
Spend limit: you can cap the token at a USD amount.
Copy the resulting key — it starts with sk-.... Save it somewhere safe; if you need it again later, you can view the full key from the Tokens page in the console.
RuAPI supports two protocols, and the address differs between them — this is the #1 place people get wrong:
Protocol
What to put in base_url
Used by
OpenAI-compatible
https://www.ruapi.ai/v1 ← with /v1
Cursor, Cline, Codex, OpenAI SDK
Anthropic
https://www.ruapi.ai ← without /v1
Claude Code, Anthropic SDK
For Anthropic, do not append /v1 to the URL. The SDK adds /v1/messages
itself, and an extra /v1 results in a 404. See the
Claude Code and Codex guides.
Example for the OpenAI-compatible protocol — use your favourite SDK and just swap the base_url:
from openai import OpenAIclient = OpenAI( api_key="sk-YOUR_KEY", base_url="https://www.ruapi.ai/v1",)response = client.chat.completions.create( model="claude-opus-4-8", # exact model names are on the main site pricing page messages=[{"role": "user", "content": "Hello!"}],)print(response.choices[0].message.content)
To switch to another model, change only the model parameter:
model="claude-opus-4-8" # exact model names are on the main site pricing page
Change the model field to switch models. See the main site pricing page for available models.The full list of available models is on the Pricing page of the main site.