# Images

## List all public images

> Returns all public images from FPT, which are customized for GPU Hopper generations. Refers to <https://fptcloud.com/en/documents/metal-cloud/?doc=os-image>

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images":{"get":{"summary":"List all public images","deprecated":false,"description":"Returns all public images from FPT, which are customized for GPU Hopper generations. Refers to https://fptcloud.com/en/documents/metal-cloud/?doc=os-image","operationId":"listImages","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"A list of images.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{}}}}}}},"headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## GET /api/v2/vmware/vpc/{vpc\_id}/hpc/custom-images

> List all custom images

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/custom-images":{"get":{"summary":"List all custom images","deprecated":false,"description":"","operationId":"listCustomImages","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"A list of custom images.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{}}}}}}},"headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## Upload a new custom image to S3

> With custom image templates, you can capture an image of a Bare Metal GPU server to replicate its configuration with minimal changes in the order process. Image templates provide an imaging option for all Bare Metal GPU servers, regardless of operating system. When your image template is complete, you can use it to create another Bare Metal GPU server.

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images/":{"post":{"summary":"Upload a new custom image to S3","deprecated":false,"description":"With custom image templates, you can capture an image of a Bare Metal GPU server to replicate its configuration with minimal changes in the order process. Image templates provide an imaging option for all Bare Metal GPU servers, regardless of operating system. When your image template is complete, you can use it to create another Bare Metal GPU server.","operationId":"registerImage","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC.","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"Name of the image."},"size":{"type":"integer","description":"Size of the image in bytes."},"sha256":{"type":"string","description":"SHA256 hash of the image file."},"vpcId":{"type":"string","description":"The VPC ID associated with the image.","nullable":true}},"required":["name","size","sha256"]}}}},"responses":{"201":{"description":"Image registered successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"data":{"type":"object","properties":{"image_id":{"type":"string","description":"The unique ID of the image."},"name":{"type":"string","description":"Name of the image."},"description":{"type":"string","description":"Description of the image."},"created_at":{"type":"string","format":"date-time","description":"The timestamp when the image was created."}}}}}}},"headers":{}},"400":{"description":"Invalid request payload.","headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## Get presigned upload URLs

> Get an file URL in S3 bucket after uploading the custom image.

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images/presign-urls/":{"post":{"summary":"Get presigned upload URLs","deprecated":false,"description":"Get an file URL in S3 bucket after uploading the custom image.","operationId":"getPresignedUrls","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC where the image belongs.","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA256 hash of the image file."}}}}}},"responses":{"200":{"description":"Presigned URLs generated successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string","description":"Presigned URL for uploading image chunks."}}}}}},"headers":{}},"400":{"description":"Invalid request payload.","headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## Upload a custom image from S3 to FPT image repository&#x20;

> After uploading a custom image successfully to S3 of FPT, you need to push it to FPT image repository. \
> It is the last step for custom image upload and lets you create a new server with it.

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images/{file_sha}/":{"put":{"summary":"Upload a custom image from S3 to FPT image repository ","deprecated":false,"description":"After uploading a custom image successfully to S3 of FPT, you need to push it to FPT image repository. \nIt is the last step for custom image upload and lets you create a new server with it.","operationId":"completeImageUpload","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC where the custom image will be upload.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"file_sha","in":"path","description":"The SHA256 hash of the file being uploaded.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"parts":{"type":"array","items":{"type":"object","properties":{"ETag":{"type":"string","description":"The entity tag (ETag) of the chunk."},"PartNumber":{"type":"integer","description":"The part number of the chunk."}}},"description":"List of parts with their respective ETag and PartNumber."},"name":{"type":"string","description":"Optional name associated with the update."}}}}}},"responses":{"200":{"description":"Image upload completed successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"headers":{}},"400":{"description":"Invalid request payload.","headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## Delete a custom image

> Deleting permanently a custom image, and it cannot be undone. Ensure you are deleting the correct image.\
> The server you’ve created from a custom image is not deleted when you delete the image from your account. You can destroy the Bare Metal GPU server from the FPT Customer portal separately.

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images/{hpc_file_id}/":{"delete":{"summary":"Delete a custom image","deprecated":false,"description":"Deleting permanently a custom image, and it cannot be undone. Ensure you are deleting the correct image.\nThe server you’ve created from a custom image is not deleted when you delete the image from your account. You can destroy the Bare Metal GPU server from the FPT Customer portal separately.","operationId":"deleteImage","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC where the image will be deleted.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"hpc_file_id","in":"path","description":"The ID of the custom image to delete.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image deleted successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```

## Sync an image to Console (Portal)

> Synchronizes the metadata and image file of a custom image in the centralized image repository of FPT with FPT Cloud console (Portal)

```json
{"openapi":"3.0.1","info":{"title":"Default module","version":"1.0.0"},"tags":[{"name":"images"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v2/vmware/vpc/{vpc_id}/hpc/images/{hpc_file_id}/sync/":{"post":{"summary":"Sync an image to Console (Portal)","deprecated":false,"description":"Synchronizes the metadata and image file of a custom image in the centralized image repository of FPT with FPT Cloud console (Portal)","operationId":"syncImage","tags":["images"],"parameters":[{"name":"vpc_id","in":"path","description":"The unique identifier of the VPC where the image will be synchronized.","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"hpc_file_id","in":"path","description":"The ID of the custom image to synchronize.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image synced successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}},"headers":{}},"401":{"description":"Unauthorized access.","headers":{}},"403":{"description":"Forbidden.","headers":{}},"500":{"description":"Internal server error.","headers":{}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ai-docs.fptcloud.com/api-reference/ai-infrastructure/metal-cloud/images.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
