I stopped asking people to sign up for my API. I asked them to try it instead.
One sentence. One button. One page. That change moved every metric I care about.
Before: Sign up first
Landing page → "Get Started Free" → Email → Password →
Verify inbox → 6-digit code → API key → Dashboard
Six steps before the developer feels a single token of value.
68% of people who registered never sent an API request. Not because
the API was bad. Because the gap between "I have an account" and
"I just made it do something" was a chasm.
After: Try first
Landing page → "Try Playground →" → Pick a model → Type a prompt →
Response in 800ms → "Want your own key? One click →"
No email. No password. No verification. No dashboard you don't know
how to use. Just a text box and a Send button.
When they like what they see, GitHub OAuth gets them a key in five
seconds. When they register, an onboarding page hands them their key,
a curl command, and Python SDK code — all copyable — before they
ever see the dashboard.
What changed
| Metric | Before | After |
|---|---|---|
| Registration → first API call | 32% | 35% (and climbing) |
| Visitor → registration | 2.5% | 19% |
| Dormant users (0 tokens) | 68% | 65% |
| Bot verification requests | 2,600/day | 0 |
| Pages surfacing value | 3 | 6 |
The dormant user number is the one I'm watching most closely. 65% is
still too high. But it moved. Three percentage points after deploying
the onboarding page. The prompt library was the next push — 24
ready-to-use prompts organized by task, each one showing which model
to use and pre-filling the playground in one click.
What I built to support this
The playground — 15 models, 10 free requests/day, no login. If
you use it and walk away, that's fine. If you use it and want more,
registration is one click. Not a form. Not a funnel. An invitation.
The onboarding page — after login, you see your API key, a curl
command you can paste immediately, and Python SDK code. Copy, paste,
run. 30 seconds to first response. No docs. No guesswork.
The prompt library — 24 prompts. Six categories. "Find bugs in this
code → Kimi K3." "Translate to Chinese → Qwen Max." "Write unit tests
→ DeepSeek." Every card has a "Try in Playground" button that fills
the model, system prompt, and message in one click.
The dashboard — not just numbers. A usage bar that escalates.
Polite below 50%. Orange at 80%. Red and flashing at 90% with a
full-width upgrade button. You notice it exactly when you need to act.
The anti-bot layer — 5 lines of in-memory rate limiting took
verification endpoint abuse from 2,600 requests/day to zero. Not a
feature users see, but one they benefit from every time the server
responds quickly.
The model powering it
One import openai. One endpoint. 15 Chinese AI models.
import openai
client = openai.OpenAI(
api_key="mb-xxx",
base_url="https://aibridge-api.com/v1"
)
client.chat.completions.create(model="kimi-k3", messages=messages)
client.chat.completions.create(model="deepseek-chat", messages=messages)
client.chat.completions.create(model="qwen-max", messages=messages)
K3: 1M context, always reasoning. DeepSeek: $0.27/M, fast and cheap.
Qwen: multilingual. GLM-4 Plus: complex Chinese reasoning. Same SDK.
Same response format. Change one string to switch models.
The principle
Every page in my product answers exactly one question:
Landing → "What is this?"
Playground → "Can I try it?"
Onboarding → "How do I start?"
Dashboard → "How much have I used?"
Prompts → "What should I ask?"
Pricing → "What does it cost?"
If a page answers zero questions, it doesn't exist. If it answers two,
I split it. Users don't read — they scan for the one thing they need.
Free tier: 500K tokens/month. No credit card.
→ aibridge-api.com/playground.html (try all 15 models, no signup)
→ aibridge-api.com/prompts.html (24 prompts, no signup needed)




Top comments (0)