Claude on an OpenAI-compatible endpoint. First call in under ‹N› min.

Point the OpenAI SDK you already use at NexoAI, change the base URL, keep your code. One key reaches Claude and every other frontier model. No waitlist, no spend tier to climb before the limits open up.

POST /v1/chat/completions
curl https://api.nexoai.dev/v1/chat/completions \
  -H "Authorization: Bearer $NEXOAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Say hello in one line."}]
  }'
Response 200 OK
{
  "id": "chatcmpl-...",
  "model": "claude-sonnet-5",
  "choices": [{"message": {"role": "assistant",
    "content": "Hello — you're talking to Claude through NexoAI."}}],
  "usage": {"prompt_tokens": 14, "completion_tokens": 11, "total_tokens": 25}
}

Same chat/completions shape you already send to OpenAI. Only the base URL and key changed.

  • One key → Claude, plus every model NexoAI routes. ‹N›
  • OpenAI-compatible: base_url swap, no SDK rewrite.
  • $5 in free credits to start, no card.

The honest mechanism

Why a relay, and not just go direct?

Fair question, and the honest answer starts against us: if raw token price is your only axis, going direct to the provider is the cheapest sticker price, and you should do that. A relay is another company between you and the model — another thing that can bill you, break, or see your traffic. So it only earns a place if it removes more pain than it adds. Here's the pain it removes. Decide for yourself whether that trade is worth it for how you build.

  1. One OpenAI-compatible key for many models

    What
    point the OpenAI SDK you already use at https://api.nexoai.dev/v1, change the key, and the same chat/completions calls reach Claude and every other model we route. Switching models is one string in the request, not a new integration.
    Why it matters
    going direct means a separate SDK, key, and bill per provider, and glue code to switch between them. One key collapses that to one integration.
    Honest limit
    if you only ever call one model from one provider, this buys you little — go direct. The relay earns its place the moment you use more than one.
  2. No spend-tier ladder to climb for model access

    What
    you get access to the models we route from your first call, on the free credits, with no monthly-spend qualification.
    Why it matters
    going direct, new-model access and higher rate limits are gated behind spend tiers you have to climb — the P1 audience said it plainly:
    "Going direct to the model providers does not work... you get rate limited and are last in the list for new model access"
    and
    "[it] doesn't make you jump through some tiering system."
    A relay pools that access so you're not last in line.
    Honest limit
    ‹N› — NEEDS NUMBER FROM USER: NexoAI's own rate limits / any tiering on the relay side. State them here plainly — if the relay has its own ceilings, this section must name them or it reads as the exact evasion devs distrust.
  3. Automatic fallback when an upstream errors

    What
    when a provider returns an overload or error, the request is retried against another route instead of failing in your app.
    Why it matters
    going direct, an upstream 529/5xx is your outage to catch and handle. A relay can absorb the retry so a transient provider blip doesn't become your incident.
    Honest limit
    ‹N› — NEEDS CONFIRMATION FROM USER: does NexoAI actually do automatic fallback/routing? If not, DELETE this entire reason — it is the single most tempting claim to overstate and the fastest way to lose this audience. Same flag as P1. If fallback is real, state exactly what it falls back to and what the latency cost is; if it's just retry-same-provider, call it that, not "fallback."
  4. One balance, one bill

    What
    usage across every model runs down one prepaid balance you watch decrement in real time, on one invoice, with no card required to start ($5 free credits).
    Why it matters
    going direct with multiple providers means multiple bills, multiple billing dashboards, and separate spend to reconcile. One balance is one number to watch and one place a surprise can't hide.
    Honest limit
    this is convenience, not savings. The relay's fee is where that convenience is priced — ‹N› — NEEDS NUMBER FROM USER: NexoAI's exact fee/markup model — same figure the A2 pricing page needs; the "why a relay" case is incomplete and slightly evasive without it

Go direct if price is your only axis and you're happy managing tiers, keys, and bills yourself. Use NexoAI if one key across many models, no tier ladder, [fallback — pending confirmation], and one balance are worth the fee. That's the whole trade. No lock-in: it's an OpenAI-compatible endpoint, so switching back is changing the base URL back.

Pricing

Per-model rates: NexoAI vs OpenRouter vs the raw provider

Pay per token, per model. Here is our rate next to what you'd pay OpenRouter and what you'd pay going direct to Anthropic. Prices are per million tokens (MTok), input / output. Provider list rates are published; ours sit beside them so you can check the delta yourself.

Going direct is the cheapest sticker price. It also rate-limits you by monthly spend, gates new models behind tiers, and hands you a separate key and a separate bill for every provider. NexoAI is a relay: one OpenAI-compatible key reaches Claude and the other models we route, with automatic fallback when an upstream provider errors, and one balance you watch decrement in real time. That convenience is not free and we won't pretend it is — ‹N› — NEEDS NUMBER FROM USER: NexoAI's exact fee/markup model — flat % on credits like OpenRouter's 5.5% Stripe / 5% crypto, per-token margin, or per-model rate If your only axis is raw token price and you're fine managing tiers and keys yourself, go direct. If one key, no tier ladder, and fallback across providers is worth the delta below, that's what you're buying.

Raw-provider column uses Anthropic's official published list rates (per MTok, input / output), captured 2026-07-24 from docs.anthropic.com/en/docs/about-claude/pricing. NexoAI and OpenRouter effective columns depend on NexoAI's fee model — fill once supplied. OpenRouter reference: it passes provider inference rates through with no inference markup; its fee is on credit purchase (5.5% Stripe / 5% crypto), per openrouter.ai/docs/faq (2026-07-24).

Per-model rates, per million tokens (input / output).
Model Raw Anthropic (in / out) OpenRouter (effective) NexoAI (effective) You save vs raw
Claude Opus 5 $5 / $25 ‹N› ‹N› ‹N›
Claude Sonnet 5 $3 / $15 (intro $2 / $10 through 2026-08-31) ‹N› ‹N› ‹N›
Claude Haiku 4.5 $1 / $5 ‹N› ‹N› ‹N›

Caching & batch

Prompt caching: cache read ~0.1x input, 5-min cache write 1.25x, 1-hr write 2x. Batch API: 50% off input and output. ‹N› — NEEDS NUMBER FROM USER: whether NexoAI passes caching + batch discounts through — devs specifically cite OpenRouter lacking prompt caching as the reason it 'becomes even more expensive in the long run.'

Which is right for me?

  • Prototyping or bursty usagestart on free credits, no card. You watch the balance decrement in real time; no monthly tier to qualify for.
  • One app, one modelthe per-model rate above is your whole bill. No minimums.
  • Many models or you switch oftenone key covers all of them with fallback; this is where the relay earns the delta.
  • Team sharing one key todayper-key spend limits and usage visibility. ‹N›

Quickstart

Make your first Claude call

This gets you from a new account to a live Claude response. If a step doesn't produce what's shown, that's a bug in these docs — tell us.

  1. Get your API key

    Create an account and copy your key from the dashboard. No card required for the free tier. ‹N›

    shell
    export NEXOAI_API_KEY="sk-nexo-..."   # paste your key
  2. Send a request with curl

    The endpoint speaks the OpenAI chat/completions format.

    shell
    curl https://api.nexoai.dev/v1/chat/completions \
      -H "Authorization: Bearer $NEXOAI_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "claude-sonnet-5",
        "messages": [{"role": "user", "content": "Reply with the word: online"}]
      }'
  3. Confirm the response

    You should see a JSON body like this. The content is Claude's reply; usage is what this call cost you in tokens.

    Response 200 OK
    {
      "id": "chatcmpl-...",
      "object": "chat.completion",
      "model": "claude-sonnet-5",
      "choices": [{
        "index": 0,
        "message": {"role": "assistant", "content": "online"},
        "finish_reason": "stop"
      }],
      "usage": {"prompt_tokens": 12, "completion_tokens": 1, "total_tokens": 13}
    }
  4. Use it from the OpenAI SDK you already have

    No new library. Point the OpenAI client at NexoAI's base URL.

    python
    from openai import OpenAI
    
    client = OpenAI(
        api_key="YOUR_NEXOAI_KEY",          # or os.environ["NEXOAI_API_KEY"]
        base_url="https://api.nexoai.dev/v1",
    )
    
    resp = client.chat.completions.create(
        model="claude-sonnet-5",
        messages=[{"role": "user", "content": "Reply with the word: online"}],
    )
    print(resp.choices[0].message.content)   # -> online
  5. Switch models with one string

    Change model to route to a different model on the same key. See the pricing page for per-model rates. ‹N›

Common errors

401
your key is missing or wrong. Check the Authorization: Bearer header matches the key in your dashboard.
404 model not found
the model string isn't one NexoAI routes. See the model list. ‹N›
429
you hit a rate or spend limit. ‹N›

Free tier

Free credits to experiment. No card.

Test Claude and the other models we route before you spend anything. Free credits are issued at signup, no card on file, and you watch the balance decrement in real time so nothing surprises you at the end of the month.

Here's exactly what "free" means, so there are no asterisks later:

  • You get $5 in free credits at signup, no card required.
  • It runs against ‹N› — NEEDS NUMBER FROM USER: which models the free tier can call — all of them, or a subset
  • Rate limit on the free tier: ‹N› — NEEDS NUMBER FROM USER: free-tier RPM / token throttle Enough to build and test a real integration, not to run production.
  • When credits run out, calls stop until you add a payment method. We don't auto-charge a card you never entered.
  • On data: ‹N› — NEEDS NUMBER FROM USER: free-tier data/retention/training policy — devs explicitly warn each other that "anything free comes with the caveat that they can/will look at your data for training," so state the real policy plainly or this line reads as evasive.

Trust surface

NexoAI Status

Live status of the API and each upstream we route. All times UTC. ‹N› — This page is hosted off our main infrastructure, so it stays up when the API doesn't. NEEDS CONFIRMATION FROM USER: is the status page actually hosted off-platform / on a separate provider? If not, cut the second sentence — it must be true.

All systems operational.

API and all routed upstreams responding normally. Last checked ‹timestamp›, checks run every ‹N›.

  • NexoAI API api.nexoai.dev/v1 Operational
  • Dashboard & key management Operational
  • Claude upstream Operational
  • ‹N› — remaining upstreams, one component each
Uptime, last 90 days
‹N›
p50 / p99 API overhead
‹N›
Illustrative format sample — not a real incident
14:02 UTC — Investigating — Claude (upstream)
What:      Elevated 529 (overloaded) responses from the Claude upstream.
Impact:    Claude calls returning errors or timing out. Other routed models and
           the dashboard are unaffected.
Started:   13:58 UTC.
Next update: by 14:20 UTC.

14:19 UTC — Identified — Claude (upstream)
What:      Confirmed upstream capacity issue at the provider, not on our side.
Impact:    Same as above.
Started:   13:58 UTC.
Next update: by 14:45 UTC.

14:38 UTC — Monitoring — Claude (upstream)
What:      Upstream error rate back to normal. Watching to confirm it holds.
Impact:    Claude calls succeeding again. No action needed on your end.
Started:   13:58 UTC.
Next update: by 15:10 UTC, or a Resolved note if stable.

15:09 UTC — Resolved — Claude (upstream)
What:      Upstream stable for 30 minutes. Incident closed.
Impact:    None ongoing. Total window: 13:58–14:35 UTC (~37 min) of elevated
           Claude errors.
Started:   13:58 UTC.

Claude on an OpenAI-compatible endpoint.