Unified gateway
One CXOPIN API key for every connected model.
Customers send Authorization: Bearer with a CXOPIN API key. The gateway resolves the key, project, permission, and requested model. Provider credentials never appear in the response.
Operational today
- GET /v1/models lists verified catalog rows.
- POST /v1/chat/completions authenticates the key and resolves an exact model. Unconnected models return provider_not_connected. No completion text is generated.
- GET /v1/api-key reports the key prefix, project, and permissions.
Prepared, not mounted
- POST /v1/responses and POST /v1/embeddings
- POST /v1/images/generations
- POST /v1/audio/speech and POST /v1/audio/transcriptions
- POST /v1/videos and GET /v1/videos/{job_id}
Production example
curl https://api.cxopin.dev/v1/chat/completions \
-H "Authorization: Bearer $CXOPIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"<model-id-from-catalog>","messages":[{"role":"user","content":"Hello"}]}'Python and JavaScript use the same CXOPIN_API_KEY variable against https://api.cxopin.dev. The model id stays the one the customer requested. CXOPIN does not silently substitute another model. For Mac monorepo ports and loopback health checks, see Local development.