Skip to content
Numes

API reference · Resolve encrypted model

Encrypted inference

Resolve encrypted model

Resolve an encrypted model to its native model ID and an exact offer before your SDK encrypts the request.

POSThttps://api.numes.ai/api/v1/e2ee/resolve

Send a discovered :e2ee model ID with an inference key. The response names the native model to put inside the encrypted request, the offer to bind with the X-Inference-* headers, and the encryption transport, protocol and security_policy your client must check before sending. It never contains an encryption key or provider credential. Resolution sends no prompt and costs nothing. Guide: Encrypted inference.

Resolution doesn't reserve capacity or authorize a later request: availability, access and balance are checked again when you send it. Resolve again after a route becomes unavailable.

A model ID without the :e2ee qualifier returns 400. When no provider can serve the model, including unknown, unpublished, other-currency and inaccessible shared models, the response is 503 provider_unavailable; it doesn't reveal whether an inaccessible model exists. See Errors.

Authorization

AuthorizationheaderRequired

Bearer inference key. Charges settle in the key's billing currency. Authorization: Bearer $NUMES_API_KEY

Request body

application/json

The contract declares a 4 KiB body limit. The size the service enforces is listed in Limits.

modelstringRequired
Length1–512

Responses

200Current selection and required protocol/security policy for a qualified encrypted clientapplication/json

BodyEncryptedModelResolutionapplication/json

modelstringRequired
native_modelstringRequired
offer_idstring<uuid>Required
offer_revision_idstring<uuid>Required
transportenum<string>Required

Encryption profile the client must use for this offer. Tinfoil uses enclave attestation; Venice uses provider-managed key discovery with weaker independent verification (see the encrypted inference guide).

One oftinfoil-ehbpsynthetic-ehbpsynthetic-fields-v1venice-ecies-v1
protocolenum<string>Required
One ofehbp-v1encrypted-json-v1venice-ecies-v1
security_policyenum<string>Required
One ofattested-enclavedevelopmentprovider-managed
usage_meterenum<string>Required
Valueprovider-native-e2ee-v1
context_lengthinteger<int64>Required
Range≥ 1
maximum_output_tokensinteger<int64>Required
Range≥ 1
503No eligible provider can serve the request. Unknown, unpublished, currency-mismatched and unauthorized shared model IDs receive the same bounded response (`error.code` 503, `error.metadata.error_type` "provider_unavailable", message "no provider is available"). Inference and encrypted resolution do not classify model existence after routing fails. Earlier validation and authorization errors remain unchanged. An interrupted server execution while the original HTTP caller remains connected also uses 503 provider_unavailable with the fixed message "service temporarily unavailable". Once streaming has started, the error is in-band and the HTTP status remains 200. If an otherwise eligible USD-indexed Bitcoin offer is blocked by an unavailable market reference, or its reference expires before dispatch, the response instead uses 503 with error_type "bitcoin_reference_price_unavailable" and message "Bitcoin pricing is unavailable. Try again shortly."application/json

Headers

X-Request-Idstring

Correlation identifier assigned or accepted by the service.

BodyErrorResponseapplication/json

errorobjectRequired
Show3 child attributes
codeintegerRequired
messagestringRequired
metadataobject
openrouter_metadataobject
ErrorCompatible error envelopeapplication/json

Headers

X-Request-Idstring

Correlation identifier assigned or accepted by the service.

Retry-Afterinteger

Optional delay in seconds for retryable rate or availability errors.

Range≥ 1

BodyErrorResponseapplication/json

errorobjectRequired
Show3 child attributes
codeintegerRequired
messagestringRequired
metadataobject
openrouter_metadataobject