Notes for Automated Agents
This page is written for programmatic consumers of the NIM Metadata API, such as tooling, schedulers, and agents that select profiles without a human in the loop. If you are exploring the API by hand, start with the Quickstart instead.
The response is stable, machine-readable JSON, but the schema grows over time. Following the rules on this page keeps an integration working across schema changes rather than breaking on the first new field.
Forward-Compatibility Rules
Apply the following six rules to every integration.
The following example accepts either GPU field shape. Complete the
Quickstart first to define metadata:
Freshness and Caching
The API offers no ETag header, no Last-Modified header, and no conditional-request support, so cache based on tag stability rather than cache validation. The following table describes how long to trust a cached document:
Publication lags the container. A newly pushed container tag can exist before its metadata does, so a 404 status code immediately after a release can resolve shortly afterward. If you poll, use a bounded number of attempts with backoff rather than polling indefinitely.
Response Sizes
Plan for variability rather than a fixed size. A typical NIM microservice returns roughly 8 KB across eight profiles. NIM microservices with many profiles reach 20 KB to 50 KB, and the largest observed historical documents approach 300 KB across several hundred profiles.
There is no hard cap on profile count, so stream the response or size your buffers accordingly and do not assume a small fixed maximum.
Rate Limits
No endpoint-specific rate limit is published, and standard NGC gateway limits apply. Be a considerate client by caching immutable tags, avoiding tight polling loops, and backing off on a 429 status code or any 5xx status code.
Best Practices
Apply the following practices when you build against this API:
- Branch on status codes, not text. Treat a 404 status code as a definitive answer about metadata availability only after bounded retries for newly published tags are exhausted.
- Model unknowns explicitly. Return a three-valued result from fit checks so that an unrecorded requirement is distinguishable from a failed one.
- Log the request identifier. Record
requestStatus.requestIdon every non-success response, because that is the value support needs to trace a specific request. - Do not retry service-side data problems. A well-formed request that returns a 400 or 500 status code because of stored data will not succeed on retry. Report it instead.
- Design for partial coverage. Metadata is attached at publish time, so build the no-metadata path first rather than treating it as an edge case.
Next Steps
Explore the following resources to complete your integration:
- Follow the selection procedure: Choose a Profile for Your Hardware
- Look up status codes and error envelopes: Endpoints
- Review the constraints to plan around: Current Limitations