> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/relay/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/relay/_mcp/server.

# Module resolve

> Provider-surface detection and best-effort normalization: the preferred path for turning raw provider JSON into normalized types when no codec annotation is present.

Generated from `cargo doc --no-deps -p nemo-relay -p nemo-relay-adaptive -p nemo-relay-pii-redaction -p nemo-relay-ffi -p nemo-relay-types -p nemo-relay-plugin -p nemo-relay-worker-proto -p nemo-relay-worker`.

Provider-surface detection and best-effort normalization: the preferred path for turning raw provider JSON into normalized types when no codec annotation is present.

## Enums

* [ProviderSurface](/reference/api/rust-library-reference/nemo-relay/codec/resolve/enum-providersurface): A built-in provider request/response surface.

## Functions

* [detect\_request\_surface](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-detect-request-surface): Detect the request surface from a raw request body by top-level key.
* [detect\_request\_surface\_with\_hint](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-detect-request-surface-with-hint): Like [`detect_request_surface`](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-detect-request-surface), but a recognized `provider_hint` resolves the one ambiguous shape (an Anthropic request without a top-level `system`, otherwise read as OpenAI Chat). Today, only the exact hints `"anthropic"` and `"anthropic.messages"` change detection; `None` or any other value is ignored and detection stays shape-only.
* [detect\_response\_surface](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-detect-response-surface): Detect the response surface from a raw provider response, classifying only when exactly one built-in shape matches (the built-in codecs accept minimal objects, so decode success alone is not a reliable classifier).
* [normalize\_request](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-normalize-request): Best-effort decode of a raw request into [`AnnotatedLlmRequest`](/reference/api/rust-library-reference/nemo-relay/codec/request/struct-annotatedllmrequest) (fail-open).
* [normalize\_request\_with\_hint](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-normalize-request-with-hint): Like [`normalize_request`](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-normalize-request), but a recognized `provider_hint` can disambiguate provider request shapes that are otherwise identical.
* [normalize\_response](/reference/api/rust-library-reference/nemo-relay/codec/resolve/fn-normalize-response): Best-effort decode of a raw response into [`AnnotatedLlmResponse`](/reference/api/rust-library-reference/nemo-relay/codec/response/struct-annotatedllmresponse) (fail-open).