API

Last updated January 31, 2026

The Genesis API allows aggregators and applications to query launch data from Genesis token launches. Use these endpoints to display launch information, token metadata, and social links in your application.

What You'll Learn

This reference covers:

  • Available endpoints and their use cases
  • Request/response formats with examples
  • TypeScript and Rust type definitions
  • Error handling

Summary

The Genesis API provides read-only access to launch data. Query by genesis address or token mint.

  • Public API with rate limits (no authentication)
  • Returns launch info, token metadata, and social links
  • TypeScript and Rust types provided
  • Standard REST error codes

The API is public with rate limits. No authentication is required.

Base URL

https://api.metaplex.com/v1

Use Cases

  • /launches/{genesis_pubkey} - Use when you have a genesis address, such as from an on-chain event or transaction log.
  • /tokens/{mint} - Use when you only know the token mint address. Returns all launches associated with that token (a token can have multiple launch campaigns).

Endpoints

Get Launch by Genesis Address

GET /launches/{genesis_pubkey}

Example Request:

GET https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN

Response:

{
"data": {
"launch": {
"launchPage": "https://example.com/launch/mytoken",
"type": "launchpool",
"genesisAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
},
"baseToken": {
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"name": "My Token",
"symbol": "MTK",
"image": "https://example.com/token-image.png",
"description": "A community-driven token for the example ecosystem."
},
"website": "https://example.com",
"socials": {
"x": "https://x.com/mytoken",
"telegram": "https://t.me/mytoken",
"discord": "https://discord.gg/mytoken"
}
}
}

Get Launches by Token Mint

GET /tokens/{mint}

Returns all launches for a token. The response is identical except launches is an array.

Response:

{
"data": {
"launches": [
{
"launchPage": "https://example.com/launch/mytoken",
"type": "launchpool",
"genesisAddress": "7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
}
],
"baseToken": {
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"name": "My Token",
"symbol": "MTK",
"image": "https://example.com/token-image.png",
"description": "A community-driven token for the example ecosystem."
},
"website": "https://example.com",
"socials": {
"x": "https://x.com/mytoken",
"telegram": "https://t.me/mytoken",
"discord": "https://discord.gg/mytoken"
}
}
}

Finding genesis pubkeys requires indexing or getProgramAccounts. If you only have a token mint, use the /tokens endpoint instead.

Errors

{
"error": {
"code": 404,
"message": "Launch not found"
}
}
CodeDescription
400Bad request - invalid parameters
404Launch or token not found
429Rate limit exceeded
500Internal server error

TypeScript Types

interface Launch {
launchPage: string;
type: string;
genesisAddress: string;
}
interface BaseToken {
address: string;
name: string;
symbol: string;
image: string;
description: string;
}
interface Socials {
x: string;
telegram: string;
discord: string;
}
interface LaunchResponse {
data: {
launch: Launch;
baseToken: BaseToken;
website: string;
socials: Socials;
};
}
interface TokenResponse {
data: {
launches: Launch[];
baseToken: BaseToken;
website: string;
socials: Socials;
};
}
interface ErrorResponse {
error: {
code: number;
message: string;
};
}

Example:

const response = await fetch(
"https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
);
const { data }: LaunchResponse = await response.json();
console.log(data.baseToken.name); // "My Token"

Rust Types

use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Launch {
pub launch_page: String,
#[serde(rename = "type")]
pub launch_type: String,
pub genesis_address: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BaseToken {
pub address: String,
pub name: String,
pub symbol: String,
pub image: String,
pub description: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Socials {
pub x: String,
pub telegram: String,
pub discord: String,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LaunchData {
pub launch: Launch,
pub base_token: BaseToken,
pub website: String,
pub socials: Socials,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TokenData {
pub launches: Vec<Launch>,
pub base_token: BaseToken,
pub website: String,
pub socials: Socials,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LaunchResponse {
pub data: LaunchData,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct TokenResponse {
pub data: TokenData,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ApiError {
pub code: u16,
pub message: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ErrorResponse {
pub error: ApiError,
}

Example:

let response: LaunchResponse = reqwest::get(
"https://api.metaplex.com/v1/launches/7nE9GvcwsqzYcPUYfm5gxzCKfmPqi68FM7gPaSfG6EQN"
)
.await?
.json()
.await?;
println!("{}", response.data.base_token.name); // "My Token"

Add these dependencies to your Cargo.toml:

[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }

FAQ

Is authentication required?

No. The Genesis API is public with rate limits. No API key or authentication is needed.

Which endpoint should I use if I only have a token mint?

Use /tokens/{mint} to get all launches for a token. Use /launches/{genesis_pubkey} if you have the genesis address.

What are the rate limits?

Rate limits apply to prevent abuse. If you receive a 429 response, reduce your request frequency.

Can a token have multiple launches?

Yes. The /tokens endpoint returns an array of launches because tokens can have multiple campaigns (using different genesisIndex values).

Glossary

TermDefinition
Genesis AddressThe PDA identifying a specific launch campaign
Base TokenThe token being launched
Launch PageThe URL where users can participate in the launch
Launch TypeThe mechanism used (launchpool, presale, auction)
SocialsSocial media links associated with the token

Next Steps