/v1/module
Normalized ABI of one Move module: functions + structs
Try it live
10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.
It works. Grab an API key and use it in your project.
Get an API keyCode snippets
curl "https://api.oanor.com/suimodules-api/v1/module" \ -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/suimodules-api/v1/module", {
headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/suimodules-api/v1/module");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
"https://api.oanor.com/suimodules-api/v1/module",
headers={"x-oanor-key": "oanor_test_..."}
)
Example response
A real response from this endpoint, captured by the latest health check.
{
"data": {
"note": "Normalized ABI of the Move module: exposed functions (visibility, entry flag, type parameters, parameter and return type tags) and struct definitions.",
"module": "coin",
"source": "Sui fullnode JSON-RPC",
"friends": [
{
"name": "coin_registry",
"address": "0x2"
}
],
"package": "0x2",
"structs": [
{
"name": "Coin",
"fields": [
{
"name": "id",
"type": {
"Struct": {
"name": "UID",
"module": "object",
"address": "0x2",
"typeArguments": []
}
}
},
{
"name": "balance",
"type": {
"Struct": {
"name": "Balance",
"module": "balance",
"address": "0x2",
"typeArguments": [
{
"TypeParameter": 0
}
]
}
}
}
],
"abilities": [
"Store",
"Key"
],
"type_parameters": 1
},
{
"name": "CoinMetadata",
"fields": [
{
"name": "id",
"type": {
"Struct": {
"name": "UID",
"module": "object",
"address": "0x2",
"typeArguments": []
}
}
},
{
"name": "decimals",
"type": "U8"
},
{
"name": "name",
"type": {
"Struct": {
"name": "String",
"module": "string",
"address": "0x1",
"typeArguments": []
}
}
},
{
"name": "symbol",
"type": {
"Struct": {
"name": "String",
"module": "ascii",
…