Token launch metadata
Upload a new Solana token's name, symbol, links and image to POST /v1/launch/metadata, put the returned Metaplex uri on chain, and read launched tokens back from GET /v1/launch/metadata.
LayerHop hosts the metadata and image of tokens created with LayerHop Launch on app.layerhop.com. The Create page uploads the token's name, symbol, links and image to POST /v1/launch/metadata before it builds the mint transaction, and puts the returned uri in the token's on-chain metadata. Wallets and explorers then read the token's name and logo from that URI. Every route is public (no API key).
Note
This is content LayerHop hosts, not market data. LayerHop can hide a token from its site and from these routes (a takedown). Creators are responsible for their token's name and image.
How do I upload a token's metadata?#
Send multipart/form-data with the text fields and the image as a file part named image:
curl -X POST https://api.layerhop.com/v1/launch/metadata \
-F "mint=5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG" \
-F "creator=9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM" \
-F "name=Doge Hop" \
-F "symbol=DHOP" \
-F "description=The dog that hops chains." \
-F "website=https://dogehop.example" \
-F "image=@logo.png"{
"mint": "5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG",
"uri": "https://api.layerhop.com/v1/launch/metadata/5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG.json",
"image": "https://api.layerhop.com/v1/launch/metadata/5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG/image"
}| Field | Rule |
|---|---|
mint |
Required. The new token's mint, a base58 Solana public key |
creator |
Required. The creator's wallet, a base58 Solana public key |
name |
Required. 1 to 32 characters |
symbol |
Required. 1 to 10 characters of A-Z, a-z, 0-9 or $ |
description |
Optional. Up to 500 characters |
website, twitter, telegram |
Optional. http(s) URLs of up to 200 characters |
image |
Required file. At most 1 MB; PNG, JPEG, WebP or GIF |
The image type is detected from the file's bytes, not its name: anything else (SVG, HEIC, a renamed file) gets LAUNCH_IMAGE_INVALID. A field that breaks a rule gets INVALID_PARAMS. Each IP can upload 10 times per hour (RATE_LIMITED after that, with retry-after); re-sending an upload identical to the stored one returns 200 and does not count. A creator can have at most 5 pending uploads, meaning metadata whose mint is not on chain yet (INVALID_PARAMS after that). Uploads whose mint never appears on chain are deleted after 24 hours.
Can I change the metadata after uploading?#
Upload again with the same mint and the same creator: it replaces the stored metadata as long as the mint doesn't exist on chain yet. Once the token is created, its metadata is final. An upload for a mint that another creator already used is INVALID_PARAMS. To change anything after launch, create the token with a fresh mint.
How do I read a token's metadata?#
The uri serves the token's Metaplex JSON (Cache-Control: public, max-age=300):
curl https://api.layerhop.com/v1/launch/metadata/5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG.json{
"name": "Doge Hop",
"symbol": "DHOP",
"description": "The dog that hops chains.",
"image": "https://api.layerhop.com/v1/launch/metadata/5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG/image",
"external_url": "https://dogehop.example",
"extensions": { "website": "https://dogehop.example" },
"createdOn": "https://app.layerhop.com"
}GET /v1/launch/metadata/{mint}/image returns the image bytes with their content type (Cache-Control: public, max-age=86400). An unknown or hidden mint is NOT_FOUND on both. These two routes are outside the usual rate limit; each IP can make 600 requests per minute to them (RATE_LIMITED after that).
How do I list launched tokens?#
GET /v1/launch/metadata?mints=<mint>,<mint>,… returns the stored metadata of up to 100 mints, in the order you asked, with the image URL instead of the bytes. Unknown and hidden mints are left out:
curl "https://api.layerhop.com/v1/launch/metadata?mints=5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG"{
"data": [
{
"mint": "5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG",
"creator": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
"name": "Doge Hop",
"symbol": "DHOP",
"description": "The dog that hops chains.",
"image": "https://api.layerhop.com/v1/launch/metadata/5ZWj7a1f8tWkjBESHKgrLmXshuXxqeY9SYcfbshpAqPG/image",
"website": "https://dogehop.example",
"twitter": null,
"telegram": null,
"createdAt": "2026-10-25T12:00:00.000Z"
}
]
}A self-hosted API without a database answers NOT_FOUND for uploads and single tokens, and an empty list. Every field is in the API reference.
Last updated