Hiro Token Metadata API
REST API for fungible and non-fungible token metadata on Stacks.
REST API for fungible and non-fungible token metadata on Stacks.
openapi: 3.0.3
info:
title: Token Metadata API
description: Welcome to the API reference overview for the [Token Metadata
API](https://docs.hiro.so/token-metadata-api). Service that indexes metadata
for every SIP-009, SIP-010, and SIP-013 Token in the Stacks blockchain and
exposes it via REST API endpoints.
version: v2.2.1
components:
schemas: {}
paths:
/metadata/v1/ft:
get:
operationId: getFungibleTokens
summary: Fungible Tokens
tags:
- Tokens
description: Retrieves a list of Fungible Tokens
parameters:
- schema:
type: string
in: query
name: name
required: false
- schema:
type: string
in: query
name: symbol
required: false
- schema:
pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}
title: Stacks Address
type: string
example: SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9
in: query
name: address
required: false
description: Stacks Address
- schema:
type: boolean
in: query
name: valid_metadata_only
required: false
description: If enabled, only tokens with valid SIP-016 metadata will be returned
- schema:
minimum: 0
title: Offset
type: integer
in: query
name: offset
required: false
description: Result offset
- schema:
minimum: 1
maximum: 60
title: Limit
type: integer
in: query
name: limit
required: false
description: Results per page
- schema:
title: Order By
anyOf:
- type: string
enum:
- name
- type: string
enum:
- symbol
in: query
name: order_by
required: false
description: Parameter to order results by
- schema:
title: Order
anyOf:
- type: string
enum:
- asc
- type: string
enum:
- desc
in: query
name: order
required: false
description: Results order
responses:
"200":
description: Default Response
content:
application/json:
schema:
title: Paginated Ft Basic Metadata Response
type: object
required:
- limit
- offset
- total
- results
properties:
limit:
type: integer
example: 20
offset:
type: integer
example: 0
total:
type: integer
example: 1
results:
type: array
items:
title: Ft Basic Metadata Response
type: object
required:
- tx_id
- sender_address
- asset_identifier
- contract_principal
properties:
name:
type: string
example: Wrapped USD
symbol:
type: string
example: xUSD
decimals:
type: integer
example: 8
total_supply:
type: string
example: "9999980000000"
token_uri:
format: uri
description: URI for this token's metadata JSON
type: string
example: ipfs://ipfs/Qmf9yDYuPTrp8NRUFf8xxDd5Ud24Dx9uYMwMn8o8G2cWPW/12200.json
description:
description: Description
type: string
example: Heavy hitters, all-stars and legends of the game join forces to create
a collection of unique varsity jackets
image_uri:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
image_thumbnail_uri:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
image_canonical_uri:
format: uri
description: Original image URL
type: string
example: ipfs://ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
tx_id:
type: string
example: 0xef2ac1126e16f46843228b1dk4830e19eb7599129e4jf392cab9e65ae83a45c0
sender_address:
type: string
example: ST399W7Z9WS0GMSNQGJGME5JAENKN56D65VGMGKGA
asset_identifier:
description: Clarity asset identifier
type: string
example: SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.token-ststx-earn-v1::stSTXearn
contract_principal:
type: string
example: SP1H1733V5MZ3SZ9XRW9FKYGEZT0JDGEB8Y634C7R.miamicoin-token-v2
/metadata/v1/ft/{principal}:
get:
operationId: getFtMetadata
summary: Fungible Token Metadata
tags:
- Tokens
description: Retrieves metadata for a SIP-010 Fungible Token
parameters:
- schema:
title: Localization
type: string
examples:
es-MX:
value: es-MX
jp:
value: jp
in: query
name: locale
required: false
description: Metadata localization to retrieve
- schema:
pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}\.[a-zA-Z]([a-zA-Z0-9]|[-_]){0,39}$
title: Fungible Token Contract Principal
type: string
example: SP32XCD69XPS3GKDEXAQ29PJRDSD5AR643GNEEBXZ.fari-token
in: path
name: principal
required: true
description: Principal for the contract which owns the SIP-010 token
responses:
"200":
description: Default Response
content:
application/json:
schema:
title: Ft Metadata Response
type: object
required:
- tx_id
- sender_address
- asset_identifier
properties:
name:
description: Token name
type: string
example: Wrapped USD
symbol:
description: Token symbol
type: string
example: xUSD
decimals:
description: Number of decimal places clients should use to format this token's
amounts
type: integer
example: 8
total_supply:
description: Current circulating supply as reported by its contract. Clients
should format this amount with the correct number of
`decimals` before displaying to users
type: string
example: "9999980000000"
token_uri:
format: uri
description: URI for this token's metadata JSON
type: string
example: ipfs://ipfs/Qmf9yDYuPTrp8NRUFf8xxDd5Ud24Dx9uYMwMn8o8G2cWPW/12200.json
description:
description: Description
type: string
example: Heavy hitters, all-stars and legends of the game join forces to create
a collection of unique varsity jackets
image_uri:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
image_thumbnail_uri:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
image_canonical_uri:
format: uri
description: Original image URL
type: string
example: ipfs://ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
tx_id:
description: ID for the transaction that deployed this token
type: string
example: "0x5642ca7d68976b6b2a2055689d9a57de26d67f0dd8b016d1b0d94cb634454cdd"
sender_address:
description: Deployer address
type: string
example: SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6
asset_identifier:
description: Clarity asset identifier
type: string
example: SPZA22A4D15RKH5G8XDGQ7BPC20Q5JNMH0VQKSR6.token-ststx-earn-v1::stSTXearn
metadata:
title: Metadata
type: object
required:
- sip
properties:
sip:
type: integer
example: 16
name:
type: string
example: "Satoshi's Team #12200"
description:
description: Description
type: string
example: Heavy hitters, all-stars and legends of the game join forces to create
a collection of unique varsity jackets
image:
format: uri
description: Original image URL
type: string
example: ipfs://ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_thumbnail_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
attributes:
type: array
items:
title: Metadata Attribute
type: object
required:
- trait_type
- value
properties:
trait_type:
type: string
example: Background
display_type:
type: string
example: string
value:
title: Metadata Value
example: value
properties:
title: Metadata Properties
type: object
additionalProperties:
title: Metadata Value
examples:
- value
example:
collection: Foo Collection
total_supply: "10000"
localization:
title: Metadata Localization
type: object
required:
- uri
- default
- locales
properties:
uri:
format: uri
type: string
example: http://token.com/metadata?hl={locale}
default:
type: string
example: en
locales:
type: array
items:
type: string
example:
- en
- jp
"404":
description: Default Response
content:
application/json:
schema:
title: Not Found Error Response
anyOf:
- title: Token Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token not found
- title: Contract Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Contract not found
"422":
description: Default Response
content:
application/json:
schema:
title: Error Response
anyOf:
- title: Token Metadata Fetch In Progress Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token metadata fetch in progress
- title: Locale Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Locale not found
- type: object
required:
- error
- message
properties:
error:
type: string
enum:
- Token error
message:
type: string
/metadata/v1/nft/{principal}/{token_id}:
get:
operationId: getNftMetadata
summary: Non-Fungible Token Metadata
tags:
- Tokens
description: Retrieves metadata for a SIP-009 Non-Fungible Token
parameters:
- schema:
title: Localization
type: string
examples:
es-MX:
value: es-MX
jp:
value: jp
in: query
name: locale
required: false
description: Metadata localization to retrieve
- schema:
pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}\.[a-zA-Z]([a-zA-Z0-9]|[-_]){0,39}$
title: Non-Fungible Token Contract Principal
type: string
example: SP497E7RX3233ATBS2AB9G4WTHB63X5PBSP5VGAQ.boomboxes-cycle-12
in: path
name: principal
required: true
description: SIP-009 compliant smart contract principal
- schema:
title: Token ID
type: integer
example: "35"
in: path
name: token_id
required: true
description: Token ID to retrieve
responses:
"200":
description: Default Response
content:
application/json:
schema:
title: Nft Metadata Response
type: object
properties:
token_uri:
format: uri
description: URI for this token's metadata JSON
type: string
example: ipfs://ipfs/Qmf9yDYuPTrp8NRUFf8xxDd5Ud24Dx9uYMwMn8o8G2cWPW/12200.json
metadata:
title: Metadata
type: object
required:
- sip
properties:
sip:
type: integer
example: 16
name:
type: string
example: "Satoshi's Team #12200"
description:
description: Description
type: string
example: Heavy hitters, all-stars and legends of the game join forces to create
a collection of unique varsity jackets
image:
format: uri
description: Original image URL
type: string
example: ipfs://ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_thumbnail_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
attributes:
type: array
items:
title: Metadata Attribute
type: object
required:
- trait_type
- value
properties:
trait_type:
type: string
example: Background
display_type:
type: string
example: string
value:
title: Metadata Value
example: value
properties:
title: Metadata Properties
type: object
additionalProperties:
title: Metadata Value
examples:
- value
example:
collection: Foo Collection
total_supply: "10000"
localization:
title: Metadata Localization
type: object
required:
- uri
- default
- locales
properties:
uri:
format: uri
type: string
example: http://token.com/metadata?hl={locale}
default:
type: string
example: en
locales:
type: array
items:
type: string
example:
- en
- jp
"404":
description: Default Response
content:
application/json:
schema:
title: Not Found Error Response
anyOf:
- title: Token Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token not found
- title: Contract Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Contract not found
"422":
description: Default Response
content:
application/json:
schema:
title: Error Response
anyOf:
- title: Token Metadata Fetch In Progress Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token metadata fetch in progress
- title: Locale Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Locale not found
- type: object
required:
- error
- message
properties:
error:
type: string
enum:
- Token error
message:
type: string
/metadata/v1/sft/{principal}/{token_id}:
get:
operationId: getSftMetadata
summary: Semi-Fungible Token Metadata
tags:
- Tokens
description: Retrieves metadata for a SIP-013 Semi-Fungible Token
parameters:
- schema:
title: Localization
type: string
examples:
es-MX:
value: es-MX
jp:
value: jp
in: query
name: locale
required: false
description: Metadata localization to retrieve
- schema:
pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}\.[a-zA-Z]([a-zA-Z0-9]|[-_]){0,39}$
title: Semi-Fungible Token Contract Principal
type: string
example: SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.key-alex-autoalex-v1
in: path
name: principal
required: true
description: SIP-013 compliant smart contract principal
- schema:
title: Token ID
type: integer
example: "35"
in: path
name: token_id
required: true
description: Token ID to retrieve
responses:
"200":
description: Default Response
content:
application/json:
schema:
title: Sft Metadata Response
type: object
properties:
token_uri:
format: uri
description: URI for this token's metadata JSON
type: string
example: ipfs://ipfs/Qmf9yDYuPTrp8NRUFf8xxDd5Ud24Dx9uYMwMn8o8G2cWPW/12200.json
decimals:
type: integer
example: 6
total_supply:
type: string
example: "250"
metadata:
title: Metadata
type: object
required:
- sip
properties:
sip:
type: integer
example: 16
name:
type: string
example: "Satoshi's Team #12200"
description:
description: Description
type: string
example: Heavy hitters, all-stars and legends of the game join forces to create
a collection of unique varsity jackets
image:
format: uri
description: Original image URL
type: string
example: ipfs://ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
cached_thumbnail_image:
format: uri
description: Cached image URL
type: string
example: https://ipfs.io/ipfs/QmZMqhh2ztwuZ3Y8PyEp2z5auyH3TCm3nnr5ZfjjgDjd5q/12199.png
attributes:
type: array
items:
title: Metadata Attribute
type: object
required:
- trait_type
- value
properties:
trait_type:
type: string
example: Background
display_type:
type: string
example: string
value:
title: Metadata Value
example: value
properties:
title: Metadata Properties
type: object
additionalProperties:
title: Metadata Value
examples:
- value
example:
collection: Foo Collection
total_supply: "10000"
localization:
title: Metadata Localization
type: object
required:
- uri
- default
- locales
properties:
uri:
format: uri
type: string
example: http://token.com/metadata?hl={locale}
default:
type: string
example: en
locales:
type: array
items:
type: string
example:
- en
- jp
"404":
description: Default Response
content:
application/json:
schema:
title: Not Found Error Response
anyOf:
- title: Token Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token not found
- title: Contract Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Contract not found
"422":
description: Default Response
content:
application/json:
schema:
title: Error Response
anyOf:
- title: Token Metadata Fetch In Progress Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Token metadata fetch in progress
- title: Locale Not Found Response
type: object
required:
- error
properties:
error:
type: string
enum:
- Locale not found
- type: object
required:
- error
- message
properties:
error:
type: string
enum:
- Token error
message:
type: string
/metadata/v1/search:
get:
operationId: searchTokens
summary: Search Tokens
tags:
- Tokens
description: Retrieves metadata for multiple tokens in a single request. Accepts
up to 50 contract identifiers.
parameters:
- schema:
minItems: 1
maxItems: 50
title: Contract Identifiers
type: array
items:
pattern: ^[0123456789ABCDEFGHJKMNPQRSTVWXYZ]{28,41}\.[a-zA-Z]([a-zA-Z0-9]|[-_]){0,39}(:\d+)?$
title: Contract Identifier
description: "Format: PRINCIPAL or PRINCIPAL:TOKEN_NUMBER"
examples:
- SP32XCD69XPS3GKDEXAQ29PJRDSD5AR643GNEEBXZ.fari-token
- SP497E7RX3233ATBS2AB9G4WTHB63X5PBSP5VGAQ.boomboxes-cycle-12:120
type: string
in: query
name: contract
required: true
description: "Contract identifiers to search for. Format: PRINCIPAL or
PRINCIPAL:TOKEN_NUMBER. Defaults token_number to 1 when omitted."
- schema:
title: Localization
type: string
examples:
es-MX:
value: es-MX
jp:
value: jp
in: query
name: locale
required: false
description: Metadata localization to retrieve
responses:
"200":
description: Default Response
content:
application/json:
schema:
title: Search Response
type: array
items:
title: Search Result Item
type: object
required:
- contract_id
- token_number
- token_type
- tx_id
- sender_address
properties:
contract_id:
description: Contract principal
type: string
example: SP32XCD69XPS3GKDEXAQ29PJRDSD5AR643GNEEBXZ.fari-token
token_number:
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hiro/refs/heads/main/openapi/hiro-token-metadata-api-openapi.yaml