Migrate from Helicone
Helicone was acquired by Mintlify in March 2026. The platform is now in maintenance mode — security patches, new model support, and bug fixes, but no new governance features. If you need an actively developed gateway with PII scanning, HITL approvals, and managed runners, this guide covers the move.
Migration time: 10–20 minutes. Helicone and Curate-Me use the same “swap the base URL” pattern, so the change is almost identical.
Environment variable mapping
| Helicone env var | Curate-Me equivalent | Notes |
|---|---|---|
HELICONE_API_KEY | CM_API_KEY (cm_sk_...) | Same role; different format |
Helicone base URL (https://oai.helicone.ai/v1) | https://api.curate-me.ai/v1/openai | Per-provider path |
| Helicone-Auth header | X-CM-API-Key header | Same position; different header name |
Helicone-User-Id | X-CM-User-Id | Optional per-request user attribution |
Helicone-Property-* headers | X-CM-Tag-* custom tags | Roadmap; not available yet |
Helicone-Cache-Enabled | — | Response caching is on the CM roadmap |
Before / after code diff
Python
from openai import OpenAI
client = OpenAI(
- base_url="https://oai.helicone.ai/v1",
- default_headers={
- "Helicone-Auth": f"Bearer {HELICONE_API_KEY}",
- },
+ base_url="https://api.curate-me.ai/v1/openai",
+ api_key="cm_sk_your_gateway_key",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)For Anthropic (Helicone’s https://anthropic.helicone.ai → CM):
import anthropic
client = anthropic.Anthropic(
- base_url="https://anthropic.helicone.ai",
- default_headers={
- "Helicone-Auth": f"Bearer {HELICONE_API_KEY}",
- },
+ base_url="https://api.curate-me.ai/v1/anthropic",
+ api_key="cm_sk_your_gateway_key",
)Step-by-step migration
Create a Curate-Me account and get your gateway key
Sign up at dashboard.curate-me.ai/signup .
Go to Settings → API Keys → New Key. Copy the cm_sk_... value.
Store your provider secrets
Curate-Me injects your upstream API keys automatically once they’re stored:
# OpenAI
curl -X POST https://api.curate-me.ai/v1/admin/secrets \
-H "X-CM-API-Key: cm_sk_your_gateway_key" \
-H "Content-Type: application/json" \
-d '{"provider": "openai", "secret": "sk-your-openai-key"}'
# Anthropic
curl -X POST https://api.curate-me.ai/v1/admin/secrets \
-H "X-CM-API-Key: cm_sk_your_gateway_key" \
-H "Content-Type: application/json" \
-d '{"provider": "anthropic", "secret": "sk-ant-your-key"}'Set a daily budget
curl -X POST https://api.curate-me.ai/v1/admin/budgets \
-H "X-CM-API-Key: cm_sk_your_gateway_key" \
-H "Content-Type: application/json" \
-d '{"daily_limit_usd": 30.0, "scope": "org"}'Update your environment variables
unset HELICONE_API_KEY
export CM_API_KEY=cm_sk_your_gateway_key
# OpenAI SDK
export OPENAI_BASE_URL=https://api.curate-me.ai/v1/openai
export OPENAI_API_KEY=cm_sk_your_gateway_key
# Anthropic SDK
export ANTHROPIC_BASE_URL=https://api.curate-me.ai/v1/anthropicVerify your first request
curl https://api.curate-me.ai/v1/openai/chat/completions \
-H "X-CM-API-Key: $CM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Migration test"}]}'Confirm the trace appears in Dashboard → Traces within a few seconds.
Helicone feature equivalents
| Helicone feature | Curate-Me equivalent |
|---|---|
| Request logging | Traces dashboard (full request/response with cost) |
User tracking (Helicone-User-Id) | X-CM-User-Id header (partial — dashboard grouping roadmap) |
Custom properties (Helicone-Property-*) | Tag system (roadmap) |
| Prompt management | Not available |
| Experiments / A/B testing | Not available |
| Rate limiting | IETF-standard RateLimit-* headers per key/org |
| Moderation / safety | PII scanning + content safety built-in (no add-on needed) |
| Semantic caching | Roadmap |
| Cost tracking | Per-request, per-key, per-org hierarchies |
| Webhook on request | Roadmap |
| Datasets | Not available |
Helicone data export before migration
If you want to preserve historical data from Helicone, export it before cancelling:
- Helicone Dashboard → Requests → Export
- Choose CSV or JSON format
- Store in your own data warehouse (Helicone exports in OpenAI request format)
Curate-Me’s traces API does not currently import external data — this is archive-only.
Rollback
export HELICONE_API_KEY=your-old-key
export OPENAI_BASE_URL=https://oai.helicone.ai/v1
# Restore default headers in code:
# "Helicone-Auth": f"Bearer {HELICONE_API_KEY}"
unset CM_API_KEY