curl --request POST \
--url https://api.bunny.net/mc/registries/images/find \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"image": "<string>",
"registryIds": [
"<string>"
]
}
'import requests
url = "https://api.bunny.net/mc/registries/images/find"
payload = {
"image": "<string>",
"registryIds": ["<string>"]
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({image: '<string>', registryIds: ['<string>']})
};
fetch('https://api.bunny.net/mc/registries/images/find', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bunny.net/mc/registries/images/find",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'image' => '<string>',
'registryIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bunny.net/mc/registries/images/find"
payload := strings.NewReader("{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bunny.net/mc/registries/images/find")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunny.net/mc/registries/images/find")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"imageNamespace": "<string>",
"imageName": "<string>",
"registryId": "<string>",
"registryHostname": "<string>",
"isPublic": true,
"imageTag": "<string>",
"imageDigest": "<string>"
}
],
"meta": {
"totalItems": 123
},
"cursor": "<string>",
"registries": [
{
"registryId": "<string>",
"status": "found",
"message": "<string>"
}
],
"suggestions": {
"sameImageTags": [
{
"registryId": "<string>",
"imageNamespace": "<string>",
"imageName": "<string>",
"tags": [
"<string>"
]
}
],
"similarImages": [
{
"registryId": "<string>",
"imageNamespace": "<string>",
"imageName": "<string>"
}
]
}
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}Find Container Image
Parses an image reference like “ghcr.io/owner/app:v1” or “owner/app” and checks whether the image tag exists in the selected registries of the user (only those of the reference’s host when it has one). A reference without a tag finds nothing, not even “latest”: the image’s tags are suggested instead. Returns every registry that has the image tag with its id, hostname, the image namespace, name, tag and digest, and how each searched registry answered: found, not found, unauthorized (its credentials are refused) or unavailable. When none has it, suggests the image’s tags from the registries that have the image, and images with a similar name.
curl --request POST \
--url https://api.bunny.net/mc/registries/images/find \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"image": "<string>",
"registryIds": [
"<string>"
]
}
'import requests
url = "https://api.bunny.net/mc/registries/images/find"
payload = {
"image": "<string>",
"registryIds": ["<string>"]
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({image: '<string>', registryIds: ['<string>']})
};
fetch('https://api.bunny.net/mc/registries/images/find', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bunny.net/mc/registries/images/find",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'image' => '<string>',
'registryIds' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bunny.net/mc/registries/images/find"
payload := strings.NewReader("{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bunny.net/mc/registries/images/find")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunny.net/mc/registries/images/find")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"image\": \"<string>\",\n \"registryIds\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"imageNamespace": "<string>",
"imageName": "<string>",
"registryId": "<string>",
"registryHostname": "<string>",
"isPublic": true,
"imageTag": "<string>",
"imageDigest": "<string>"
}
],
"meta": {
"totalItems": 123
},
"cursor": "<string>",
"registries": [
{
"registryId": "<string>",
"status": "found",
"message": "<string>"
}
],
"suggestions": {
"sameImageTags": [
{
"registryId": "<string>",
"imageNamespace": "<string>",
"imageName": "<string>",
"tags": [
"<string>"
]
}
],
"similarImages": [
{
"registryId": "<string>",
"imageNamespace": "<string>",
"imageName": "<string>"
}
]
}
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}{
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": [
{
"message": "<string>",
"field": "<string>"
}
],
"id": "<string>"
}Authorizations
Please enter a valid personal API key.
Body
Image reference in the docker format: [registry/]namespace/name[:tag], e.g. "ghcr.io/owner/app:v1" or "owner/app". Without a registry host all of the user's registries are searched. Without a tag nothing is found, not even "latest": the image's tags are suggested instead.
1 - 512The registries to search: ids of the user's registries, or "dockerhub" / "github". At least one is required; ids that are not the user's registries are skipped. With a registry host in the image reference, only the selected registries of that host are searched.
1Response
The registries were searched: every one that has the image tag is listed (none when it was found nowhere), with how each searched registry answered.
Every registry of the user that has the image tag, in the order they were queried (the user's own private registries first, then public and platform ones). Empty when none has it.