UNIFIED AI API GATEWAY
One API.
Multiple AI Models.
CiptaModel gives developers a single OpenAI-compatible interface for many AI models. One sk-cm-… key, one base URL — swap providers without rewriting your integration.
# one base URL, one key — any OpenAI client curl https://ciptamodel.com/v1/chat/completions \ -H "Authorization: Bearer sk-cm-live-••••••••" \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Hello"}]}' # → 200 OK · OpenAI-shaped response + usage # x-request-id: cm_req_… on every reply
HOW IT WORKS
From key to inference in four steps.
Your client only ever talks to CiptaModel. Everything behind the base URL — providers, failover, metering — is our problem.
Create an API key
One sk-cm-live-… key in the dashboard. Hashed at rest, shown once.
Use one base URL
Point any OpenAI-compatible client at the gateway base URL (/v1).
Select a model
Your code never names a provider — it uses stable public IDs.
CiptaModel routes it
Validation → router → provider adapter, with retry and fallback on transient failures.
MODEL REGISTRY
One API, a growing provider ecosystem.
Public model IDs stay stable even when upstream providers change. Only enabled models accept traffic. Open the registry →
| MODEL | PROVIDER | CONTEXT | STATUS | CAPABILITIES |
|---|---|---|---|---|
| DeepSeek V4.1 Flashdeepseek-v4.1-flash | deepseek | 1,000,000 | Available | chat coding streaming long-context tool-calling |
Configured providers serve live traffic; the rest stay honestly disabled until credentials are added server-side — the API shape never changes.
DEVELOPER EXPERIENCE
Change the base URL. Keep your integration.
CiptaModel speaks the OpenAI API — every OpenAI SDK works unmodified, including streaming, tool calls, and standard error shapes.
from openai import OpenAI
client = OpenAI(
base_url="https://ciptamodel.com/v1",
api_key="sk-cm-live-...",
)
r = client.chat.completions.create(
model="deepseek-v4.1-flash",
messages=[{"role": "user",
"content": "Hello"}],
)
print(r.choices[0].message.content)Works where you already work
Drop-in OpenAI-compatible clients — no plugins, no rewrites:
- Stable model IDsProviders change behind the scenes; your code stays the same.
- Streaming includedSSE chunks in OpenAI format, terminated by data: [DONE].
WHY CIPTAMODEL
Infrastructure, not another chatbot wrapper.
01ONE API
Unified OpenAI-compatible interface — /v1/models, /v1/chat/completions, SSE streaming, standard errors. One integration covers every provider.
02MODEL ROUTING
Registry-driven routing with per-model fallback. Transient upstream failures retry once, then fail over to a configured fallback — providers stay swappable without client changes.
03OBSERVABILITY
Every call records model, provider, input/output tokens, latency, status, and error code. Per-key usage, request logs, and X-Request-ID tracing from day one.
04SECURITY
API-key isolation per account, server-side provider credentials, hashed secrets, rate limits, and request validation before any upstream contact.
SECURITY
Serious defaults for API infrastructure.
Verified in the running codebase — not marketing claims. Provider credentials never leave the server; gateway errors never leak secrets, stacks, or paths.
- Hashed secretsAPI keys stored as SHA-256, passwords as bcrypt. Full key shown once, never recoverable.
- Server-side credentialsProvider API keys live in server config only — never in logs, errors, DB, or browser.
- Key isolationKeys are scoped per account; revoked keys fail closed with 401.
- Rate limits + quotasPer key, user, IP, and model — plus daily request/token quotas per plan.
- Request validation firstBodies validated before any rate-limit, quota, or upstream contact.
- SSRF-safe by constructionClients can never supply a fetch URL; adapters use fixed server-side endpoints.
- Secure sessions + CSRFHttpOnly, SameSite=Lax cookies (Secure in production) with per-session CSRF tokens.
- Traceable errorsOpenAI-shaped errors with request_id + X-Request-ID header on every gateway reply.
PRICING
Start free. Upgrade when usage grows.
Quotas are enforced per plan — no surprise bills. Platform pricing below; per-model metering activates with billing. Full details →
FREE
- 100 req/day
- 50,000 tokens/day
- 10 req/min
DEVELOPER
- 5,000 req/day
- 2,000,000 tokens/day
- 60 req/min
PRO
- 100,000 req/day
- 50,000,000 tokens/day
- 300 req/min
ENTERPRISE
- Unlimited requests
- Unlimited tokens
- No rate cap
FAQ
Honest answers.
Is the API live?
Yes — POST /v1/chat/completions serves real DeepSeek inference through the gateway with a Bearer key. Without server-side provider credentials it returns an honest 503 provider_not_connected instead of a fake reply.
Which clients are supported?
Anything speaking OpenAI-compatible HTTP: Cursor, Cline, Roo Code, Claude Code, Aider, Open WebUI, and the official OpenAI SDKs. Setup guides live in Docs.
Can I change providers later?
Yes — that is the point. Your client talks to CiptaModel; the router picks the provider. Model IDs stay stable.
One endpoint. Multiple models. Built for developers.
Free tier included · No credit card required · Live in minutes