Endpoints for NIM Metadata API#
Three request forms that use the HTTP GET method are available. All three
return the same JSON response body for the same NIM microservice and tag, so
choose whichever fits how you hold the identifier. All requests use the
following base URL:
https://api.ngc.nvidia.com/v2
The path forms and the query form are equivalent. The path forms construct the
resourceId on your behalf.
Query-Parameter Form#
Use this form when you hold the repository path as a single string.
GET /v2/nim/metadata?resourceId={resourceId}&tag={tag}
The following table describes the parameters:
Parameter |
In |
Required |
Description |
|---|---|---|---|
|
query |
Yes |
Repository path, in the form |
|
query |
Yes |
Container tag. |
The following example requests metadata for a team-owned NIM microservice:
curl --request GET \
--url 'https://api.ngc.nvidia.com/v2/nim/metadata?resourceId=nim/meta/llama-3.1-8b-instruct&tag=2.0.12' \
--header 'accept: application/json'
Omitting either parameter returns a 400 status code.
Note
URL-encode the resourceId if your client does not do so automatically.
The slashes are literal and must survive to the server.
Path Form, Team-Qualified#
Use this form for a repository that sits inside a team within the organization.
GET /v2/nim/{team-name}/{repo-name}/{tag-name}/metadata
The following table describes the parameters:
Parameter |
In |
Required |
Description |
|---|---|---|---|
|
path |
Yes |
Team owning the repository. |
|
path |
Yes |
NIM microservice container name. |
|
path |
Yes |
Container tag. |
The following example uses the team-qualified path form:
curl --request GET \
--url 'https://api.ngc.nvidia.com/v2/nim/meta/llama-3.1-8b-instruct/2.0.12/metadata' \
--header 'accept: application/json'
Path Form, Organization Root#
Use this form for a repository that sits directly under the organization with no team.
GET /v2/nim/{repo-name}/{tag-name}/metadata
The following example uses the organization-root path form:
curl --request GET \
--url 'https://api.ngc.nvidia.com/v2/nim/openfold3/1.2.0/metadata' \
--header 'accept: application/json'
Note
No organization-root NIM microservice container exists in production today. The preceding command illustrates the path form only. Do not use it as a live test target.
Important
Segment count alone distinguishes the two path forms. A team-owned NIM microservice requested through the organization-root form returns a 404 status code rather than resolving silently. If you receive an unexpected 404 status code, confirm that you are using the form that matches the actual layout of the repository. To check the layout, search for the NIM microservice on the NGC Catalog and review the URL path.
The service supplies the organization for both path forms, which is why it does not appear in the path.
Responses#
The following table describes the status codes this endpoint returns:
Status Code |
Meaning |
|---|---|
200 |
Metadata returned. |
400 |
Malformed request. |
404 |
No metadata exists for this NIM microservice and tag. |
500 |
Internal error. |
Errors use the standard NGC envelope:
{
"requestStatus": {
"statusCode": "NOT_FOUND",
"statusDescription": "NIM metadata does not exist for nim-metadata/openfold3:1.2.0",
"requestId": "f2ee19e1-48e0-4a34-a148-86f3e78f0bf6"
}
}
A request that uses the GET method returns one of the following
statusCode values:
INVALID_REQUESTfor a 400 status codeNOT_FOUNDfor a 404 status codeINTERNAL_ERRORfor a 5xx status code
Note
The namespace in statusDescription refers to the internal metadata
storage for the service and does not match the resourceId you sent. This
is expected, and it is one more reason to branch on the status code rather
than on the description text.
A 400 status code on this endpoint does not always mean your request was malformed. Stored metadata that fails validation on read also surfaces as a 400 status code, and metadata that cannot be parsed at all surfaces as a 500 status code. Consider a 400 status code service-side when your request is well-formed and the description does not name one of your parameters. Report that case rather than retrying with different parameters. For details, refer to Troubleshooting.
Always log requestStatus.requestId, because that is the value support needs
to trace a specific request.