Verify the passthrough in 30 seconds. No SDK. No account.
You should not have to trust a new in-path proxy on faith. So before you wire anything or hand us a single credential, confirm two things with plain curl: the endpoint is live and OpenAI-shaped, and switching to it is a one-line base_url change you can revert instantly.
Confirm the endpoint, give us nothing.
This call is an unauthenticated GET to the public API root. It hands us no key and no data. You are checking the host is up and speaks JSON, the way api.openai.com/ does.
curl https://api.recovea.ai/
# HTTP 200, a small JSON welcome.
# No Authorization header. We learn nothing about you.Now look at the only thing that changes to route through Recovea. You keep your provider's own SDK and your own keys. You change the host. That is the entire integration.
- base_url = "https://api.openai.com/v1"
+ base_url = "https://api.recovea.ai/v1"
# Revert is the same one line, any time.Route one request. Diff the body against your provider.
To send live traffic, Recovea authenticates you with a free rcv_ key (sign in, no card). You bring your own provider key, which we store encrypted and pass through. The response body is byte-for-byte your provider's. We add an x-request-id and an x-recovea-trace-id so every call is auditable back to your ledger.
curl https://api.recovea.ai/v1/chat/completions \
-H "Authorization: Bearer $RECOVEA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "ping"}]
}'
# The response is identical to your provider's. We never alter the body.
# Compare it to the same call against api.openai.com if you want proof.A request with no rcv_ key returns 401. Auth is the deliberate fail-closed exception: we refuse rather than serve an unauthenticated call. That is the gateway working, not breaking.
Free is a spend scan plus an observe-only dashboard. A routed call on a plan that is not in-path returns a labeled 403 plan_not_in_path that names the upgrade. Live routing starts on a paid plan.
Anthropic runs natively on /anthropic with the Anthropic SDK. The OpenRouter long tail runs on /v1 under vendor/model ids. See the full docs.
Your keys pass through. Your prompts are never stored.
We never store prompt or response bodies, and we never train on your traffic. The full body-free field list, lifted from the code that writes it, is published so you can check it rather than believe it.
Confirmed it is just a base_url? Good. Now make it yours.
Start free with a scan and an observe-only dashboard. No card. Point a base_url at us when you are ready, and point it back in one line if you are not.