Skip to Content
We are live but in Staging 🎉
API ReferenceModel and Secret Services

Model and Secret Services

Last validated: 2026-05-20

ModelService

ModelService exposes public-model inference APIs with OpenAI/Cohere-style patterns.

RPC Surface

RPCHTTP annotationPurpose
ChatCompletionPOST /v1/chat/completionsUnary chat completion
StreamChatCompletionPOST /v1/chat/completions/streamStreaming chat completion
ListModelsGET /v1/modelsList available models
GetModelGET /v1/models/{model}Model metadata
EmbedPOST /v1/embeddingsEmbedding generation
RerankPOST /v1/rerankDocument reranking
StreamRerankPOST /v1/rerank/streamStreaming rerank results
InferPOST /v1/inferGeneric model inference
StreamInferPOST /v1/infer/streamStreaming infer results
TranscribePOST /v1/audio/transcriptionsAudio transcription

Notes

  1. The service is modeled around global/public model names.
  2. Some list/get style endpoints in proto do not carry explicit method scope annotations, but deployment ingress policies may still enforce auth.
  3. Streaming variants are preferred for low-latency progressive delivery in interactive workloads.

ModelService examples

Chat completion (HTTP)

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io/v1/chat/completions" \ -d '{ "model":"kimi-k2-5", "messages":[{"role":"user","content":"Summarize this incident in 3 bullets."}] }'

Embeddings (gRPC)

grpcurl \ -H "authorization: Bearer $TOKEN" \ -d '{"model":"embeddinggemma-300m","input":"hello world"}' \ rpc.dev.dodil.io:443 dodil.ignite.v1.ModelService/Embed

Rerank (HTTP)

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io/v1/rerank" \ -d '{ "model":"bge-reranker-v2", "query":"ignite gateway active cache", "documents":["doc-a","doc-b","doc-c"] }'

SecretService

SecretService provides tenant-owned typed secret management.

RPC Surface

RPCHTTP annotationPurpose
CreateSecretPOST /v1/ignite/secretsCreate/update named secret
GetSecretGET /v1/ignite/secrets/{name}Read secret value
ListSecretsGET /v1/ignite/secretsList secret metadata
DeleteSecretDELETE /v1/ignite/secrets/{name}Delete secret

Secret Types

  • GitSecret (username, token)
  • RegistrySecret (username, password, optional server_address)

Scoping and Safety

  1. Secret namespace is org-scoped; cross-org secret reads are blocked by path and auth model.
  2. GetSecret returns values; avoid logging raw responses in shared logs.
  3. Prefer ListSecrets metadata for inventory use cases where value retrieval is not needed.

SecretService examples

Create git secret (gRPC)

grpcurl \ -H "authorization: Bearer $TOKEN" \ -d '{ "name":"github-pat", "value":{ "git_secret":{ "username":"alice", "token":"<pat>" } } }' \ rpc.dev.dodil.io:443 dodil.ignite.v1.SecretService/CreateSecret

Create registry secret (HTTP)

curl -sS -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://api.dev.dodil.io/v1/ignite/secrets" \ -d '{ "name":"ghcr-creds", "value":{ "registry_secret":{ "username":"bot", "password":"<token>", "server_address":"ghcr.io" } } }'

List secrets (HTTP)

curl -sS \ -H "Authorization: Bearer $TOKEN" \ "https://api.dev.dodil.io/v1/ignite/secrets"