14 KiB
Executable File
14 KiB
Executable File
API Endpoints Reference
This reference lists the HTTP surfaces implemented in the gateway as of the
current code review. It is derived from apps/gateway/main.ts and the
registered route files under apps/gateway/routes/.
Conventions
- Public inference routes are served from the same origin as the control UI.
/api/*routes are operator surfaces. IfFROSTY_ADMIN_TOKENis set, they requireAuthorization: Bearer <token>.- Errors use the canonical envelope
{ "error": { "message", "type", "param", "code" } }through the shared error helpers. - Compatibility prefixes are rewritten before auth and governance. Verified
aggregator prefixes include
/openai,/anthropic,/litellm,/langchain, and/pydanticai.
Health and metadata
| Method | Path | Purpose | Source |
|---|---|---|---|
GET |
/healthz |
Liveness and version check | apps/gateway/main.ts |
GET |
/api/version |
Gateway version and Deno runtime version | apps/gateway/main.ts |
GET |
/metrics |
Prometheus metrics exposition | apps/gateway/routes/governance.ts |
Core inference
| Method | Path | Purpose | Source |
|---|---|---|---|
GET |
/v1/models |
List configured model catalog | apps/gateway/routes/inference.ts |
POST |
/v1/chat/completions |
Canonical chat-completion surface | apps/gateway/routes/inference.ts |
POST |
/v1/completions |
Legacy text-completion surface | apps/gateway/routes/inference.ts |
POST |
/v1/count_tokens |
Token counting on the canonical surface | apps/gateway/routes/inference.ts |
POST |
/v1/responses |
Agentic response loop with tool support | apps/gateway/routes/inference.ts |
POST |
/v1/messages/count_tokens |
Anthropic-style token counting | apps/gateway/routes/compat.ts |
POST |
/v1/messages |
Anthropic Messages-compatible ingress | apps/gateway/routes/compat.ts |
Advanced APIs
| Method | Path | Purpose | Source |
|---|---|---|---|
POST |
/v1/embeddings |
Embedding generation | apps/gateway/routes/advanced.ts |
POST |
/v1/images/generations |
Image generation | apps/gateway/routes/advanced.ts |
POST |
/v1/audio/speech |
Text-to-speech | apps/gateway/routes/advanced.ts |
POST |
/v1/audio/transcriptions |
Speech-to-text / transcription | apps/gateway/routes/advanced.ts |
POST |
/v1/files |
Create or upload a provider-backed file | apps/gateway/routes/advanced.ts |
GET |
/v1/files |
List provider-backed files | apps/gateway/routes/advanced.ts |
GET |
/v1/files/:id |
Retrieve file metadata | apps/gateway/routes/advanced.ts |
GET |
/v1/files/:id/content |
Retrieve file content | apps/gateway/routes/advanced.ts |
DELETE |
/v1/files/:id |
Delete a provider-backed file | apps/gateway/routes/advanced.ts |
POST |
/v1/batches |
Create a provider-backed batch job | apps/gateway/routes/advanced.ts |
GET |
/v1/batches |
List batch jobs | apps/gateway/routes/advanced.ts |
GET |
/v1/batches/:id |
Inspect one batch job | apps/gateway/routes/advanced.ts |
GET |
/v1/batches/:id/results |
Fetch batch results | apps/gateway/routes/advanced.ts |
POST |
/v1/batches/:id/cancel |
Cancel a batch job | apps/gateway/routes/advanced.ts |
Compatibility and ingress surfaces
Native or vendor-shaped ingress
| Method | Path | Purpose | Notes |
|---|---|---|---|
POST |
/genai/v1beta/models/:modelAction |
Google GenAI-compatible ingress | apps/gateway/routes/compat_families.ts |
POST |
/cohere/v2/chat |
Cohere v2-compatible ingress | apps/gateway/routes/compat_families.ts |
POST |
/openrouter/v1/chat/completions |
OpenRouter-shaped chat ingress | apps/gateway/routes/openrouter_ingress.ts |
POST |
/openrouter/v1/embeddings |
OpenRouter-shaped embeddings ingress | apps/gateway/routes/openrouter_ingress.ts |
GET |
/openrouter/v1/models |
OpenRouter-shaped model listing | apps/gateway/routes/openrouter_ingress.ts |
POST |
/openai/deployments/:deployment/chat/completions |
Azure deployment-scoped chat ingress | apps/gateway/routes/azure_ingress.ts |
POST |
/openai/deployments/:deployment/completions |
Azure deployment-scoped legacy completions | apps/gateway/routes/azure_ingress.ts |
POST |
/openai/deployments/:deployment/embeddings |
Azure deployment-scoped embeddings | apps/gateway/routes/azure_ingress.ts |
Rewritten alias families
| Prefix or shape | Effective target | Notes |
|---|---|---|
/openai/* |
Canonical /v1/* surface |
/openai/deployments/* is excluded and handled by Azure ingress |
/anthropic/* |
Canonical /v1/* surface with dialect-aware translation |
apps/gateway/routes/compat_families.ts |
/litellm/* |
Aggregator alias family | Rewrites before auth and governance |
/langchain/* |
Aggregator alias family | Rewrites before auth and governance |
/pydanticai/* |
Aggregator alias family | Rewrites before auth and governance |
Implemented 501 or intentionally deferred compatibility endpoints
| Method | Path | Behavior | Source |
|---|---|---|---|
GET |
/openrouter/v1/generation |
Returns 501; Frosty keeps its own cost accounting | apps/gateway/routes/openrouter_ingress.ts |
GET |
/openrouter/v1/key |
Returns 501; Frosty does not proxy OpenRouter key introspection | apps/gateway/routes/openrouter_ingress.ts |
POST |
`/:agg(litellm | langchain | pydanticai)/bedrock/:rest*` |
POST |
`/:agg(litellm | langchain | pydanticai)/model/:rest*` |
Operator API
Providers and config
| Method | Path | Purpose |
|---|---|---|
GET |
/api/providers |
List configured providers in browser-safe form |
POST |
/api/providers |
Create a provider account |
PUT |
/api/providers/:id |
Update a provider account |
DELETE |
/api/providers/:id |
Delete a provider account |
POST |
/api/providers/:id/refresh-models |
Refresh provider model list |
GET |
/api/providers/:id/available-models |
List provider models live (read-only) |
GET |
/api/providers/health |
Report provider health |
GET |
/api/config |
Fetch gateway config view |
PUT |
/api/config |
Persist gateway config updates |
GET |
/api/proxy-config |
Read gateway-wide proxy config |
PUT |
/api/proxy-config |
Upsert gateway-wide proxy config |
DELETE |
/api/proxy-config |
Remove gateway-wide proxy config |
POST |
/api/config/reload |
Reload in-memory config from durable state |
GET |
/api/config/export |
Export config payload |
POST |
/api/config/import |
Import config payload |
Governance and pricing
| Method | Path | Purpose |
|---|---|---|
GET |
/api/virtual-keys |
List virtual keys |
POST |
/api/virtual-keys |
Create a virtual key |
PUT |
/api/virtual-keys/:id |
Update a virtual key |
DELETE |
/api/virtual-keys/:id |
Delete a virtual key |
GET |
/api/teams |
List teams |
POST |
/api/teams |
Create a team |
PUT |
/api/teams/:id |
Update a team |
DELETE |
/api/teams/:id |
Delete a team |
GET |
/api/customers |
List customers |
POST |
/api/customers |
Create a customer |
PUT |
/api/customers/:id |
Update a customer |
DELETE |
/api/customers/:id |
Delete a customer |
GET |
/api/pricing |
Read pricing catalog |
PUT |
/api/pricing |
Persist pricing overrides |
POST |
/api/pricing/force-sync |
Trigger a pricing sync |
Logs, analytics, runtime, and catalog
| Method | Path | Purpose |
|---|---|---|
GET |
/api/logs |
Read live in-memory request log ring |
GET |
/api/logs/stored |
Read durable stored logs |
GET |
/api/logs/stats |
Aggregate log statistics |
GET |
/api/logs/dropped |
Report ring-buffer evictions |
GET |
/api/logs/filterdata |
Return filter metadata for the logs UI |
POST |
/api/logs/recalculate-cost |
Recompute stored log costs |
DELETE |
/api/logs/stored |
Clear stored logs |
GET |
/api/logs/stream |
Stream live log entries |
GET |
/api/analytics |
Return analytics rollups |
GET |
/api/runtime |
Return runtime diagnostics and topology |
GET |
/api/catalog |
Return the model catalog and provider capabilities |
GET |
/api/plugins |
List plugin metadata |
Settings, cache, MCP, and Code Mode
| Method | Path | Purpose |
|---|---|---|
GET |
/api/settings |
Read effective settings values and provenance |
PUT |
/api/settings |
Persist partial settings overrides |
GET |
/api/mcp/clients |
List MCP clients |
POST |
/api/mcp/clients |
Create an MCP client |
PUT |
/api/mcp/clients/:id |
Update an MCP client |
DELETE |
/api/mcp/clients/:id |
Delete an MCP client |
POST |
/api/mcp/clients/:id/sync |
Sync one MCP client |
POST |
/api/mcp/sync |
Sync all MCP clients |
GET |
/api/mcp/tools |
List aggregated MCP tools |
GET |
/api/mcp/health |
Return MCP health state |
GET |
/api/mcp/codemode/vfs |
Return Code Mode VFS metadata |
POST |
/api/mcp/codemode/run |
Execute Code Mode run path |
DELETE |
/api/cache |
Clear cache |
DELETE |
/api/cache/by-key |
Clear cache by request shape |
DELETE |
/api/cache/clear/:requestId |
Clear cache by request id |
GET |
/mcp |
MCP server discovery surface |
POST |
/mcp |
MCP server JSON-RPC surface |
Notes for consumers
- The control UI talks only to same-origin routes and stores the admin token in browser session storage.
- Several provider-specific route families accept vendor-shaped inputs but still resolve against configured Frosty provider accounts rather than blindly proxying upstream credentials.
- Settings currently expose provenance and persistence behavior even where some fields are not yet wired into runtime enforcement. That is an implementation fact, not a documentation omission.