anon, private, tee, or e2ee. You choose the tier by choosing the model.
List the models
GET /v1/models lists every model with its id, tier, type (such as chat or image), display label, and retention. Chat and image models also list their price in micros, and 10,000 micros are one credit. The list is free, and it has its own rate limit of 60 calls a minute, apart from your plan’s.
glm-5.3 at private, glm-5.3-tee at tee, and z-ai/glm-5.3 at e2ee.
What each tier protects
If Morse can’t verify an enclave’s attestation, requests to its
tee and e2ee models get 503 with the code upstream_unattested until a check passes.
Call an e2ee model
Ane2ee model needs a client that encrypts messages before it sends them. The OpenAI SDKs don’t, and these docs don’t yet describe the encryption protocol for API keys. From your own code, use a tee model for now. The Morse app encrypts its e2ee chats itself.
Morse promises that it doesn’t see your plaintext, not that it can’t. The encryption doesn’t bind your client’s public key into the ciphertext, so a relay in the path, Morse included, could swap that key. You trust Morse not to.
Fields Morse forwards
On models outsidee2ee, Morse builds the request it sends to the vendor from these fields alone: model, messages, max_tokens or max_completion_tokens, stream, stream_options, reasoning_effort, tools, tool_choice, and parallel_tool_calls. It drops every other field without an error, including temperature, top_p, stop, seed, response_format, and user.
Images and other media go in a message as data: URIs, encoded in base64. A media link to a URL gets 400 with the code remote_media.