Developer API
Get an API key
Send this as the
x-api-key header. It
will not be shown again.
Authentication
x-api-key: hmd_live_...
Base URL: https://developer-api.hoodmarket.io.
Errors are always { "error": "..." } with a
non-2xx status.
GET/api/v1/collections/{address}
curl https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41 \ -H "x-api-key: YOUR_KEY"
const res = await fetch(
"https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
{ headers: { "x-api-key": "YOUR_KEY" } },
);
const data = await res.json();
import requests
res = requests.get(
"https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
headers={"x-api-key": "YOUR_KEY"},
)
data = res.json()
const axios = require("axios");
const { data } = await axios.get(
"https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
{ headers: { "x-api-key": "YOUR_KEY" } },
);
req, _ := http.NewRequest("GET",
"https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
nil)
req.Header.Set("x-api-key", "YOUR_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
$ch = curl_init("https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: YOUR_KEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
require "net/http"
require "json"
uri = URI("https://developer-api.hoodmarket.io/api/v1/collections/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41")
req = Net::HTTP::Get.new(uri)
req["x-api-key"] = "YOUR_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"contractAddress": "0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
"source": "native",
"name": "Example Collection",
"avatarUrl": "https://.../image.png",
"bannerUrl": "https://.../banner.png",
"hoodmarketUrl": "https://hoodmarket.io/collection/example",
"openseaUrl": "https://opensea.io/collection/example"
}
| Field | Description |
|---|---|
source |
native (launched on HoodMarket),
spotlight (featured, cached), or
opensea (resolved live from OpenSea)
|
avatarUrl /
bannerUrl
|
Direct URL to the image. |
hoodmarketUrl |
Link to the collection's page on hoodmarket.io, if it has one. |
404 means we have no record of this contract. Not every collection is indexed yet.
GET/api/v1/nfts/{contract}/{tokenId}
curl https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1 \ -H "x-api-key: YOUR_KEY"
const res = await fetch(
"https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1",
{ headers: { "x-api-key": "YOUR_KEY" } },
);
const data = await res.json();
import requests
res = requests.get(
"https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1",
headers={"x-api-key": "YOUR_KEY"},
)
data = res.json()
const axios = require("axios");
const { data } = await axios.get(
"https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1",
{ headers: { "x-api-key": "YOUR_KEY" } },
);
req, _ := http.NewRequest("GET",
"https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1",
nil)
req.Header.Set("x-api-key", "YOUR_KEY")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
$ch = curl_init("https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: YOUR_KEY"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = json_decode(curl_exec($ch), true);
require "net/http"
require "json"
uri = URI("https://developer-api.hoodmarket.io/api/v1/nfts/0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41/1")
req = Net::HTTP::Get.new(uri)
req["x-api-key"] = "YOUR_KEY"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
{
"contractAddress": "0xa597a1e2ec4490cdc64f33b8581c74d7aec72e41",
"tokenId": "1",
"source": "native",
"name": "Example #1",
"description": "...",
"imageUrl": "https://.../1.png",
"traits": [{ "trait_type": "Background", "value": "Blue" }]
}
| Field | Description |
|---|---|
source |
native (metadata read straight from
HoodMarket's own storage) or opensea
(resolved live from OpenSea)
|
imageUrl |
Direct URL to the token's image. |
404 means we have no record of this token.
Rate limits
120 requests per minute per API key. Responses set
Cache-Control, so cache on your side
for anything that doesn't need to be real-time.
More endpoints coming
New-collection detection is on the roadmap. Need something specific? Ping us on Discord.